Archived

Этот пост заблокирован, редактирование отключено

Программное обеспечениеВопросы по zetFBDРаботаем в отладке и не работаем в рабочем режиме.

Вопросы по системе программирования контроллеров Z400 и Z401
Исходное сообщение:
leszkin, 05.09.2015, 19:35
leszkin
Работаем в отладке и не работаем в рабочем режиме.
Программа одна и та же. В отладке в устройстве всё происходит как нужно, проливаюсь в рабочем режиме - не срабатывает 1 из счетчиков. Пробовал на нескольких контроллерах. ОЗУ использована на ~13%. Размер программы ~40%.
Моя криворукость или глюк?
Ответы:
mike, 06.09.2015, 21:05
mike
Работаем в отладке и не работаем в рабочем режиме.
А давайте посмотрим ваш проект.
В проекте выделить счетчик красным прямоугольником (что бы было сразу заметно) и выслать на info@zentec.ru
leszkin, 09.09.2015, 14:53
leszkin
Работаем в отладке и не работаем в рабочем режиме.
отправил. интерес уже чисто на будущее - т.к. шкафы запрограммировали без данного счетчика.
mike, 10.09.2015, 18:54
mike
Работаем в отладке и не работаем в рабочем режиме.
Проверил программу. Счетчик работает и в симуляторе и в отладке и в контроллере.
mike, 10.09.2015, 19:23
mike
Работаем в отладке и не работаем в рабочем режиме.
Есть пара замечаний по проектированию ПО.
Конструкция, которую вы применили (выделена цветом на снимке 001) может выглядеть значительно проще.
[list type=decimal]
[li]Сигнал "Работа ВВ" имеет тип данных bool. В ZWB нет смысла ставить преобразователи типов по восходящей.[/li]
[li]Блоки математики - многоножки[/li]
[/list]
Поэтому вся конструкция приобретает вид, как на снимке 002
mike, 10.09.2015, 19:33
mike
Работаем в отладке и не работаем в рабочем режиме.
Комбинация на снимке 003 несколько неправильна. Рациональнее сделать так, как на снимке 004.
mike, 10.09.2015, 19:44
mike
Работаем в отладке и не работаем в рабочем режиме.
Конструкция на снимке 005 понятна, но не имеет смысла.
Вы отдаете текущее значение в панель Z033. А панель 033 не понимает минуса. Вы берете модуль числа и преобразователь. Все правильно, но можно сделать чуть более красиво, как на снимке 006.
Вам нужно только отсечь отрицательные значения. С этим прекрасно справляется блок преобразования с дополнительной опцией "установить граничное значение". То есть при появлении отрицательного значения, блок преобразователя установит 0 на своем выходе.
leszkin, 11.09.2015, 15:14
leszkin
Работаем в отладке и не работаем в рабочем режиме.
Михаил про программу очень странно. Пробовал на 3х разных контроллерах. Ну да ладно - проехали...

За примеры спасибо - про отсутствие необходимости делать восходящие преобразования просто не знал и делал как привык в работе с SMH2010.

Про последний пример не соглашусь:  Мне именно модуль и нужен был – хоть как то буду отображать температуру наружки.  Уж лучше пускай в минус 20 показывает 20, а не 0 ;)
mike, 11.09.2015, 16:13
mike
Работаем в отладке и не работаем в рабочем режиме.
[quote author=leszkin link=topic=38.msg251#msg251 date=1441973694]
Михаил про программу очень странно. Пробовал на 3х разных контроллерах. Ну да ладно - проехали...
[/quote]
Может у вас условия какие-то не соблюдаются? Давайте подключимся вместе к отладке и посмотрим.
mike, 11.09.2015, 16:27
mike
Работаем в отладке и не работаем в рабочем режиме.
[quote author=leszkin link=topic=38.msg251#msg251 date=1441973694]
За примеры спасибо - про отсутствие необходимости делать восходящие преобразования просто не знал и делал как привык в работе с SMH2010.
[/quote]

Смотрим документ
http://zentec.ru/dev/docs/d150714/d120213/
Изучаем этот абзац:
[i][b]zetFBD преследует цель достижения однозначности поведения устройства при любых входных данных. Для определенности значений входов, связанных с выходами, имеющими отличный тип данных, имеется требование: тип данных выхода должен быть подмножеством типа данных входа. Если для какой-либо связи это требование является ненужным или недостижимым – пользователь должен вставить блок «Преобразование данных» в разрыв этой связи. Вход этого блока принимает данные любого типа. Опции этого блока позволяют определить его поведение при наличии значения, не попадающего во множество значений требуемого типа данных. Блоки, значения выходов у которых могут выходить за диапазон значений типа данных (переполнение при математических операциях), имеют опции, определяющие их поведение.[/b][/i]

И в этом эе документе, прям за этим абзацем есть картинка. Прилагаю ее сюда.
mike, 11.09.2015, 16:28
mike
Работаем в отладке и не работаем в рабочем режиме.
[quote author=leszkin link=topic=38.msg251#msg251 date=1441973694]
Про последний пример не соглашусь:  Мне именно модуль и нужен был – хоть как то буду отображать температуру наружки.  Уж лучше пускай в минус 20 показывает 20, а не 0 ;)
[/quote]

Хитрюга какой!