PDA

Просмотр полной версии : Чтение и запись в Universal Modbus device



super100
18.10.2013, 09:21
Необходимо в программе для ПЛК100 выполнять чтение трёх регистров и запись одной уставки для регулятора ОВЕН ТРМ32. Смотрел аналогичный пример на форуме для PLC154+TRM202. В этом примере в настройках параметров модуля параметр Work mode - By poll time. Для чтения - я согласен By poll time можно и нужно использовать. Но разве можно по By poll time производить запись в ПЗУ прибора ? Мне подсказывали в техподдержке что для записи в регистр необходимо параметр Work mode выбирать - By value change (по изменению значения). Но как задать для регистра уставки параметр By value change, а для остальных By poll time? Одним словом как настроить корректно чтение/запись в в Universal Modbus device (ТРМ32). Уставка меняется из Master Scada через OPC.

capzap
18.10.2013, 09:30
а зачем думаете существуют бибки модбас

super100
18.10.2013, 09:36
Если я Вас правильно понял, то эта проблема решается только через библиотеки и никак больше?

capzap
18.10.2013, 10:16
попробуйте такой вариант, если не пойдет значит через бибки

melky
18.10.2013, 10:30
А разве проблема создать два Universal Modbus device устройства с одним адресом и в одном настроить только регистры чтения, а в другом только регистр записи ? разве запрещено ?

super100
18.10.2013, 11:09
А разве проблема создать два Universal Modbus device устройства с одним адресом и в одном настроить только регистры чтения, а в другом только регистр записи ? разве запрещено ?Именно это и предложил попробовать capzap. Спасибо ! Если сегодня успею попробовать, то обязательно отпишусь.

lara197a
18.10.2013, 11:53
Там и пробовать нечего. Все будет работать, на скорость не влияет.

Мамонов Михаил
20.10.2013, 23:50
По работе с ТР32 есть тонкость - как только ПЛК начинает опрашивать настроечные регистры ТРМ (пробовал на U-01..U-04) - ТРМ на самом себе не дает ничего менять! Поставил опрос регистров By poll time с периодом 1000 ms - жму на ТРМ кнопку "Прог", а каждую секунду переключается U-01, U-02 и т.д. Руками нажать ничего не успеваешь, как оно опять переключилось..
Как бы это побороть, желательно все-таки без использования библиотек?

melky
21.10.2013, 10:35
Мамонов Михаил если нет панели, приходит на ум только использование button для переключения управления с ПЛК (опрос) на ТР32...
если есть панель, один из экранов можно приспособить.

Мамонов Михаил
21.10.2013, 11:02
Тоже так думал - с панели переключать. Но как то это некрасиво.. Да и забывать будут после наладки обратно на опрос скадой переключать.

Мамонов Михаил
21.10.2013, 11:34
Еще вопрос - как грамотно сделать запись в ТРМ? Мне надо писать 8 регистров, делаю запись By Command. По каждой команде ПЛК записывает 1 регистр. Как мне узнать, что регистр уже записался, и подать команду на запись следующего? И вообще, как узнать, что запись прошла успешно? Смотреть ошибку в ModbusMaster не получится, т.к. одновременно из ТРМ читаются датчики By poll time, и естественно, при этом затирается ошибка, т.к. адрес устройства один и тот же.
Да, организовал я это как два Universal Modbus Device с адресом 16, одно читает датчики, другое пишет регистры настроек.

super100
21.10.2013, 11:53
А если во время опроса ТРМ32 физически отключить на некоторое время RS485, а потом восстановить соединение? Опрос будет дальше в нормальном режиме продолжаться или потребуется перезагрузка ПЛК ? Не пробовали?

Мамонов Михаил
21.10.2013, 14:24
Проверил. Опрос сам восстанавливается нормально. Но при этом я теряю опрос значений датчиков, которые у меня постоянно пишутся в архив в скаде - а это не хорошо, получаются провалы на графиках.

super100
21.10.2013, 15:20
Я на этой неделе тоже начинаю заниматься наладкой. Наконец получил новые ТРМ32Щ7ТС.RS. Если что, готов к общению. У меня Master Scada и Modbus Master OPC сервер. Буду пробовать подключать через локалку по Ethernet.

Мамонов Михаил
21.10.2013, 17:33
У меня вариант TRM32-Щ7.ТС.RS -> ПЛК100 -> Lectus OPC/DDE Server -> MasterScada работает нормально в режиме чтения датчиков, связь между ПЛК и ПК по Ethernet, даже можно и через интернет, если провайдер выделит ПЛК статический IP. Это уже работает на многих объектах. Просто раньше не было задачи из скады менять настройки в ТРМ.

Smith2007
27.10.2013, 11:47
Не буду плодить темы, мой вопрос в чем-то схож...
Задача:
С ПЛК необходимо считывать параметры различных типов (bool, int, real).
Каждый тип требует различного кол-ва байт.
Создаем Modbus slave и в нем создаем отдельные переменные с соответствующими типами. Понял, что могу встретиться с проблемой выравнивания адресного пространства.

Вопрос:
Что если под каждый тип данных (bool, int, real) я создам отдельный modbus slave? В этом случае несколько проще будет с адресацией.
При этом сделать 3 слейва на чтение и 3 на запись.
Можно ли так сделать? Или это будет "нехорошим тоном"?

Amko
27.10.2013, 12:02
То есть ПЛК будет играть роль 6 слейвов одновременно? :) Имхо это не то, что нехороший тон, это не заработает :)

Sergey666
27.10.2013, 12:21
Не буду плодить темы, мой вопрос в чем-то схож...
Задача:
С ПЛК необходимо считывать параметры различных типов (bool, int, real).
Каждый тип требует различного кол-ва байт.
Создаем Modbus slave и в нем создаем отдельные переменные с соответствующими типами. Понял, что могу встретиться с проблемой выравнивания адресного пространства.

Вопрос:
Что если под каждый тип данных (bool, int, real) я создам отдельный modbus slave? В этом случае несколько проще будет с адресацией.
При этом сделать 3 слейва на чтение и 3 на запись.
Можно ли так сделать? Или это будет "нехорошим тоном"?

Сколько можно!!!
К ПЛК идет диск с документацией , и там есть документ - "Решение проблемы выравнивания".Что ? для России чтение документации совсем неактуально???
Модбас изначально работает с регистрами 16 бит !!! 16 бит это INT,WORD .
Адресация регистров в модбасе с 0 . Поэтому для бит и 16 бит переменных создается 2байт слово , 4 х байтные (Реал , Дабл ворд) помещаются в КОНЕЦ блока 2х байтных регистров ПОСЛЕ ЧЕТНОГО!!!!!!! ворда .

Командой чтение-запись бита можно прочитать - записать ЛЮБОЙ БИТ в ЛЮБОМ слове модбас слэйва , при записи , естественно изменится значение соотв.регистра.

petera
27.10.2013, 12:52
То есть ПЛК будет играть роль 6 слейвов одновременно? :) Имхо это не то, что нехороший тон, это не заработает :)
Еще как заработает.
Главное, что бы адрес каждого слейва был свой, уникальный .

Amko
27.10.2013, 12:58
Еще как заработает.
Главное, что бы адрес каждого слейва был свой, уникальный .
Ну здорово, век живи.

Smith2007
30.10.2013, 13:18
Еще вопрос появился.
Допустим имеем 2 ПЛК, которые выполняют различные программы (управляют различными процессами).
Необходимо в ПЛК1 передать некоторые параметры из ПЛК2 и наоборот.
Вопрос: Может ли ПЛК выступать в роли мастера и в роли слейва одновременно (при указнии слейва будут разные порты) Связь между ПЛК по Ethernet (TCP) соответственно.

зы. В вопросе вверху я забыл уточнить, что считывать параметры с ПЛК надо было на компьютер по Ethernet (TCP)