PDA

Просмотр полной версии : Чтение и запись в один и тот же регистр по MODBUS TCP



Simin
10.07.2014, 17:08
Уважаемые форумчане, подскажите пожалуйста!
Есть следующая задача: контроллер PLC-100, с его помощью необходимо читать регистр по MODBUS TCP с устройства и прочитав обнулять его на удаленном устройстве (записывать туда 0).
Организовал с помощью стандартных средств (Universal Modbus Device), завел регистр на чтение, и регистр на запись с таким же адресом.
Проблема в том что данные от чтения не успевают отслеживаться программой, т.к. сразу же перезаписываются нулем.
Подскажите как лучше решить задачу.. По сути нужна запись по требованию, т.е. прочитали регистр, если отличный от нуля, запомнили значение и выдали на запись 0.

Заранее Спасибо!

capzap
10.07.2014, 18:52
http://www.kipshop.ru/CoDeSys/steps/owen_plc-configuration.pdf ищите

Simin
10.07.2014, 21:00
http://www.kipshop.ru/CoDeSys/steps/owen_plc-configuration.pdf ищите

спасибо за ссылку, только ничего не удалось найти по моему вопросу.. наверное стандартными средствами этого сделать нельзя (

Ryzhij
10.07.2014, 21:19
А что, скопировать прочтённое во внутреннюю переменную по условию ненулевого значения прочтённого, а уж потом только отправлять в удалённый регистр ноль, так сложно догадаться?

Simin
10.07.2014, 21:30
А что, скопировать прочтённое во внутреннюю переменную по условию ненулевого значения прочтённого, а уж потом только отправлять в удалённый регистр ноль, так сложно догадаться?

Догадаться не сложно, но дело в том что регистр созданный для записи, отправляется на запись при каждом цикле, независимо от того, пишем что то в него или нет. Таким образом, получается ситуация, когда полученный при чтении регистр тут же перетирается значением регистра на запись, и в программе значение регистра для чтения всегда равно значению регистра для записи, в моем случае=0

capzap
10.07.2014, 22:01
спасибо за ссылку, только ничего не удалось найти по моему вопросу.. наверное стандартными средствами этого сделать нельзя (

Ну не виноват я что в документе либо куда то делось, либо еще какой то казус, тогда добавляете в мастер Universal Modbus Device, в нем открываете вкладку Параметры модуля и ищите пункт work mode и анализируем аргументы в списке, ну и соответственно догадываемся что здесь можно использовать для записи по условию

PS Ищите в документе либо поиском ключевые слова work modeлибо сразу отправляйтесь в описалово протокола DCON 78-79 стр.

Simin
12.07.2014, 21:42
Ну не виноват я что в документе либо куда то делось, либо еще какой то казус, тогда добавляете в мастер Universal Modbus Device, в нем открываете вкладку Параметры модуля и ищите пункт work mode и анализируем аргументы в списке, ну и соответственно догадываемся что здесь можно использовать для записи по условию

PS Ищите в документе либо поиском ключевые слова work modeлибо сразу отправляйтесь в описалово протокола DCON 78-79 стр.


Огромное спасибо, добрый человек!! :)

Simin
14.07.2014, 17:13
Очередная проблема (( . У меня уже есть один Universal Modbus Device. Второй (для записи двух регистров в тот же MODBUS слэйв) почему то не работает. Отключаю первый, начинает работать второй.. видимо нельзя создать два Universal Modbus Device к одному и тому же устройству..

Simin
15.07.2014, 11:00
Все получилось! через выходные регистры с поддержкой Command. Управление выводом оказывается можно организовать не только целым устройством Universal Modbus Device, но и отдельными регистрами.