ЖУРНАЛ СТА №1/1999
Любая система в процессе эксплуата- ции подвергается критике со стороны пользователя в трех направлениях: ли- бо указываются ошибки, либо высказы- ваются пожелания о расширении воз- можностей системы (выдаче каких-то дополнительных данных), либо предъ- являются претензии к форме отобра- жения. Ошибки выявляются достаточно скоро, базисные данные имеют конеч- ный объем, и наступает время, когда расширение возможностей на деле оз- начает лишь варьирование представ- лениям и уже имеющихся данных (про форму отображения и говорить нече- го). То есть не надо переделывать Сер- вис, ловить время для его перезапуска (а это актуально в условиях режима ре- ального времени), а достаточно в RTWin добавить в проект съем данных еще одного канала, перерисовать кар- тинку или создать дополнительную панель управления (рис. 7) и провести пару-другую линий связи. Для более сложной обработки данных можно включить в проект очередной C-код, а то и создать дополнительный проект. Конечноже, нарисованнаямноюкар- тина больше смахивает на идиллию, не- жели на суровую действительность, и все же, все же... Приведу такой факт. Ес- ли на начальном этапе номера версий Сервиса АИС и проекта RTWin АИС сов- падали, то сейчас идет явное опереже- ние последнего. Впрочем, все сказанное было бы справедливо, применяй я и ка- кой-либо другой инструмент графичес- кой визуализации, а то и вовсе обыч- ный вывод (рис. 8). Главное здесь все же отделение процесса получения базис- ных данных от процесса их отображе- ния. Важнейшее преимущество такого отделения — информация, используе- мая всеми клиентами, неважно каким способоми на чем отображаемая, иден- тична. Как же может быть иначе, если источник один. К слову, в АИС даже те- кущее время поступает к клиентам как данные соответствующего канала. Вместо заключения В данной статье приведен пример ав- томатизации в связке, если можно так выразиться, QNX — графика. Что каса- ется использования QNX, то это было одним из первых опытов (наряду с АСУ нагрева заготовок) применительно к объектам сортопрокатного цеха. Здесь уместно напомнить о существовании другого основного цеха, сталеплавиль- ного, где информационные и управ- ляющие системы разрабатываются под QNX c 1991 года. Если присовокупить системы, обслуживающие некоторые объекты вспомогательных цехов, то мы имеем полное право говорить об обще- заводской технологической информа- ционной сети на базе QNX. В настоящее время задействовано свыше 60 узлов, на стадии разработки подключение еще нескольких вспо- могательных це- хов (около 20 уз- лов). Не задаваясь целью пропаганди- ровать QNX в дан- ной статье, описы- вая его достоинст- ва, отмечу лишь чрезвычайно вы- сокую надежность данной OС в реа- лизации задач АСУ ТП, проверенную опытоми временем. Несомненным же недостатком QNX является, как неко- торыешутят, его«во- енно-полевой ин- терфейс». Конечно же, само время за- ставляет как можно скорее прикрыть эту брешь, и приве- денный в статье пример АСУ как раз был ориентирован прежде всего на решение этой зада- чи (съем, обработка, хранение данных изначально не вызывали никаких со- мнений). ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ МЕТАЛЛУРГИЯ 78 1/99 /* функции обработки данных каналов */ void sub_chan_0 (struct chan_TIME *); void sub_chan_1 (struct chan_DAT *); main() { pid_t pid_servis; int off; struct bsend B; short client; ... /* к этому моменту связь с Сервисом создана и Клиент зарегистрирован, номер в client */ B.head.type = I_AM_CLIENT; B.head.subtype = CLIENT_DATA; B.head.client = client; B.head.maska = F_CHAN_TIME | F_CHAN_DAT; B.head.flags = 0; Send(pid_servis,&B,&B,sizeof(struct d_head),sizeof(struct bsend)); off=0; if(B.head.flags&F_CHAN_TIME) { sub_chan_0((struct chan_TIME *)&B.data[off]); off+=sizeof(struct chan_TIME); } if(B.head.flags&F_CHAN_DAT) { sub_chan_1((struct chan_DAT *)&B.data[off]); off+=sizeof(struct chan_DAT); } ... } Пример 4. Запрос группы каналов у Сервиса Рабочие места операторов прокатного стана
Made with FlippingBook
RkJQdWJsaXNoZXIy MTQ4NjUy