ЖУРНАЛ СТА 1/2015

элементов имеет один диагностический виртуальный канал размером 1 байт и один канал, передающий логические состояния на восьми физических дис- кретных входах модуля, в области вход- ных данных образа процесса. Поэтому для связи приложения с входами четы- рёх модулей дискретного ввода требу- ется не менее восьми байт; byDigitalOutputs – массив из двух эле- ментов типа BYTE, отображённый на выходные каналы двух модулей DIM718 в области выходных данных образа про- цесса; byNetIODiag – переменная типа WORD, отображённая на выходной ка- нал элемента Input Register с MODBUS- адресом 5000, предназначенного для пе- редачи мастеру сети битовой маски на- личия связи с модулями ввода-вывода; byNetDigitalInputs – массив из четырёх элементов типа BYTE, отображённый на выходные каналы элементов Input Register с MODBUS-адресами 5001 и 5002, пред- назначенных для передачи мастеру сети логических состояний 32 каналов дис- кретного ввода модулей DIM717 и DIM762; byNetAnalogInputs – массив из восьми элементов типа REAL, отображённый на выходные каналы элементов Input Regis- ter с MODBUS-адресами с 5003 по 5018, предназначенных для передачи по сети значений тока на восьми каналах анало- гового ввода модуля AIM791; byNetDigitalOutputs – массив из двух элементов типа BYTE, отображённый на входной канал элемента Bitwise Hol- ding Register сMODBUS-адресом 1, пред- назначенного для приёма по сети ко- манд управления 16 каналами дискрет- ного вывода модулей DIM718. Переменная mAIM791 является масси- вом из одного экземпляра функцио- нального блока AIM791_STIN из биб- лиотеки aim791.lib и служит для пре- образования измеренных значений на входных каналах единственного модуля AIM791 в значения тока. Для работы с единственным модулем аналогового ввода в данном примере используются массивы mAIM791 и mAIM791Inputs , что- бы обеспечить возможность расширения системы в будущем. Временные вспомогательные пере- менные m_idx , ch_idx и net_idx , объ- явленные в секции VAR_TEMP , пред- ставляют собой счётчики для организа- ции циклов перебора экземпляров функ- циональных блоков массива mAIM791 , массива каналов каждого функциональ- ного блока и элементов массивов, ото- бражённых на коммуникационные объ- ектыMODBUS. Программа PLC_PRG выполняет сле- дующие действия (см. нумерацию строк на рис. 6): в строке 2 первые 16 разрядов битовой маски наличия связи с модулями ввода- вывода копируются в переменную byNet- IODiag , которая отображена на выходной канал регистраMODBUS с адресом 5000; в строке 5 устанавливается в 1 счётная переменная net_idx , с помощью которой вычисленные значения тока на восьми каналах аналогового ввода внутри цикла в строках 10–13 копируются в массив byNetAnalogInputs , отображённый на вы- ходные каналы регистров 5003…5018; в строке 6 устанавливается в 1 счётная переменная цикла m_idx для перебора элементов массива mAIM791 и mAIM791- Inputs , а также вычисляется условие за- вершения цикла. Обратите внимание на используемую технику определения ко- личества элементов в массиве: В данном случае операция SIZEOF- (mAIM791) определяет размер всего мас- сива в байтах, операция SIZEOF(mAIM- 791[1]) – размер первого элемента мас- сива, а результатом деления первого по- лученного размера на второй будет ко- личество элементов в массиве. Все мас- сивы, объявленные в PLC_PRG , индек- сированы относительно 1, поэтому цик- лы FOR , в которых производится доступ к элементам этих массивов по индекс- ным переменным циклов, должны начи- наться с 1 и заканчиваться по превыше- нию индексной переменной цикла раз- мера массива. В строке 8 вызывается экземпляр функционального блока AIM791_STIN из массива mAIM791 , индекс которого равен переменной цикла m_idx . При вы- зове блоку на вход передаётся соответ- ствующий элемент массива mAIM791In- puts , содержащий значения и состояния на каналах модуля AIM791 с номером m_idx (начиная с 1). В данном случае в конфигурации контроллера присутствует один модуль, поэтому массивы mAIM791 и mAIM791Inputs содержат по одному эле- менту. При необходимости расширения конфигурации контроллера в будущем приведённый код может быть легко адап- тирован для нового количества модулей. В строках 10–13 восемь значений тока на входах модуля AIM791 с индексом m_idx , вычисленных при вызове блока mAIM791[m_idx] , записываются в массив byNetAnalogInputs , отображённый на вы- ходные каналы регистров с MODBUS- адресами с 5003 по 5018. Обратите вни- мание, что для записи в элементымасси- ва byNetAnalogInputs используется счётная переменная net_idx , а для доступа к вы- численным значениям тока на каналах каждого модуля AIM791 используется переменная ch_idx . В строках 17–19 логические состояния каналов модулей дискретного ввода пе- редаются в массив byNetDigitalInputs , ото- бражённый на выходные каналы регист- ров с MODBUS-адресами 5001 и 5002. В строке 18 при обращении к массиву byDigitalInputs используются только чёт- ные индексы его элементов, поскольку по нечётным индексам расположены ди- агностические виртуальные каналы мо- дулей DIM717 и DIM762. В строках 22–24 из массива byNet- DigitalOutputs , отображённого на 16 би- товых полей типа Coil с адресами 1…16, извлекаются команды управления ка- налами дискретного вывода и записы- ваются в массив byDigitalOutputs , эле- менты которого отображены на 16 ка- налов двух модулей DIM718. После загрузки данного приложения в контроллер CPM703 он превращается в узел распределённой системы ввода-вы- вода на базе протокола MODBUS TCP. В реальных «боевых» системах прило- жение также может выполнять дополни- тельные функции вроде диагностирова- ния отказов оборудования системы и се- ти, вторичную обработку сигналов и т.п., чего в ряде случаев не удаётся в полной мере реализовать на уровне мастера про- мышленной сети, опрашивающего рас- пределённую периферию. В этом видит- ся один из плюсов применения програм- мируемого контроллера в качестве узла распределённой системы ввода-вывода. Однако, как указывалось ранее, для реализации такого рода приложений разработчик должен иметь опыт исполь- зования языков стандарта МЭК 61131-3 для программирования ПЛК в среде раз- работки CoDeSys 2.3, а также быть зна- комым с программной документацией на контроллеры FASTWEL I/O. NIM745-02: ТОЛЬКО КОНФИГУРИРОВАНИЕ И НИКАКОГО ПРОГРАММИРОВАНИЯ Модуль интерфейсный NIM745-02, внешний вид и схема подключения кото- рого показанына рис . 7, является непро- граммируемым контроллеромподчинён- ного узла сети MODBUS TCP, конфигу- 60 СТА 1/2015 АППА РАТ НЫЕ С Р Е ДС Т В А / П РОМЫШЛ Е ННЫЕ КОН Т РОЛЛ Е РЫ www.cta.ru

RkJQdWJsaXNoZXIy MTQ4NjUy