[DeviceList]

&I7018 = device adam ADAM-7018

[&I7018]

Comment = Драйвер для I7018, адрес $01

InquiryPeriod = 10 ; Период опроса, ms

Port = 1 ; Номер COM-порта

Address = $01 ; Адрес устройства в сети RS-485

UsesCheckSum = 1 ; Использовать контрольные суммы?

RangeCode = $01 ; $00=15mV, $01=50mV, $02=100mV, etc.

DataFormat = 2 ; 0=Engineering,1=%FSR,2=Hex,3=Ohms

Link AnalogOutput 0 with curve ADC. I history 200

Link AnalogOutput 1 with curve ADC. U history 200

Секция [Windows] содержит список деклараций окон Curve_Window, Tab_Window, Circuit_Window для описания используемых окон кривых, таблиц и мнемосхем соответственно (раздел 1.4.2). Каждая декларация определяет имя и тип окна. После декларации окна в одноименной с ним секции должно быть расположено описание параметров, содержание которого определяется его типом. Например, окна кривых содержат список CurveList отображаемых в окне кривых, а окна мнемосхем содержат ссылку Circuit на файл описания мнемосхемы и конструкции «Link … with …» для установления связи сенсоров (визуальных элементов мнемосхем) с тегами и кривыми RTDB. Например:

[Windows]

GraphU = Curve_Window

[GraphU]

CurveList = ADC. U, U. VOLT

[Windows]

AHIT. CTRL = Circuit_Window

[AHIT. CTRL]

Circuit = ..\CIRCUITS\AHIT_CTRL. CRC

Link sensor I with tag ADC. I device &Demo. DRV

Link sensor U with tag ADC. U device &Demo. DRV

Подробное описание форматов конфигурационных файлов, калибровок, мнемосхем содержится в электронной документации пакета.

НЕ нашли? Не то? Что вы ищете?

9. Система ограничения прав доступа к АСКУ

Работа тритиевых установок связана с потенциальной радиационной опасностью, поэтому их системы управления должны включать систему прав доступа, исключающую несанкционированные действия посторонних лиц.

Реализованная в пакете CRW-DAQ система прав доступа и защиты опирается на систему защиты Windows. Рассмотрим сначала защиту на уровне пользовательского интерфейса (Рис.71). Операционная система конфигурируется так, что графическая оболочка Windows работает с правами ограниченного пользователя, а измерительный пакет CRW-DAQ запускается с правами администратора, т. к. ему нужен доступ к аппаратуре. Для запуска программ с правами администратора (но без ввода его пароля) из-под пользователя с ограниченными правами специально разработана программа AdmiLink, доступная на Web сайте www. crw-daq. ru/download/doc/admilink/, использующая зашифрованную учетную запись администратора. Файловая система гарантирует невозможность прямого изменения конфигурационных файлов пользователем, так как они созданы под администратором и защищены системой безопасности Windows. Конфигурацию можно изменить из среды пакета CRW-DAQ, но там существует своя защита, в которой предусмотрено 4 уровня доступа:

·  Lock — компьютер заблокирован, запрещены все операции, кроме смены уровня доступа. Применяется для временной блокировки компьютера.

·  Guest — уровень гостя (неопытного пользователя), защищен паролем. Позволяет строить графики, наблюдать состояние параметров, но доступ к управлению измерительной системой закрыт.

·  User — уровень (опытного) пользователя, защищен паролем. Позволяет управлять измерительной системой (запуск, остановка, завершение работы), однако редактирование прикладных программ или конфигураций запрещено. Это гарантирует целостность конфигурации и алгоритмов измерительной системы, предохраняет ее от несанкционированных изменений.

·  Root — уровень администратора, защищен паролем. Администратору разрешены все операции, включая редактирование и компиляцию прикладных программ. Этот уровень предназначен только для разработчиков и администраторов измерительных систем.

Рис.71. Внешний вид системы защиты пакета CRW-DAQ и программы AdmiLink.

Обычно, если для данной установки требуется система защиты, вся рутинная работа происходит на уровне пользователя или гостя. Для выполнения критических действий оператор вводит пароль для временного повышения уровня доступа, а по их завершении возвращается на пониженный уровень доступа. Понижение уровня доступа выполняется одной кнопкой (F11) и не требует пароля, что позволяет быстро заблокировать компьютер.

При работе в сети кроме защиты на уровне интерфейса пользователя необходима также сетевая защита. Самым уязвимым звеном при этом является сервер, принимающий от клиентов команды - сервисы в случае DIM и HTTP запросы в случае Web. В обоих случаях DIM или HTTP команды передаются по открытому каналу связи и в принципе могут быть посланы любым пользователем. Поэтому для защиты сервера несанкционированного доступа по сети используется шифрование. В пакет включена система шифрования, использующая шесть свободно опубликованных алгоритмов: (Blowfish, Gost, RC2, RC4, RC5, RC6) [81]. В алгоритме шифрования учитываются такие параметры как уровень доступа, имя и пароль пользователя, имя удаленного компьютера, его IP и MAC адрес. Сервер (DIM или Web) хранит таблицу допустимых параметров пользователей. При получении от клиента шифрованной команды сервер пытается расшифровать её, но это удается сделать только в том случае, если пользователь зашифровал её, используя те же самые параметры, что указаны в таблице у сервера. Это гарантирует аутентичность получаемых сервером команд. В то же время трафик от сервера к клиентам в пакете CRW-DAQ открыт и не шифруется.

10. Особенности программной реализации пакета CRW-DAQ

Работа на тритиевых установках носит длительный и непрерывный (несколько месяцев) характер, при этом радиационный контроль и аварийная блокировка должна работать исключительно надежно. Поэтому при создании программного обеспечения АСКУ, как системного (пакет CRW‑DAQ), так и прикладного (алгоритмы управления), высший приоритет имела его безопасность и долговременная надежность. Ради повышения надежности иногда приходилось жертвовать некоторым снижением скорости работы или усложнением программ, однако предпочтение отдавалось вопросам безопасности АСКУ. Надежность программ имеет два аспекта – рассмотренный выше структурный (раздел 1.4.2.6, Рис.62) и технологический, связанный с методами безопасного программирования.

Технологии безопасного программирования - одна из самых актуальных тем развития компьютерной индустрии. Именно низкая защищенность традиционных языков типа C, C++, Pascal, имеющих «опасные» конструкции типа макросов или указателей, а также отсутствие явной поддержки параллелизма стала одним из побудительных мотивов создания таких языков программирования нового поколения, как D (см. www. /d/) и Erlang (см. [69] и www. erlang. org). Эти языки еще только начали завоевывать популярность, но заложенные в них новые идеи можно частично реализовать и в используемом для создания пакета CRW-DAQ языке Object Pascal.

Можно сформулировать ряд необходимых условий и принципов безопасного многопоточного программирования, которых придерживался автор. Прежде всего, безопасные программы должны строятся на базе безопасных объектов.

Безопасные программные объекты должны быть верифицируемы, т. е. содержать возможность проверки своей корректности. Например, массивы верифицируемы (индекс элемента можно проверить на диапазон), а указатели – нет (отсутствует механизм их проверки). Они должны быть строго инкапсулированы, т. е. все структуры данных должны быть «спрятаны» за безопасными вызовами процедур и функций. Они должны быть самосогласованны, т. е. не содержать внутренних противоречий. Например, счетчик элементов списка должен совпадать с реальным числом элементов в нем. Они должны быть атомарными, т. е. все доступные процедуры должны неделимым образом переводить объект из одного самосогласованного состояния в другое, тоже самосогласованное, без доступных «промежуточных» состояний. Они должны быть детерминированными, т. е. предсказуемыми, без «побочных эффектов». В частности, они должны быть герметичными, т. е. выделяемые им ресурсы не должны «утекать». По возможности, они должны использовать квазистатическое (однократное) выделение ресурсов, т. к. при динамическом выделении ресурсов есть риск сбоя из-за их нехватки в данный момент. Наконец, желательно, чтобы объекты имели свойство рефлексии, т. е. самонаблюдения. Безопасная программа должна сама тестировать свой код!

Меры повышения надежности можно разделить на три категории – превентивные, восстановительные и диагностические. Превентивные меры ставят целью предотвратить возникновение ошибок. Главными среди этих мер являются: 1) Проверка корректности входных данных перед их использованием. Например, проверка указателя на ноль, проверка индекса массива на допустимый диапазон. 2)Использование программных технологий, снижающих риск ошибки. Например, объектно-ориентированное программирование (ООП), «умные указатели», реестр объектов, виртуальная машина (Рис.14), выделение служб в отдельные процессы. Заметим, что все превентивные меры предполагают, что объекты верифицируемы. Восстановительные меры пытаются ликвидировать или хотя бы снизить последствия уже возникших ошибок. Главной из этих мер является механизм структурной обработки исключений - SEH (Structured Exception Handling), реализуемый в языке Object Pascal при помощи конструкций «try … except …» для «перехвата» исключений и «try … finally …» для освобождения ресурсов [60]. Диагностические меры, хотя они напрямую не влияют на обработку ошибок, способствуют их своевременному обнаружению, а потому также необходимы для обеспечения программной безопасности. Среди этих мер можно назвать технику счетчиков ресурсов, списков объектов, журнальных файлов, отладочных консолей, гистограмм для сбора статистики и т. д. В совокупности эти меры и обеспечивают рефлексию (самоконтроль) программы.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37