Почему то не работает
Screenshot_11.png
команда Read Holding Register, контроллер ПЛК110
Почему то не работает
Screenshot_11.png
команда Read Holding Register, контроллер ПЛК110
Делаю так:
IF q_MbReadCmd=16#00 THEN
q_MbReadCmd:=16#FF;
ELSE
q_MbReadCmd:=16#00;
END_IF;
Делал и в ручном режиме - в Last Addr и Last Err стоит "0"
Инженер по продуктам «ПЛК и модули»
e-mail: i.masterenko@owen.ru | skype: i.masterenko_owen
Спасибо. Работает. Единственный момент - в A69_RdCmd нужно записывать 0xFF два раза, как следует из руководства пользователя Овен ПЛК 110 М02. Т.е. для постоянного опроса работает следующая конструкция:
IF A69_RdCmd =16#00 THEN
A69_RdCmd :=16#FF;
ELSE
A69_RdCmd :=16#00;
END_IF;
Screenshot_12.png
Подскажите пожалуйста будет работать следующая конструкция? В UMD WORK MODE стоит BY POLL TIME. В нем добавлен REAL OUTPUT MODULE STATE. Мне нужно, что бы модуль опрашивался постоянно, а вот значение одного регистра записывалось только по нажатию кнопки. В коде нажатия кнопки будет прописано:
IF prob<>etalon_ud8 THEN
tarir1:=etalon_ud8;
command1:=50700;
IF write1=16#00 THEN
write1 :=16#FF;
ELSE
write1 :=16#00;
END_IF;
END_IF;
пример.png
Последний раз редактировалось 31nick; 28.07.2018 в 00:47.
Нет, такая конструкция работать не будет.
Добавьте 2 UMD:
1 - режим By Poll Time - регистры на чтения,
2 - режим By value Change - регистры на запись.
By value Change - однократно генерирует запрос устройству, когда новое значение не равно предыдущему.
Пример
_examplePLC110_30 v2.pro
Инженер по продуктам «ПЛК и модули»
e-mail: i.masterenko@owen.ru | skype: i.masterenko_owen
Спасибо за ответ. Вариант как предлагаете Вы, реализовал вчера. Но на форуме наткнулся на подобную тему http://www.owen.ru/forum/showthread.php?t=2060 из нее понял, что нужно писать FF и FE не в цикле, а единично только при необходимости старта (FF) и остановки (FE) обмена. И все заработало, как я изначально хотел. пример.png
Пример кода:
IF tar1_ud8=1 THEN
IF T_tarir.Q=0 AND T_tarir.ET=T#0S THEN
tarir1:=etalon1_ud8;
cmd_tarir1:=255;
command1:=50700;
T_tarir(IN:=1,PT:=T#5S);
END_IF;
IF T_tarir.Q=0 AND T_tarir.ET=T#5S THEN
cmd_tarir1:=254;
command1:=43948;
END_IF;
IF err_modul1=1 THEN
command1:=0;
T_tarir.IN:=0;
tar1_ud8:=0;
END_IF;
END_IF;
Последний раз редактировалось 31nick; 31.07.2018 в 08:54.