Контроль состояния ячейки памяти (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.
Добавленные обработчики появятся в списке слева. Выберите добавленный обработчик в дереве и настройте действия, которые будут выполняться при возникновении события. Вы можете настроить индивидуальные параметры для каждого обработчика.
Готовую для использования конфигурацию вы можете скачать по этой ссылке и загрузить в программу, используя меню "Файл" в главном окне программы.