Переменные экземпляра функционального блока

Переменная тА1М791 является массивом из одного экземпляра функционального блока AIM791_STIN из библиотеки aim791 .lib и служит для преобразования измеренных значений на входных каналах единственного модуля AIM791 в значения тока. Для работы с единственным модулем аналогового ввода в данном примере используются массивы тАШ791 и mAIM79I Inputs, чтобы обеспечить возможность расширения системы в будущем.

Временные вспомогательные переменные m_idx, ch_idx и netjdx, объявленные в секции VARTEMP, представляют собой счётчики для организации циклов перебора экземпляров функциональных блоков массива тА1М791, массива каналов каждого функционального блока и элементов массивов, отображённых на коммуникационные объекты MODBUS.

Программа PLCPRG выполняет следующие действия (см. нумерацию строк на рис. 6): в строке 2 первые 16 разрядов битовой маски наличия связи с модулями ввода-вывода копируются в переменную byNet-lODiag, которая отображена на выходной канал регистра MODBUS с адресом 5000; в строке 5 устанавливается в 1 счётная переменная netidx, с помощью которой вычисленные значения тока на восьми каналах аналогового ввода внутри цикла в строках 10—13 копируются в массив byNetAnaloglnputs, отображённый на выходные каналы регистров 5003…5018; в строке 6 устанавливается в 1 счётная переменная цикла midx для перебора элементов массива тА1М791 и тАШ791-Inputs, а также вычисляется условие завершения цикла. Обратите внимание на используемую технику определения количества элементов в массиве:

SIZE0F(mAIM791)/SIZE0F(mAIM791)

В данном случае операция SIZEOF-(тАШ791) определяет размер всего массива в байтах, операция SIZEOF(mAIM-791/ IJ) — размер первого элемента массива, а результатом деления первого полученного размера на второй будет количество элементов в массиве. Все массивы, объявленные в PLCPRG, индексированы относительно 1, поэтому циклы FOR, в которых производится доступ к элементам этих массивов по индексным переменным циклов, должны начинаться с 1 и заканчиваться по превышению индексной переменной цикла размера массива.

В строке 8 вызывается экземпляр функционального блока AJM791_STIN из массива тА1М791, индекс которого равен переменной циклам_Jdx, При вызове блоку на вход передаётся соответствующий элемент массива mAIM79IInputs, содержащий значения и состояния на каналах модуля AIM791 с номером midx (начиная с 1). В данном случае в конфигурации контроллера присутствует один модуль, поэтому массивы тА1М791 и шАШ 791 Inputs содержат по одному элементу. При необходимости расширения конфигурации контроллера в будущем приведённый код может быть легко адаптирован для нового количества модулей.

27.01.2014

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

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

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

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