Archived
Этот пост заблокирован, редактирование отключено
Программное обеспечениеВопросы по zetFBDРаботаем в отладке и не работаем в рабочем режиме.
Вопросы по системе программирования контроллеров Z400 и Z401
Исходное сообщение:
leszkin, 05.09.2015, 19:35
Работаем в отладке и не работаем в рабочем режиме.
Программа одна и та же. В отладке в устройстве всё происходит как нужно, проливаюсь в рабочем режиме - не срабатывает 1 из счетчиков. Пробовал на нескольких контроллерах. ОЗУ использована на ~13%. Размер программы ~40%.
Моя криворукость или глюк?
Моя криворукость или глюк?
Ответы:
mike, 06.09.2015, 21:05
Работаем в отладке и не работаем в рабочем режиме.
А давайте посмотрим ваш проект.
В проекте выделить счетчик красным прямоугольником (что бы было сразу заметно) и выслать на info@zentec.ru
В проекте выделить счетчик красным прямоугольником (что бы было сразу заметно) и выслать на info@zentec.ru
leszkin, 09.09.2015, 14:53
Работаем в отладке и не работаем в рабочем режиме.
отправил. интерес уже чисто на будущее - т.к. шкафы запрограммировали без данного счетчика.
mike, 10.09.2015, 18:54
Работаем в отладке и не работаем в рабочем режиме.
Проверил программу. Счетчик работает и в симуляторе и в отладке и в контроллере.
mike, 10.09.2015, 19:23
Работаем в отладке и не работаем в рабочем режиме.
Есть пара замечаний по проектированию ПО.
Конструкция, которую вы применили (выделена цветом на снимке 001) может выглядеть значительно проще.
[list type=decimal]
[li]Сигнал "Работа ВВ" имеет тип данных bool. В ZWB нет смысла ставить преобразователи типов по восходящей.[/li]
[li]Блоки математики - многоножки[/li]
[/list]
Поэтому вся конструкция приобретает вид, как на снимке 002
Конструкция, которую вы применили (выделена цветом на снимке 001) может выглядеть значительно проще.
[list type=decimal]
[li]Сигнал "Работа ВВ" имеет тип данных bool. В ZWB нет смысла ставить преобразователи типов по восходящей.[/li]
[li]Блоки математики - многоножки[/li]
[/list]
Поэтому вся конструкция приобретает вид, как на снимке 002
mike, 10.09.2015, 19:33
Работаем в отладке и не работаем в рабочем режиме.
Комбинация на снимке 003 несколько неправильна. Рациональнее сделать так, как на снимке 004.
mike, 10.09.2015, 19:44
Работаем в отладке и не работаем в рабочем режиме.
Конструкция на снимке 005 понятна, но не имеет смысла.
Вы отдаете текущее значение в панель Z033. А панель 033 не понимает минуса. Вы берете модуль числа и преобразователь. Все правильно, но можно сделать чуть более красиво, как на снимке 006.
Вам нужно только отсечь отрицательные значения. С этим прекрасно справляется блок преобразования с дополнительной опцией "установить граничное значение". То есть при появлении отрицательного значения, блок преобразователя установит 0 на своем выходе.
Вы отдаете текущее значение в панель Z033. А панель 033 не понимает минуса. Вы берете модуль числа и преобразователь. Все правильно, но можно сделать чуть более красиво, как на снимке 006.
Вам нужно только отсечь отрицательные значения. С этим прекрасно справляется блок преобразования с дополнительной опцией "установить граничное значение". То есть при появлении отрицательного значения, блок преобразователя установит 0 на своем выходе.
leszkin, 11.09.2015, 15:14
Работаем в отладке и не работаем в рабочем режиме.
Михаил про программу очень странно. Пробовал на 3х разных контроллерах. Ну да ладно - проехали...
За примеры спасибо - про отсутствие необходимости делать восходящие преобразования просто не знал и делал как привык в работе с SMH2010.
Про последний пример не соглашусь: Мне именно модуль и нужен был – хоть как то буду отображать температуру наружки. Уж лучше пускай в минус 20 показывает 20, а не 0 ;)
За примеры спасибо - про отсутствие необходимости делать восходящие преобразования просто не знал и делал как привык в работе с SMH2010.
Про последний пример не соглашусь: Мне именно модуль и нужен был – хоть как то буду отображать температуру наружки. Уж лучше пускай в минус 20 показывает 20, а не 0 ;)
mike, 11.09.2015, 16:13
Работаем в отладке и не работаем в рабочем режиме.
[quote author=leszkin link=topic=38.msg251#msg251 date=1441973694]
Михаил про программу очень странно. Пробовал на 3х разных контроллерах. Ну да ладно - проехали...
[/quote]
Может у вас условия какие-то не соблюдаются? Давайте подключимся вместе к отладке и посмотрим.
Михаил про программу очень странно. Пробовал на 3х разных контроллерах. Ну да ладно - проехали...
[/quote]
Может у вас условия какие-то не соблюдаются? Давайте подключимся вместе к отладке и посмотрим.
mike, 11.09.2015, 16:27
Работаем в отладке и не работаем в рабочем режиме.
[quote author=leszkin link=topic=38.msg251#msg251 date=1441973694]
За примеры спасибо - про отсутствие необходимости делать восходящие преобразования просто не знал и делал как привык в работе с SMH2010.
[/quote]
Смотрим документ
http://zentec.ru/dev/docs/d150714/d120213/
Изучаем этот абзац:
[i][b]zetFBD преследует цель достижения однозначности поведения устройства при любых входных данных. Для определенности значений входов, связанных с выходами, имеющими отличный тип данных, имеется требование: тип данных выхода должен быть подмножеством типа данных входа. Если для какой-либо связи это требование является ненужным или недостижимым – пользователь должен вставить блок «Преобразование данных» в разрыв этой связи. Вход этого блока принимает данные любого типа. Опции этого блока позволяют определить его поведение при наличии значения, не попадающего во множество значений требуемого типа данных. Блоки, значения выходов у которых могут выходить за диапазон значений типа данных (переполнение при математических операциях), имеют опции, определяющие их поведение.[/b][/i]
И в этом эе документе, прям за этим абзацем есть картинка. Прилагаю ее сюда.
За примеры спасибо - про отсутствие необходимости делать восходящие преобразования просто не знал и делал как привык в работе с SMH2010.
[/quote]
Смотрим документ
http://zentec.ru/dev/docs/d150714/d120213/
Изучаем этот абзац:
[i][b]zetFBD преследует цель достижения однозначности поведения устройства при любых входных данных. Для определенности значений входов, связанных с выходами, имеющими отличный тип данных, имеется требование: тип данных выхода должен быть подмножеством типа данных входа. Если для какой-либо связи это требование является ненужным или недостижимым – пользователь должен вставить блок «Преобразование данных» в разрыв этой связи. Вход этого блока принимает данные любого типа. Опции этого блока позволяют определить его поведение при наличии значения, не попадающего во множество значений требуемого типа данных. Блоки, значения выходов у которых могут выходить за диапазон значений типа данных (переполнение при математических операциях), имеют опции, определяющие их поведение.[/b][/i]
И в этом эе документе, прям за этим абзацем есть картинка. Прилагаю ее сюда.
mike, 11.09.2015, 16:28
Работаем в отладке и не работаем в рабочем режиме.
[quote author=leszkin link=topic=38.msg251#msg251 date=1441973694]
Про последний пример не соглашусь: Мне именно модуль и нужен был – хоть как то буду отображать температуру наружки. Уж лучше пускай в минус 20 показывает 20, а не 0 ;)
[/quote]
Хитрюга какой!
Про последний пример не соглашусь: Мне именно модуль и нужен был – хоть как то буду отображать температуру наружки. Уж лучше пускай в минус 20 показывает 20, а не 0 ;)
[/quote]
Хитрюга какой!