PDA

Просмотр полной версии : ПЛК110. Как реализовать функцию 0x05 Write Single Coil через конфигуратор



vapik
18.12.2018, 10:59
Здравствуйте, коллеги.
Подскажите, как реализовать функцию 0x05 (Write Single Coil) через конфигуатора в Codesys 2.3 для Modbus Master?
Нигде найти не могу, перебором всех элементов тоже не увидел.

Коськовецкий Владислав
22.12.2018, 12:00
Добрый день!
В ПЛК110 нет возможности записывать биты функцией 0x05 (Write Single Coil) через модуль Modbus Master из Конфигурации ПЛК.

Никола Казанский
29.06.2023, 07:13
Добрый день!
В ПЛК110 нет возможности записывать биты функцией 0x05 (Write Single Coil) через модуль Modbus Master из Конфигурации ПЛК.

А как тогда её реализовать?

Cs-Cs
29.06.2023, 07:33
А как тогда её реализовать?
Использованием библиотеки OWEN Modbus. Она даёт полный функционал. Но тогда весь опрос придётся писать руками в коде, и НЕ использовать конфигурацию для этой части Modbus (в смысле - для всего канала RS-485).

Никола Казанский
01.07.2023, 10:01
А вот еще вопрос.
По тем же койлам.
Считываю состояние койла некоего прибора через Register input module, Read Coil Status (0x01).
Ответ приходит с правильным состоянием- 0 или 1.
При изменении состояния другого койла ответ меняется на произвольный, вплоть до 65381.
Слушаю порт с помощью Advanced Serial Port Monitor, и вижу посылку вида 01 01 02 00 00 10, то есть запрашивает 10 байт с адреса 02 00.
Соответственно, в зависимости от состояния некоего прибора ответ меняется на фигню.
Посылаю из Advanced Serial Port Monitor правильную посылку вида 01 01 02 00 00 01, получаю правильный ответ вне зависимости от состояния некоего прибора.
Как сделать так, чтобы посылка с командой 0х01 формировалась правильно.
Modbus.lib не предлагать, поскольку весь опрос переделывать под него не имеет смысла из-за неправильной реализации этой функции в CodeSys.

Cs-Cs
01.07.2023, 10:19
Так ну нет же в этой среде штатно команды чтения одного Coil. НЕТ.
Тут ПЛК запрашивает какую-то дичь: может 10 Coil подряд, а может что попало.
В Modbus.Lib всё раелизовано правильно: лично делал через него опрос оборудования Carel, которые обожают везде пихать Coil.

Никола Казанский
01.07.2023, 10:27
Могли бы и сделать за столько лет.

P.S.: А у меня Dixell))) Только в связке с МВ110 и им подобным.

Никола Казанский
01.07.2023, 10:30
А можно сделать так, чтобы часть приборов, посадив их на 485-1 читать через Конфигурацию ПЛК, а эти шкатулки с койлами посадить на 485-2 и опрашивать через Modbus.lib?

Cs-Cs
01.07.2023, 10:37
1. Так поддержка CodeSys 2.3 прекращена уже "столько лет". Она осталась хорошей и быстрой системой, но обновляться не будет.
2. Мат следует убрать (подретактируй коммент) - а то забанят в хлам (это у меня на блоге можно вовсю материться, если по делу).
3. У CodeSys 2.3 правило такое: один интерфейс должен опрашиваться чем-то одним. То есть или через библиотеку, или через конфигурацию.
Поэтому, если у тебя там интерфейсов хватает - то разнеси на два. А если не хватает - то тогда придётся всё на библиотеку переписывать.
У меня обычно хватает: всё, что внутри щита, у меня сидит на одном интерфейсе, а всё, что снаружи - на другом.

EFrol
01.07.2023, 12:26
Библиотека UNM позволяет отжать на время у системы порт и спросить все что хочется!!!

Насколько я понял Вы используете Register input module и ставите команду 0x01(чтение массива дискретных выходов),
в которой нельзя указать количество считываемых выходов, поэтому считываются все 16 (0x10) элементов (выходов).
Их значения записываются в объявленную переменную типа WORD побитно справа на лево.
Если нужно значение конкретного бита, попробуйте использовать 8-bit input module (будут считываться 8 выходов за раз),
где дайте имя конкретному биту - получите нужный бит в виде BOOL.

Однако я считываю все выхода сразу в 32-битный модуль, а значения забираю через <имя переменной>.<номер бита>
68561

так быстрее и меньше нагрузка на сеть:cool:

Никола Казанский
01.07.2023, 17:29
Не, фигня получится.
Есть койлы с адресами 512 (on/off), 513 (Keyboard Lock) и 514 (Alarms muting)
При нормальной работе 512 - 1, 513 - 0 и 514 - 0.
При срабатывании койла с адресом 539 (Неисправность датчика 1) 539 - 1, 512 - 1, 513 - 0, 514 - 1, т.е. этот перетрах (не матом же?;) ) непонятно откуда берется.

Буду пробовать через библиотеку

EFrol
01.07.2023, 19:16
По мне так все ясно. Неисправность датчика вызвала Alarm, но все Alarms отключены.

Никола Казанский
01.07.2023, 20:23
Всё бы ничего, но этот койл (Alarms muting) он управляемый (с функцией записи), а по сему должен изменяться только при непосредственной записи в него.
Это также, как и с 512 (on/off)- если читаю "слушалкой", то всё норм, если через Registr input module- то фигня какая-то.

Никола Казанский
01.07.2023, 21:07
Так ну нет же в этой среде штатно команды чтения одного Coil. НЕТ.
Тут ПЛК запрашивает какую-то дичь: может 10 Coil подряд, а может что попало.
В Modbus.Lib всё раелизовано правильно: лично делал через него опрос оборудования Carel, которые обожают везде пихать Coil.

Дружище, с примером не поможешь?
Пожааалуйста.

capzap
01.07.2023, 21:30
Всё бы ничего, но этот койл (Alarms muting) он управляемый (с функцией записи), а по сему должен изменяться только при непосредственной записи в него.
Это также, как и с 512 (on/off)- если читаю "слушалкой", то всё норм, если через Registr input module- то фигня какая-то.

Так если есть слушалка, предоставьте лог обмена запросами между мастером и словом