PDA

Просмотр полной версии : ПЛК100 и МУ110-224.6у



CodeRed
08.06.2015, 16:36
Здравствуйте!
Недавно стал осваивать контроллеры ПЛК и подключаемые к нему модули и столкнулся с некоторыми трудностями.

Никак не могу понять как передать значение по ModBus-RTU модулю аналогового вывода.
В конфигурациях ПЛК добавил ModBus(Master), установил необходимые настройки: собственный адрес -16, скорость - 9600, подключение по RTU и т.д.
На Universal ModBus modul установил значение регистра 0 (хочу передать на первый выход значение), write multiple register (0x10), для записи, но ничего в итоге не выходит.

использовал код из примера:

PROGRAM PLC_PRG (*PLC100RL core 2-03 target 2-02-4*)
(*пример опроса МУ110-6U по протоколу modbus RTU*)
VAR

o0: REAL;
o3: REAL;
o5: REAL;
END_VAR


(*работа с отдельным выходом *)

out0:=REAL_TO_WORD(o0*1000);
out3:=REAL_TO_WORD(o3*1000);
out5:=REAL_TO_WORD(o5*1000);

как я понял, тут идёт опрос данных выходов. а как осуществить запись по этим выходам?

В итоге я хочу получить на выходе 5В. Что же мне нужно для этого сделать?

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

_Mikhail
08.06.2015, 16:50
Функцией write multiple register (0x10) ты записываешь переменную в регистр.
В регистр выхода подается переменная в диапазоне 0-1000.
0 соответствует 0В, 1000 соответсвует 10В, т.е. что бы тебе получить 5В тебе нужно записать 500 в нужный регистр.

CodeRed
08.06.2015, 16:58
Функцией write multiple register (0x10) ты записываешь переменную в регистр.
В регистр выхода подается переменная в диапазоне 0-1000.
0 соответствует 0В, 1000 соответсвует 10В, т.е. что бы тебе получить 5В тебе нужно записать 500 в нужный регистр.

Да это то я понял...я пытался всё это сделать...но на выходах 0. И лампочка связи не моргает.

_Mikhail
08.06.2015, 17:06
Выложи скрин, где будет видно настройки или проект

CodeRed
08.06.2015, 18:16
Вот мой проект. Контроллер именно ПЛК100Р.М. и подключаем к нему МУ110-6у. Адрес остался заводской - 16, скорость поменял на 9600 и ModBus-RTU в конфигураторе для МУ110.

CodeRed
08.06.2015, 18:18
Проект примера выложить?

жекон
08.06.2015, 20:36
А модуль после изменений перегружали?

CodeRed
08.06.2015, 21:53
А модуль после изменений перегружали?

Перезагружал после изменений чего? После изменений настроек связи в конфигураторе перезагружал.

Валенок
08.06.2015, 22:47
А как представляешь себе действие by value change ?

CodeRed
08.06.2015, 23:44
А как представляешь себе действие by value change ?
Я понимаю это как передача пока значение изменяется...думаю так. Я не совсем понимаю что тут нужно поставить...я брал просто из примера с сайта ОВЕН к CodeSys2. Там именно такой опрос.Смею предположить что стоить выбрать опрос по времени - By poll time, ибо команды я никакие не посылаю, и опрос обоих входов/выходов как я понял - both тоже здесь не уместен.

_Mikhail
09.06.2015, 08:00
С by value change все нормально - выходная переменная будет держать значение, пока в программе она не примет другое значение ( данная функция применяется во всех выходных модулях ОВЕН).
Кофигурация контроллера в твоей программе создана нормально. Добейся сначала обмена по Modbus. Проверь конфигурацию модуля и правильность соединения.
Затем в программе вместо своего кода просто задай out0:=500; У тебя модуль должен выдать 5В.
Далее:
Твой код out0:=REAL_TO_WORD(o0*1000); я бы изменил. У тебя получается, что для выдачи 10В нужно подать в переменную о0 всего лишь единицу.
При использовании ПИД-регуляторов они выдают требуемое значение от 0 до 100%, поэтому код будет выглядеть out0:=REAL_TO_WORD(o0*10);

CodeRed
09.06.2015, 09:57
Большое вам спасибо...разобрался)))