Программный код обмена данными между регистрами

После создания конфигурации модулей ввода-вывода и сервиса подчинённого узла MODBUS TCP нужно добавить в проект программный код, обеспечивающий обмен данными между регистрами протокола MODBUS TCP и каналами модулей ввода-вывода. Кроме того, приложение должно преобразовывать значения на каналах модуля аналогового ввода AIM79I, представленные в виде кодов АЦП, в значения тока с плавающей точкой одинарной точности. Программа PLCPRG. автоматически добавленная в проект при его создании, является тем местом, куда может быть добавлен данный программный код. Но сначала нужно добавить в проект библиотеку aim791 .lib, содержащую функциональные блоки для работы с каналами модуля AIM791, для чего на вкладке Resources следует открыть окно ресурса Library Manager и добавить библиотеку aim791.1ib командой Additional Library в контекстном меню списка библиотек, подключённых к проекту, как показано на рис. 5.

Одна из возможных реализаций программы обмена данными между каналами модулей ввода-вывода и регистрами MODBUS на языке Structured Text показана на рис. 6. Области деклараций VAR и VAR_ TEMP содержат объявления переменных, используемых в теле программы. Переменные, при объявлении которых использована директива АТ%, отображены на адреса каналов модулей ввода-вывода и регистров MODBUS в образе процесса: wIODIAG — переменная типа WORD отображена на первые два байта диагностического канала контроллера в области входных данных образа процесса, содержащего маску наличия связи с первыми 32 модулями ввода-вывода; mAIM79lInputs — массив, содержащий один элемент структурного типа AIM-791_Inputs из библиотеки aim791 .lib и отображённый на входные каналы первого и единственного модуля AIM791 в области входных данных образа процесса; by Digital Inputs — массив из восьми элементов типа BYTE, отображённый на входные каналы элементов DIM7I7 8-channels Digital Input Module и DIM762 8-channels Digital Input Module в конфигурации приложения. Каждый из этих элементов имеет один диагностический виртуальный канал размером 1 байт и один канал, передающий логические состояния на восьми физических дискретных входах модуля, в области входных данных образа процесса. Поэтому для связи приложения с входами четырёх модулей дискретного ввода требуется не менее восьми байт; byDigitalOutputs — массив из двух элементов типа BYTE, отображённый на выходные каналы двух модулей DIM718 в области выходных данных образа процесса; byNet/ODiag — переменная типа WORD, отображённая на выходной канат элемента Input Register с MODBUS-адресом 5000, предназначенного для передачи мастеру сети битовой маски наличия связи с модулями ввода-вывода; byNetDigitaUnputs — массив из четырёх элементов типа BYTE, отображённый на выходные каналы элементов Input Register с MODBUS-адресами 5001 и 5002, предназначенных для передачи мастеру сети логических состояний 32 каналов дискретного ввода модулей DIM717 и DIM762; byNetAnaloglnputs — массив из восьми элементов типа REAL, отображённый на выходные каналы элементов Input Register с MODBUS-адресами с 5003 по 5018, предназначенных для передачи по сети значений тока на восьми каналах аналогового ввода модуля AIM791; byNelDigitalOutputs — массив из двух элементов типа BYTE, отображённый на входной канал элемента Bitwise Holding Register с MODBUS-адресом, предназначенного для приёма по сети команд управления 16 каналами дискретного вывода модулей DIM718.

26.01.2014

Добавить страницу в мои закладки:

Смотрите также:

Что вы чаще всего делаете в Интернете?

Загрузка ... Загрузка ...