Контроль состояния ячейки памяти (coil input) PLC контроллера через MODBUS TCP
Задача
Мне нужно контролировать состояние трех PLC контроллеров с MODBUS TCP и формировать сигнал в любой форме, если состояние одной из ячеек памяти (coil input) меняется из 0 в 1, и наоборот.
С чего начать
Поскольку имеется 3 устройства вам нужно создать 3 одинаковых конфигурации, использую кнопку с зеленым плюсом в главном окне программы. Эти конфигурации будут различаться только IP адресом контроллера, и может быть адресом ячейки памяти. Если достаточно одного типа сигнала для всех контроллеров и у всех контроллеров адрес ячейки памяти одинаков, то вы можете создаться только одну конфигурацию и указать 3 IP адреса в ней.
Настройка соединения с устройствами
Скорее всего, компьютер должен сам инициировать подключение к устройству. В этом случае вы должны настроить режим TCP клиента в логгере.

Выбор модулей

Обратите внимание на порядок выбранных модулей фильтрации данных.

Как это работает:
- Модуль запроса данных формирует и отправляет запрос MODBUS к устройству.
- Парсер анализирует получаемый ответ от устройства и разбирает его на переменные VALUE1 и VALUE2, а затем передает эти переменные в модули фильтрации данных.
- Модуль фильтрации данных "Script Execute" первыми анализирует значения переменных или сравнивает их с предыдущими значениями (если ранее было получено какое-либо значение). Если значение переменной изменилось, то модуль добавляет к списку переменных новую переменную "ALARM", которая отражает изменение состояние сигнала.
- Модуль "Events generator" получает данные после модуля "Script Execute" и ждет момента, когда появится переменная "ALARM" и генерирует два внутренних события "ALARM1" или "ALARM2", в зависимости о состояния переменной "ALARM".
- Модуль "Events notification" на закладке "Обработка событий" выполняет действия, указанные для соответствующего события (например, проигрывает звук или показывает сообщение).
Настройка параметров запроса MODBUS
Кликните "Настроить" рядом со списком "Модуль запроса данных" и добавьте новый запрос с помощью меню "Действие –> Добавить запрос". Установите параметры запроса как показано на рисунке ниже. Измените адрес устройства и адрес ячейки памяти.

Скрипт обработки данных
Выберите модуль "Script Execute" из списка и кликните "Настроить" под списком модулей. Вы должны скопировать скрипт, приведенный ниже в редактор скрипта.

Текст скрипта:
const max_values = 2; var values:array [1..max_values] of string; data_source_name: string = 'DATA_SOURCE_NAME'; data_source, store_name: string; i: integer; v_old, v_new: boolean; begin values[1] := 'VALUE1'; values[2] := 'VALUE2'; if IsVariableDefined(data_source_name) then data_source := GetVariable(data_source_name) else data_source := '?'; for i:=1 to max_values do begin if IsVariableDefined(values[i]) then v_new := GetVariable(values[i]) else v_new := false; store_name := data_source+'-'+values[i]; if IsVariableStored(store_name) then // retrieves a stored variable begin v_old := PopVariable(store_name); if v_old<>v_new then begin SetVariable('PLACE', store_name); if v_new then SetVariable('ALARM', '1') else SetVariable('ALARM', '2') end; end; PushVariable(store_name, v_new); end; end.
Генерация событий

Настройка обработчиков событий
Откройте настройки модуля "Events notification". В появившемся окне кликните на кнопке "Добавить обработчик" и укажите идентификатор события и его описание. Вы должны добавить два обработчика для двух событий: ALARM1 и ALARM2.

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

Готовую для использования конфигурацию вы можете скачать по этой ссылке и загрузить в программу, используя меню "Файл" в главном окне программы.
Связанные статьи: Контроль состояния ячейки памяти (coil input) PLC контроллера через MODBUS TCP
MODBUS RTU, MODBUS ASCII, MODBUS/TCP
- Чтение данных со счетчиков и анализаторов энергии через MODBUS (простой метод)
- Совместимые с Sunspec анализаторы, инверторы, счетчики MODBUS (простой метод)
- Опрос устройств MODBUS RTU/TCP: Настройка сервера сбора данных
- Как проверить, что программа отправляет запросы и получает ответы?
- Как просматривать значения регистров, а не пакеты MODBUS?
- Как проверить, что программа правильно интерпретирует получаемые ответы?
- Как просматривать значения регистров MODBUS в более наглядной форме (графики, индикаторы и т.п.)?
- Как объединить данные из двух запросов?
- Как правильно организовать опрос большого количества устройств?
- Копирование настроек Simply MODBUS RTU Master наш логгер.
- Копирование настроек из утилиты MODBUS Poll.
- Контроль состояния ячейки памяти (coil input) PLC контроллера через MODBUS TCP
- MODBUS в MSSQL: Запись значений регистров MODBUS раздельные колонки в таблице
- MODBUS в MySQL: Запись данных MODBUS в БД MySQL
- Запись данных MODBUS в другую базу данных SQL
- MODBUS в базу: Запись данных в две разные таблицы.
- MODBUS в базу: Запись данных в две разные БД, делая полную копию данных.
- Sentron PAC 3200: Чтение и запись со счетчика электроэнергии через MODBUS TCP
- Запись данных в устройство MODBUS
- SQL в MODBUS: Отправка значений из базы данных в MODBUS.
- MODBUS TCP ↔ MODBUS RTU: преобразование в реальном времени.
IEC 62056-21
- Чтение данных со счетчиков энергии с интерфейсом IEC 62056-21 Теги: Iskra Emco, Satec, Landis+Gyr.
Advanced Serial Data Logger, связанные темы:
здесьПоследовательный интерфейс RS232 разводка и сигналы Кабели и сигналы Кабели мониторинга данных