smile-dimon писал(а):да,это я не внимателен,2#100 это моя ошибка.Все биты идут по первому (102) регистру,вернее сказать на 001 регистре есть три состояния- 00100-сост.прибора,00101-первый порог и 00102-второй порог.До решетки это локальные модбас адреса приборов 1-14.
Попробую перефразировать:В определенный момент времени, по задумке, оператор должен выполнить ТО приборов. При ТО естественно должно произойти срабатывание порогов,т.е. при сработке 2го порога всех приборов у оператора появляется кнопка с откладыванием ТО приборов на определенное время,до следующего периода.Если я там прописываю 'else',то кнопка появляется и снова пропадает.А мне необходимо что бы оператор провел ТО всем приборам и нажал кнопку,при этом дата следующего ТО сдвинулась. Кроме того некоторые приборы могут отсутствовать,в ремонте или неисправны.
Как то так,вроде описал.
Еще мне нужно как то отойти от жесткой привязки к дате,вернее к числам/цифрам,раньше это выглядело так:
- Код: Выделить всё
- short year, month, TO=20
GetData(month, "Local HMI", LW, 9021, 1)
GetData(year, "Local HMI", LW, 9022, 1)
if (year >= 2024) and (month >= 02) then
SetData(TO, "Local HMI", LW, 0, 1)
end if
тем самым вызывалось окно прохождения ТО,но дату уже не сменишь...после плясок с бубном получилось ее заменить на переменные,но необходимо их вводить в определенных ячейках(RW-21 и RW-22),но у оператора туда доступа не должно быть.И после записи значений year+1 и month+1 необходимо перегружать панель,что бы это окно снова не выскакивало....-сложнААА
Кроме того при при смене прошивки эти ячейки остаются пустые,т.е. окно сразу же появляется и его ни чем не обойти.Приходится для себя делать запасный ход,но это становится не актуально если программу менять удаленно...или необходимо подымать VNC сервер,и с помощью клиента уже донастраивать.
На это задействовано 4 макроса.Как это упростить?