Не пинайте тапком, если решил задачу не оптимальным способом, но у меня все заработало.
Итак, для возможности одновременного задания уставки с ПР200, СП3ХХ и OwenCloud (или/и например со SCADA) нужно в панели оператора СП3ХХ:
1. Создать скрипт и вызывать его функциональной областью по событию "После включения панели" (режим - последовательный) :
2. Создать скрипт и вызывать его функциональной областью в цикле каждые, например, 2 секунды, режим вызова скрипта - последовательный:Код:WORD Value1=0; WORD Value2=0; Value1=PSW[531]; PSW[531]!=0 ? Write(PLC, 1, MODBUS_RTU_REG_4X, 531, 0, TYPE_WORD, Value1): Read(PLC, 1, MODBUS_RTU_REG_4X, 531, 0, TYPE_WORD, &PSW[531]); Value2=PSW[514]; PSW[514]!=0 ? Write(PLC, 1, MODBUS_RTU_REG_4X, 514, 0, TYPE_WORD, Value2): Read(PLC, 1, MODBUS_RTU_REG_4X, 514, 0, TYPE_WORD, &PSW[514]);
// Комментарии:Код:WORD Value1=0; WORD Value2=0; Value1=PSW[531]; Value2=PSW[514]; Read(PLC, 1, MODBUS_RTU_REG_4X, 531, 0, TYPE_WORD, &PSW[600]); if (PSW[600]!=PSW[601]) {PSW[531]=PSW[600];} PSW[531]!=PSW[600] ? Write(PLC, 1, MODBUS_RTU_REG_4X, 531, 0, TYPE_WORD, Value1) : Read(PLC, 1, MODBUS_RTU_REG_4X, 531, 0, TYPE_WORD, &PSW[601]); Read(PLC, 1, MODBUS_RTU_REG_4X, 514, 0, TYPE_WORD, &PSW[602]); if (PSW[602]!=PSW[603]) {PSW[514]=PSW[602];} PSW[514]!=PSW[602] ? Write(PLC, 1, MODBUS_RTU_REG_4X, 514, 0, TYPE_WORD, Value2) : Read(PLC, 1, MODBUS_RTU_REG_4X, 514, 0, TYPE_WORD, &PSW[603]);
// Регистры PSW[601], PSW[603] - буферные значения изменяемых уставок, при предыдущем опросе
// Регистры PSW[600], PSW[602] - буферные значения изменяемых уставок, при текущем опросе
3. В этой же функциональной области добавить функцию "Копирование группы регистров" (в моем случае 60 шт. с ) как на картинке:
изображение_2022-02-12_133914.png
Соответственно скрипт написан для возможности изменения регистров 514 и 531 в ПР200, на котором реализована вся логика работы основной программы.




Ответить с цитированием