ЖУРНАЛ «СТА» №3/2007

ми. По нашему мнению, жёсткая связь между каналами вво- давывода и переменными прикладных программ приемле- ма только для очень простых случаев и для контроллеров с небольшим фиксированным количеством каналов вво- давывода. Fastwel I/O является модульной системой, в со- став которой может входить до 64 модулей с самой разнооб- разной номенклатурой каналов вводавывода, поэтому о не- большом и тем более фиксированном наборе каналов гово- рить не приходится. Итак, входные и выходные переменные программы не должны «прибиваться гвоздями» к каналам конкретных устройств вводавывода и коммуникационных объектов внешней сети по следующим причинам: 1. В процессе проектирования некоторой системы уже после написания программы может потребоваться изменить тип модулей вводавывода. Например, модуль аналогового вво- да одного типа после опытной эксплуатации заменяется на другой. В конфигурации контроллера модулей заменяемого типа может быть до 64, и пользователю придется вручную «прибивать» идентификаторы переменных для всех моду- лей повторно, что весьма трудоёмко и ведёт к ошибкам. 2. Утрачивается возможность структурной обработки данных от однотипных модулей, как продемонстрировано далее. Мало того, что при жёсткой связи переменных с каналами нужно при помощи мыши «объявлять» каждую вход- нуювыходную переменную в PLC Configuration, так потом ещё в коде придётся вручную задавать каждую переменную блоку или функции обработки в качестве фактических па- раметров, что увеличивает количество кода и вероятность ошибок. В небольших проектах с небольшим количеством устройств вводавывода, коммуникационных объектов и с небольшими программами указанная проблема не будет столь заметной, но для больших проектов структурная об- работка входных и выходных данных даёт выигрыш по вре- мени на пару порядков, а то и больше. Плюс во много раз сокращается количество кода обработки. 3. При перераспределении алгоритмической функциональ- ности между разными контроллерами (например, был один контроллер, и в связи с введением новых очередей системы управления решили добавить второй и поделить между ними возросшую функциональность) может потре- боваться получать значения входных переменных не от модулей вводавывода, а по сети. При использовании структурной обработки будет достаточно изменить только начальный адрес блока объявления массива входных пере- менных типа STRUCT, скажем, «наведя» его на поля дан- ных первого из нескольких смежных однотипных комму- никационных объектов внешней сети, посредством кото- рых предполагается получать данные от другого узла сети. Рассмотрим пример, который иллюстрирует технику структурной обработки входных и выходных данных. Пусть, к примеру, в конфигурацию контроллера добавле- ны 6 модулей аналогового ввода типа AIM726 и 9 модулей аналогового ввода типа AIM728, причём однотипные моду- ли располагаются в конфигурации друг за другом. Предпо- ложим, что предусмотрительный пользователь определил в программе непримитивные типы данных, описывающие входные и выходные каналы модулей следующим образом: (* Входы AIM726 *) TYPE AIM726_inputs : STRUCT diagnostics: BYTE; vin0: DWORD; vin1: DWORD; END_STRUCT END_TYPE (* Значения напряжения на входах AIM726 *) 72 СТА 3/2007 АППА РАТ НЫ Е С Р Е Д С Т В А / П Р ОМЫШЛ Е ННЫ Е КОН Т Р ОЛЛ Е Р Ы www.cta.ru Корневой элемент конфигурации контроллера узла Входной канал контроля состояния переключателей Выходной канал управления светодиодом USER Представление диагностической информации контроллера узла Конфигурация модулей ввода вывода Конфигурация модуля ввода вывода Входные каналы модуля ввода вывода Выходные каналы модуля ввода вывода Конфигурация внешней сети Конфигурация исходящего коммуникационного объекта внешней сети Выходной канал, представляющий поле данных исходящего коммуникационного объекта Параметры выбранного модуля ввода вывода Рис. 17. Элементы конфигурации контроллера

RkJQdWJsaXNoZXIy MTQ4NjUy