Записная книжка разработчика

Мои проекты

Обмен данными между контроллерами ICP DAS в программах ISAGraf

| Comments

Рассмотрены способы обмена данными и контроля целостности линии связи.

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

При этом один из ПЛК является ведущим (управляющим), а второй – ведомым (управляемым). Управляемый контроллер реализует локальные регуляторы объекта, получая задания от ведущего контроллера. При этом ключевое значение имеет контроль целостности линии связи, при обрыве линии связи ведомый контроллер должен перевести объект в некоторое заданное «безопасное» состояние. Ниже рассмотрены способы контроля целостности линии при различных способах взаимодействия контроллеров.

Рис. 1. Пример системы из двух контроллеров

Способ 1. Протокол EBus

Протокол Ebus обеспечивает передачу данных по линии Ethernet.

При обмене данными по протоколу EBus один из контроллеров выступает в роли ведущего (master), второй – в роли ведомого (slave). Передача данных ведется пакетами по 8 переменных, за передачу данных отвечают функции ebus_b_w, ebus_n_w, ebus_f_w (булевые, целочисленные и вещественные переменные соответственно), прием данных осуществляется с помощью функций ebus_b_r, ebus_n_r, ebus_f_r. Каждому блоку из 8-и переменных присваивается идентификационный номер.

Для контроля состояния принятого пакета данных служит функция ebus_sts, которая возвращает true, если пакет принят успешно, и false в обратном случае.

На передающей стороне функция ebus_sts всегда возвращает true, то есть для контроля состояния и в ведущем, и в ведомом контроллере нужно, чтобы данные передавались в обе стороны (даже если это будут фиктивные переменные, фактически не используемые в программе).

Пример использования функции ebus_sts показан на рис. 2.

Рис. 2. Пример использования функции ebus_sts. (Нажмите для увеличения)

Величина тайм-аута составляет 2 с и не может быть изменена пользователем. Таким образом, ведомый контроллер узнает о потере связи минимум через 2 с (реальноая величина может быть гораздо больше), что недопустимо во многих приложениях.

 

Способ 2. Протокол FBus

Протокол FBus обеспечивает передачу данных по линии RS-485. Функции, обеспечивающие передачу и прием данных по этому протоколу, аналогичны функциям EBus, но их названия начинаются с fbus: ebus_b_r, ebus_b_w и т. п.

Для контроля состояния принятого пакета служит функция fbus_sts, полностью аналогичная функции ebus_sts.

Величина тайм-аута также составляет 2 с и не может быть изменена.

 

Способ 3. Соединение через панель

Пусть к сети контроллеров подключена операторская панель, например, Weintek (рис. 3).

 

Рис. 3. Пример системы из двух контроллеров и операторской панели. (Нажмите для увеличения)

 

Такие панели позволяют пересылать данные из одного контроллера в другой. Для этого в проект панели вводится Data Transfer Object, в настройках которого .указывается адрес источника данных и адрес приемника данных, а также интервал передачи данных (от 0,5 с). Передача данных ведется по протоколу Modbus TCP.

Панель позволяет осуществлять контроль состояния соединения Ethernet (см. раздел 22.17 «Communication Status with PLC (Ethernet)» руководства пользователя [1]). Состояние соединения отображается на системные тэги панели, однако, если соединение с одним из контроллеров разорвано, он не сможет получить доступ к этим системным тэгам, поэтому такой способ контроля состояния линии также не подходит.

Способ 4. Имитация сторожевого таймера

Способ заключается в том, что один из контроллеров передает по протоколу EBus переменную, значение которой периодически изменяется. Второй контроллер отслеживает изменение значения переменной, и, если оно не меняется определенное время, фиксирует состояние разрыва соединения.

Можно контролировать состояние линии связи в обоих контроллеров, вставив в их программы как передающий, так и принимающий блок.

Рис. 4. Программа (FBD) передающей стороны. (Нажмите для увеличения)

 

На рис. 4 приведена программа (FBD) передающей стороны. Она тривиальна и не требует особых пояснений.

Рис. 5. Программа (FBD) принимающей стороны. (Нажмите для увеличения)

На рис. 5 приведена программа (FBD) принимающей стороны. Она также достаточно проста. Время срабатывания задается входным параметром таймера TOF, переменная state2 показывает состояние линии связи. Опытным путем можно установить, что устойчивая работа обеспечивается при времени срабатывания таймера ~1с (если контроллер не загружен другими задачами). Однако если в контроллере выполняется некая программа с существенным временем цикла, время срабатывания данного сторожевого таймера может также существенно увеличиться.

Использование других функций связи

Контроллеры ICP DAS i7000/i8000 поддерживают также другие функции связи в системе ISAGraf. Ниже приведен их краткий обзор.

udp_send, udp_recv – прием и передача сообщения по UDP. Однако получить стабильную работу этих функций не удалось.

tcp_send, tcp_recv – прием и передача сообщения по TCP. Эти функции входят в библиотеку функций ICP DAS, но поддерживаются только контроллерами WP-8xx7, VP-8 xx7 и XP-8xx7.

eth_send, eth_recv - прием и передача массива по TCP или UDP. Эти функции входят в библиотеку функций ICP DAS, но поддерживаются только контроллерами WP-8xx7, VP-8 xx7 и XP-8xx7.

 

Литература

[1]. EB8000 User Manual. Weintek corp.