Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / SCADA-╤Б╨╕╤Б╤В╨╡╨╝╤Л ╨║╨░╨║ ╨╕╨╜╤Б╤В╤А╤Г╨╝╨╡╨╜╤В ╨┐╤А╨╛╨╡╨║╤В╨╕╤А╨╛╨▓╨░╨╜╨╕╤П ╨Р╨б╨г ╨в╨Я

..pdf
Скачиваний:
2
Добавлен:
13.11.2023
Размер:
23.86 Mб
Скачать

Алгоритм защиты должен выполняться на контроллере Modicon TSX Quantum [19]. Операторская станция для дистанционного управления системой должна быть реализована на ПЭВМ с исполь­ зованием инструментальной графической системы Трейс Моуд.

Реализация системы. Для подключения к контроллеру PC с операторской станцией используем протокол Modbus. К достоин­ ствам протокола Modbus следует отнести его открытость, что по­ зволяет сторонним производителям реализовывать его в своих продуктах, и простоту использования: кабель можно подключить к последовательному порту PC. Стандартные Modbus-порты в кон­ троллерах Quantum используют RS-232C совместимый последова­ тельный интерфейс.

Для ввода данных с кнопок в контроллер он должен быть ос­ нащен модулем ввода. Выбор между дискретным и аналоговым вводом основывается на конкретных условиях задачи. В нашем случае можно воспользоваться любым из них, так как нас интере­ сует лишь сам факт наличия сигнала на линии. Это означает, что заданная кнопка на двери нажата. Однако аналоговый модуль по­ зволит нам более гибко реализовать алгоритм. Поэтому воспользу­ емся аналоговым модулем 140 AVI 030 00. Вывод напряжения на управляющий элемент будем осуществлять через модуль аналого­ вого вывода 140 AVO 020 00.

Алгоритм работы контроллера.

1.Сигнал поступает на вход модуля от датчиков ввода кода.

2.Поступивший сигнал сравнивается с барьером для установ­ ления факта его наличия. Барьер задается программно и может быть перенастроен даже после загрузки программы в контроллер. Чтобы осуществить его редактирование, необходимо подключить­ ся к контроллеру с помощью программы Concept [20] в режиме редактирования конфигурации, далее с помощью опции Reference Data Editor ввести имя редактируемой переменной (BVThreshold) и задать ей новое значение (рис. 7.22). По умолчанию используется порог 0,6 В.

3.После сравнения всех четырех значений на вводах, соответ­ ствующих четырем кнопкам ввода пароля, устанавливаются флаги «зажатости» для каждой из четырех кнопок.

4.Флаги из п. 3 преобразуются из логического в целый тип для дальнейших действий над ними. В результате мы имеем четыре

284

Так как нас интересует лишь сам факт «зажатости» кнопки, то вещественное значение напряжения на входе надо сравнить с не­ которым порогом и сформировать логический флаг. Это осущест­ вляется блоками сравнения GE_REAL, которые принимают веще­ ственные аргументы, а на выходе выдают логическую величину, равную истине, если первый выход больше второго. Подадим на блоки GE_REAL в качестве первых аргументов входные величи­ ны, а в качестве вторых - пороги (рис. 7.24).

Рис. 7.24. Сравнение входных величин с пороговыми значениями

Для вычисления пароля путем объединения логических флагов создадим секцию Calcul. В соответствии с описанным выше алго­ ритмом объединения блоков, получим следующую схему работы программы (рис. 7.25).

Как видно из схемы на рис. 7.25, флаги подаются на входы преобразователей в тип данных Byte, откуда - в блоки, реализую­ щие побитовый сдвиг влево. Полученные значения преобразуются в двухбайтовый тип данных UINT и складываются. После сложе­ ния получается величина, равная введенному паролю (UserPsw). Преобразование переменной из однобайтовой в двухбайтовую не­ обходимо для унификации интерфейса программы, так как все ее экспортируемые величины имеют тип данных UINT. Оба типа данных, используемые при преобразовании, являются беззнако-

287

выми. Это обязательное условие, так как для знаковых перемен­ ных требуется другой тип кодирования, и нет гарантии, что в пе­ ременной будет установлено не более одного бита.

Рис. 7.25. Преобразование логических флагов в единый пароль

Так как нас интересует не сам введенный пароль, а факт его соответствия правильному, то с выхода сумматора значение вве­ денного пароля передается еще и в блок сравнения с правильной величиной (CorrPsw). Ее можно редактировать с операторского терминала, таким образом меняя пароль в реальном времени. Что­ бы сделать эту величину доступной для других приложений по протоколу Modbus, ей надо присвоить некоторый адрес, по кото­ рому она в дальнейшем будет считываться. В нашем случае пере­ менная CorrPsw имеет тип данных UINT (или WORD в другой терминологии) и размещается по адресу 4:2.

Учет возможности появления нулевого пароля, т. е. ситуации, когда пароль не введен, осуществляется путем сравнения всех флагов «зажатости» кнопок с «ложью» (рис. 7.26).

.1.24(13)

.1.25(14)

EQ BOOL

NOT BOOL

FALSE О-------

------ t>PsvulsEntere d

Btn1 Bool О-------

 

Btn2Bool[>

 

Btn3Bool[>-------

 

Btn4Bool[>-------

 

Рис. 7.26. Проверка на наличие ввода пароля

288

Решение на конкретное действие принимается на основе про­ верки двух флагов: PswIsEntered и PswIsCorrect. Если пароль не введен, то ничего не происходит. Если он введен, то действие за­ висит от его правильности. Единственным затруднением является тот факт, что в случае включения сигнализации ее надо удержи­ вать включенной до тех пор, пока она не будет отключена с цен­ трального пульта, а не до тех пор, пока пользователь не прекратит нажимать кнопки. Алгоритмически это реализуется с помощью стандартного блока - триггера, удерживающего положение «включено» с момента подачи на него сигнала и до того, пока не будет подан контрсигнал на вход сброса (рис. 7.27).

Th»

tf hlHtdwMn NirmUlNT iffibt (P)

AJjrtnRMtn btrut

It muni that alarm haa bi«n г»мп r»MhUy. but itwaahaNad by ait »a«rater.

Рис. 7.27. Схема удержания сигнала на сигнализации

После того, как будут установлены флаги на открытие замка или включение сигнализации, необходимо, чтобы контроллер по­ дал напряжение на соответствующие исполнительные элементы. Подача напряжения на выход осуществляется путем связывания блоков вывода со значениями переменных. Так как само связыва­ ние надо выполнить лишь единожды, то и описывать его надо в секции AnaloCfg. Это зарезервированное название секции, по ко­ торому контроллер определяет, что ее надо запустить лишь один раз при старте.

Как видно из схемы на рис. 7.28, для вывода предназначены каналы 1 и 2 модуля аналогового вывода AVO020. Они связыва­ ются с масштабирующими блоками, в которые также поступают и значения переменных VltElecLock и VitAlarm, задающие состоя­ ние выхода. Они имеют вещественный тип данных REAL и равны

289

номинальным напряжениям для сигнализации и замка. Чтобы эти значения не подавались непрерывно, управление работой блоков осуществляется через входы EN, которые при подаче на них нуля замораживают работу блоков. Входы EN активизируются, когда необходимо подать напряжение. Это определяется флагами, вы­ численными в предыдущих секциях. Здесь флаги представлены в виде OPenUINT и AlarmUINT. Эти значения преобразуются из ти­ па данных UINT в логический тип данных BOOL и поступают на входы EN (см. рис. 7.28).

Рис. 7.28. Связь аппаратных выходов контроллера со значениями переменных

Ряд переменных предназначен для считывания или записи с операторского терминала. Для того чтобы это стало возможным, необходимо присвоить им адреса в памяти контроллера. Эти адре­ са будут указываться вместо имен переменных при получении к ним доступа по протоколу Modbus.

Зададим адрес контроллера 02 путем установки переключате­ лей на задней стороне процессорного модуля. Следующим шагом является настройка COM-порта для связи. Установив номер ис­ пользуемого порта, проверим, чтобы остальные настройки соот­ ветствовали протоколу Modbus (рис. 7.29).

Реализация операторского терминала в Трейс Моуд. Так как проект является несложным, создадим один малый узел и при­ своим ему имя Ostation. Так как узел будет использоваться для об­ мена по протоколу Modbus, что в свою очередь предполагает ис­ пользование последовательных портов, их необходимо настроить

290