Приложение 3.

 

Спецификация на програмното осигуряване на операторски станции

( Главна Операторска Станция- ГОС и Локална Операторска Станция- ЛОС)

 

 

Проектът БПМИО предвижда разработката на два вида операторски станции:

 

-          ГОС     Главна операторска станция;

-          ЛОС     Локална операторска станция.

 

Двете станции са построени на базата на PC под Windows XP.

ГОС трябва да поддържа USB интерфейс с повече от 2 порти, да е свързана с Интернет по Ethernet. ЛОС трябва да поддържа USB интерфейс с повече от 2 порти.

Фърмуерът на двете станции се реализира чрез използване на обектно- ориентиран език TCL/TK под Windows XP и включва текстови и графични приложения( API ),  драйверни програми за поддържане на сервизи „Сървер – Клиент” върху  TCP/IP, „GPRS/ Безжичен интернет” и  USB интерфейс.

Във фърмуера на ГОС са включени различни средства за наблюдение и настройка на Технологичния слой, Редактор/Компилатор и Интерпретатор на проблемно- ориентирани езици.

ЛОС  включва Редактор/Компилатор и Интерпретатор на проблемно- ориентирани езици.

ГОС и ЛОС поддържат «База данни за връзките», съдържаща информация за асоциацията между логическите имена, използвани от потребителя и физическите адреси на съответните входно/ изходни сигнали, употребени от различните Активни мрежови устройства при управлението.

 

Във фърмуера на ГОС и ЛОС са реализирани и средства за компилация (включени в софтуерния продукт Редактор/Компилатор), които заедно с «Базата данни на връзките», позволяват транслация на потребителските проблемно – ориентирани програми в команди на Технологичния протокол и Семантичния език с автоматична генерация на кода на използваните Разширени функции и Външни драйверни програми.

 

 Ще бъдат проектирани и средства за архивиране на работата на оператора и получените резултати от експериментите.

 

 

Програмна реализация на Технологичен и Семантичен езици за работа с БПМИО

 

- Технически проект -

 

1. Технологичен слой.

 

Технологичните изисквания към БПМИО се определят от съвременната елементна база и използването на наличната информационна инфраструктура. Като определящо технологично събитие в последно време може да се посочи появата на интегрирани безжични микроконтролери с вградени специализирани средства за достъп до радио- канали, запазващи функционалността на класическите микропроцесорни системи.Това се явява предпоставка за проектиране на нов клас управляващи устройства, обединяващи в себе си управляващите функции с тези на мрежови устройства в рамките на Безжична локална мрежа.

Безжичната комуникация между устройствата от платформата притежава редица предимства пред класическата жична. Тези предимства произтичат от възможността информационните съобщения да попаднат във всички НОД-ове на безжичната мрежа и последните сами да изберат и извлекат необходимата за тях полезна информация.

Безжичните мрежи, формиращи Технологичния слой, се изменят синхронно с промяната на участниците, включени в тях. Появата на нови кандидати за мрежови НОД-ве и напускане или загубване на връзка със стари, предизвиква тяхната автоматична реконфигурация.

            Програмното осигуряване на Технологичния слой трябва да позволява реакция на мрежата при поява на определени събития в съответствие с нейната първоначална инициализация или в резултат на императивни командни съобщения. При всяка структурна промяна на безжичната мрежа, нейната конфигурация трябва да се запазва в енергийно независима памет на включените в нея НОД-ове. В резултат,при рестартиране на Координатора, на базата на запомнената информация се реализира бързо възстановяване на мрежата (без да е необходимо изпълнението на процедури за търсене на радиоканал и нови мрежови устройства- кандидати за включване в мрежовата структура).

Технологичният слой трябва да има възможности за „клониране”. Това ще изисква възможности за запомняне на работните състояния на НОД-овете на мрежата и успешна замяна на последните с нови НОД-ове при минимални информационни загуби.

Използването на безжичните мрежи на Технологичния слой като транспорт за мрежови съобщения по радиоканал предполага наличие на средства за регулация на радиосигнала и синхронизацията му с операциите, изпълнявани от различни участници в мрежата. Това се постига чрез непрекъснат обмен на служебна информация между мрежовите НОД-ове. Тази информация има характер на служебни синхро-съобщения, които се конкурират с информационните и по този начин намаляват реализирания информационен трафик. Структурата на синхро- съобщенията и правилата за тяхното формиране трябва да оказват минимално въздействие върху обема на предаваната информация. Това осигурява възможност за безпроблемната работа на Активните мрежови устройства (последните обменят информационни съобщения по между си) в режим на реално време. Информационните съобщения между Активните мрежови устройства трябва да се предават без грешки, което изисква потвърждение от получателя и възможно повторение на изпращането при неуспешна комуникация.

Мрежовите съобщения, реализирани чрез радиоканал, са подложени на естествени смущения, породени от околната среда. Безжичните мрежи на Технологичният слой трябва да се реализират в най- безшумния радиоканал от разрешените канали за дадената мрежа, което налага съответна интелигентност на пораждащия мрежата Агент ( при създаване на мрежата, този Агент трябва да анализира състоянието на всички позволени канали и да избере за работен най – малко натоварения в дадения момент). При промяна на радио-условията, трябва да съществуват програмни възможности за смяна на канала, която смяна да се извърши автоматично от всички НОД-ове на дадена безжична мрежа. Това ще позволи адаптация на безжичната мрежа към външните смущения.

Технологичният слой трябва да бъде имунизиран срещу влияние на други мрежи, работещи в използвания радиоканал. Вдяка от безжичните мрежи, включени в Технологичния слой, трябва да притежава собствен сегмент от разрешени радиоканали, като тези сегменти за различните мрежи не се пресичат. Загубите в скоростта на комуникация, при наличие на конкурентен радиосигнал и изисквания за достоверно транспортиране на информационните съобщения, трябва да бъдат приемливи за изпълняваните приложения.

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

 

2. Спецификация на унифициран управляващ език на безжичните експериментални средства (Семантичен език).

 

Семантичният език представлява надстройка на Tранспортния протокол на Технологичния слой и е предназначен за обмен на команди и рапорти между Активните мрежови устройства, включени в мрежата. Той ще се реализира на базата на мрежовите информационни съобщения. Тези съобщения, транспортирани по безжичната мрежа, попадат в Активните мрежови устройства, където се разопаковат. Специална процедура извлича семантичната част от тях и я буферира в кръгов буфер. Друга процедура декодира получената информация и формира семантични единици, наречени Семантични команди. Тези команди се интерпретират от фърмуера и потребителската програма на Активните мрежови устройства.. Всяка команда след изпълнението си формира Рапорт към устройството изпратило командата. Този рапорт се вгражда в тялото на информационните съобщения на изпращани чрез Технологичния слой.

            Семантични команди могат да постъпват и от външни устройства  ( ЛОС или GPRS модем-терминал), включени към Активните мрежови устройства.

 

Семантичният език дефинира и поддръжа три вида елементи:

 

-          терми- това са информационни структури, унифицирани в рамките на мрежата, с възможности за контрол на достоверността и целостта на информацията, съдържаща се в тях. Те се разполагат изцяло в дадено информационно съобщение на Технологичния слой и се интерпретират по еднакъв начин от всички мрежови устройства.Всяко информационно съобщение съдържа изцяло един или няколко терми, всеки терм се разполага изцяло в едно информационно съобщение;

-          команди-     това са информационни структури, включващи няколко терми. Някои от тях са задължително включени във всички команди- такива са «адрес на получателя», «край на командата» и «режим на работа на устройството». Други са специфични и са свързани с конкретните видове мрежови устройства. Те формират «поле на данните на командата», което се интерпретира от конкретните устройства. Всеки терм на командата се потвърждава;

-          рапорти от устройства, получили команди- това са информационни структури, включващи няколко терми. Някои от тях са задължително включени във всички Рапорти- такива са полетата «адрес на получателя и дължина на рапорта»  и «статус и режим на работа на устройството, получило командата». Всеки Рапорт ще включва един или повече терми от вида «поле на данните», което от своя страна ще съдържа няколко подполета- «номер на полето», «дължина на полето» и «данни включени в полето». Последните са специфични за различните устройства.

 

Семантичният език предполага използване на множество от команди и съобщения, интерпретирани индивидуално от различните видове Активни мрежови устройства. Включени са и команди, предназначени за изпълнение от всички устройства на  Технологичния слой.

 

3. Технологичен протокол.

 

            Технологичният протокол включва описание на група команди и съобщения използвани за конфигуриране, мониторинг и управление на Технологичния слой.

 

3.1.   Команди на Технологичния протокол.

 

            Технологичният слой включва набор от безжични локални мрежи, реализиращи транспортиране по радиоканали и жичен интерфейс (RS485)  на информационните и служебни съобщения между ГОС и Активните мрежови устройства. Комуникацията се организира в съответствие с Технологичен протокол за работа с Технологичния слой. Този протокол осигурява изпълнението на групи от външни команди, изпращани от Координатора на Главната мрежа по жичен интерфейс  към останалите Координатори. Всяка външна команда съдържа вградена в тялото си вътрешна команда, която съответния Координатор изпраща към НОД-овете от своята мрежа (капсулирана в съобщения от тип Data to Peer (Unicast)).

 

-          Вътрешни команди - те се разпространяват по зададения за локалната мрежа работен радиоканал, генерират се от Координатора на мрежата и управляват комуникацията между НОД-овете;

 

-          Външни команди - те се разпространяват по жичен интерфейс( RS485) между координаторите в Технологичен слой, включващ няколко автономни безжични мрежи, генерират се от Координатора на Главната мрежа и реализират междумрежов информационен трафик.

 

Всяка от безжичните мрежи има свой уникален адрес, както следва:

 

- главната безжична мрежа има адрес 0;

- останалите безжични мрежи се адресират последователно 1,2, 3, ....

 

Външните команди имат следния синтаксис:

 

<N: на безжичната мрежа>:<вътрешна команда><CR>

 

Изпълнението на външна команда се извършва на няколко стъпки:

 

1. Координаторът на Главната мрежа извежда по RS485 кода на командата;

2.   Координаторът на адресираната мрежа получава този код;

3.  Координаторът на адресираната мрежа отделя тикста, обозначен като <вътрешна команда> и го подава към своята мрежа, като вътрешна команда по съответния радиоканал;

4.   След изпълнението на командата, Координаторът на адресираната мрежа получава рапорт, който се изпраща по RS485 обратно към Координаторът на Главната мрежа. Рапортът е терминиран с NULL. Той може да включва 0 или повече стринга, завършващи с CR.

 

Когато адреса на безжичната мрежа е 0, не се извършва комуникация по RS485, а направо се формира вътрешна команда по радиоканала на Главната безжична мрежа.

 

Вътрешните команди имат общ формат:

 

GGG_COMMAND:N=X,Y,Z

На Фиг.1. – Фиг.6. са показани основните параметри и описание на различните вътрешни команди.

 

Тип

Група (GGG)

Функция

Gateway

CMD

Контрол на Координатора .

List

LST

Получаване на информация и поддържане на Базата на данните на Коорденатора за регистрираните мрежови уктройства.

Node

NDE

Работа с конкретно мрежово устройство.

Network

NWK

Работа с всички устройства от безжичната мрежа.

 

Фиг.1. Основни групи вътрешни команди.

 

N, X, Y, Z са десетични числа, представящи стойности на използвани в командата системни променливи (Фиг.23.).

 

Име на променлива

Стойност

Функция

H

0-23

Час

M

0-59

Минута

N

0-254

Индекс на мрежово устройство в Базата данни на Координатора.

V

0-65535

16-битов стойност.

X

0 or 1

Логическа константа (изключено, включено).

Ch

11-26

Номер на радиоканал.

 

Фиг.2. Системни променливи като параметри на вътрешните команди.

 

 

Команда

Функции

CMD_ASSOC=X

Включване (X=1) или изключване (X=0) на разрешение за асоцииране към безжичната локална мрежа, поддържана от Координатора.

CMD_CANCEL

Прекратяване на изпълняваща се в момента команда, стартирана от Координатора.

CMD_CLEAR_STATS

Нулиране на записите със статистическа информация за работата на устройствата от безжичната мрежа.

CMD_GET_STATS

Получаване и визуализация на всички пакети към всички мрежови устройства, деца на Координатора, изпращани от последния

( включително и загубените по време на комуникацията).

CMD_HELLO

Тестване комуникацията с Координатора (последния трябва да отговори с рапорт „hello”).

CMD_HIDE_MESS=X

Скриване (X=1) или показване (X=0) на всички статусни съобщения, изпращани от мрежовите устройства и получени от Координатора.

CMD_ROUTING

Визуализация на таблицата съхранявана в Координатора (Routing table) за достъпа до различните мрежови устройства и взаимо- връзките(йерархията) между тях. Тази таблица определя и възможните пътища на пакетите по време на комуникацията в мрежата.

Пример:

Child --------- Router table

R 00013651

0000002B

000000AD

R 0005DBCB

000D88E0

000583FF

CMD_SAVE

Съхраняване в Координаторната Flash памет на мрежовия контекст в момента. Този контекст включва цялата информация, необходима на Координатора да възстанови мрежата, без да е нужно да се преминава през стандартната процедура на търсене, използвана при създаване на нова мрежа.

Тази операция се активира автоматично, всеки път когато някое мрежово устройство се включи в(асоциира с) мрежата или я напусне.

CMD_SW_RESET

Изпълнение на софтуерен ресет на Координатора.

CMD_TEST=Time

Стартиране на Автоматичен тест на мрежата. Тази команда се използва, когато устройствата от мрежата се емулират от „донгъли”. Последните имат светодиоди, управлявани по време на теста. Стартирането на командата предизвиква тяхното запалване за определено време, което определя яркостта на светенето им ( dimming).e.

Time = test cycle period, in minutes.

Time = 0 switches off the test mode.

Всеки светодиод свети последователно от яркост 0 до максимална яркост(255) и обратно, като Координаторът последователно и в съответствие със списъка на регистрираните мрежови устройства изпраща индивидуално съобщение на всяко от тях и му указва текущата осветеност, която то трябва да постигне. След преключване на периода на цикъла, съответното мрежово устройство изпраща на Координатора статистическа информация, включваща(пример):

 

Node MAC           Sent - Received (hrs) (min)

0        03010ADC   360-30

1        0005BDC6   360-30

2        000000AD   360-30

3        000010C4    360-30

 

След преключване на съобщението цикълът се повтаря. Този тест е удобен за проверка на трафика(реалния) по мрежата и нейната жизненост.

 

CMD_TIMEOUT:V1,V2,V3

Задаване на времеви ограничения и граници (timeouts/limits):

V1: интервал между пакетите (в милисекунди).

V2: максимално закъснение допустимо за отговор на пакет (в милисекунди).

V3: максимален брой опити при неуспешно изпращане на пакет.

Когато Координаторът изпълнява команда за мрежата

( предшествана с NWK_), той изпраща индивидуална команда за всяко устройство от списъка на регистрираните мрежови устройства, започвайки от НОД 0 и продължавайки до последнеят. Действията на Координатора включват:

1) Изпращане на индивидуален пакет към дадения НОД и чакане на отговор от него.

Ако няма отговор за време V2, пакетът се изпраща  отново, докато броят на изпращанията достигне V3.

2) Изчаква се време (V1).

3) Изпраща се пакет към следващия НОД от списъка на регистрираните устройства в мрежата.

 

CMD_VISUALISE

Визуализиране на структурата на мрежата и нейната дълбочина (пример):

00013651

 0000002B

 000000AD

0005DBCB

000D88E0

000583FF

 

 

Фиг. 3. Команди, специфични за Координатора и управляващи само Координатора.

 

Команда

Функции

NDE_ASSOC:N=X

Разрешаване асоцииране (X=1) или забрана на асоциирането (X=0) за Рутер с индекс N. Управлява се възможността на Рутера да включва като свои деца външни мрежови устройства (Рутери).

NDE_GET_PARAM=N

Визуализира параметрите на даден Рутер (N), записани в неговата FLASH памет.

NDE_LEAVE=N

Заявка към даден Рутер (N) да напусне мрежата. След напускането си той автоматично започва да прави опит за нова асоциация.

NDE_RESET=N

Заявка за софтуерен ресет на Рутер (N).

NDE_TRACE=N

Трасиране на пътя от Координатора до даден Рутер(N) в съответствие със съществуващата Routing table в Координатора .

 

 

Фиг.4. Команди, предназначени за конкретен НОД (Рутер) от мрежата,

указан с индекс от съответната База данни.

 

 

Команда

Функции

LST_GET

Визуализация на списъка на всички регистрирани НОД-ове(Рутери) в безжичната мрежа(пример):

LIST

0 000010C4 1 03010ADC 2 000000AD 3 0005BDC6

LST_DELETE

Изтриване на всички регистрирани НОД-ове от списъка. Когато  асоцииран в мрежата НОД изпрати съобщение към Координатора, последният го пре-регистрира и записва в списъка.

Пример:

New node 0 000010C4 Router Ver 1

LST_DISABLE

Маркиране на всички НОД-ове от мрежата като забранени. Към тези НОД-ове няма да се изпращат мрежови команди докато не се получи заявка от тях за нова асоциация към мрежата. След като се изпълни успешно заявката, те се регистрират и добавят към списъка (пример):

Rejoined 0

LST_ENABLE

Маркиране на всички НОД-ве от списъка, като разрешени. . Към тези НОД-ове ще се изпращат мрежови команди .

 

 

Фиг.5. Команди за работа със Базата данни, поддържана от Координатора за

 регистрираните НОД-ове на съответната безжична мрежа.

 

 

Команда

Функции

NWK_ASSOC=X

Разрешава асоцииране (X=1) или забранява асоцииране (X=0) за всички Рутери на мрежата.

NWK_CHANNEL=Ch

Команда за смяна на радиоканала (Ch) за всички НОД-ове на мрежата.

NWK_CLEAR_STATS

Нулиране на статистическите данни, събирани в различните НОД-ове на мрежата.

NWK_DISCOVER

Заявка към всички НОД-ове от мрежата да изпратят статусно съобщение към Координатора.

NWK_GET_PARAM

Заявка за получаване на текущите стойности на параметрите на всички НОД-ове.

NWK_LEAVE

Заявка към всички НОД-ове от мрежата да я напуснат

NWK_LOGGER=Time

Задаване на времето в секунди (Time) между изпращане на статусни съобщения към Координатора от НОД-овете на мрежата.

NWK_MAXFAILED=X

Задаване на допустимия брой (X) изпратени неуспешно пакети от Рутер към своя родител, преди първият да реши да напусне мрежата и да премине към нов опит за асоцииране с нея.

􀁹  Голяма стойност на този параметър позволява реализиране на висок мрежов трафик но лошо детектиране на шум и бавна реакциия.

􀁹 Ниска стойност на този параметър намалява времето за възстановяване на мрежата при повреда на комуникацията.

 

X трябва да е по-голям от  1.

NWK_PING=Time

Задава времето (Time) в секунди между генерацията на съобщения  pings” от детето към родителя.

􀁹 Голяма стойност на този параметър ще ускори мрежовия трафик, но ще увеличи времето за възстановяване на мрежата при повреда на комуникацията.

􀁹 Малка стойност на този параметър ще намали времето за самовъзстановяване на мрежата при комуникационна повреда, но ще увеличи служебния трафик за сметка на информационния

 

Ако Time е 0, ping” съобщенията се забраняват.

NWK_RESET

Заявка за софтуерен ресет на всички НОД-ове на мрежата.

NWK_RESET_PARAMS

Нулира всички текущи параметри, записани в Flash на НОД-овете и преминава към техните подразбиращи се стойности.

NWK_SET_SHAPE

Форсира формирне на мрежа с „дълга и тънка” топология. Рутерите се свързват последователно във всеки един от два клона.След обновяване на параметрите на всички НОД-ове, мрежата трябва да получи софтуерен  или апаратен ресет за да се реформира и построи новата тополотечна схема.

 

За възстановяване на автоматично- оптимизираната топология на мрежата е необходимо изпълнение на командата NWK_RESET_PARAMS.

NWK_TIME_SET=H:M

Задаване на системното време на НОД-овете на мрежата в часове (H) и минути (M) – секундите се приемат за 0. Всички НОД-ове се синхронизират едновременно.

 

Фиг.6. Мрежови команди, предназначени за всички НОД-ове.

 

 

4. Семантичен език

 

Семантичният език е програмно средство за управление и комуникация на Активните мрежови устройства, включени като НОД-ове в някоя от локалните безжични мрежи на Технологичния слой.

Основна задача на Семантичния език е да осигури възможност за оператора на ГОС да задава режимите на работа, управлява програмно и наблюдава в „реално време” технологичните параметри на външните обекти контролирани от Активните мрежови устройства.

Особеност на реализацията на БПМИО е възможността всяко Активно мрежово устройство да функционира като автономно- т.е. невключено в Технологичен слой.В този случай се използва външен GPRS модем, свързан жично към устройството (като основен интерфейс) и Семантичния език (като средство за програмиране) за параметризиране и въвеждане на приложната програма ( с помощта на GPRS или безжичен Интернет).

Съществува и опция за включване към всяко Активно мрежово устройство на ЛОС(която дублира частично работата на ГОС) за тестване и настройка на устройството. В този случай като основен интерфейс се използва вграден USB канал, поддържан от Активното мрежово устройство и USB порта на ЛОС.

Програмната реализация  на инфраструктурата, поддържаща работа с Семантичния език трябва да осегурява функционирането на всеки от описаните три режима.

 

4.1. Софтуерна архитектура на Активните мрежови устройства.

 

Активните мрежови устройства имат обща софтуерна архитектура, която определя определя в голяма степен синтаксиса и семантиката на командите на Семантичния език. Тази архитектура се базира на свойствата на въведените нови класове програмни обекти –„ външни драйверни програми” и „разширени функции”.За наименование на техните реализации ( т.е. създаване в адресното пространство на JN5148 на работни копия на тези обекти, заедно с инициализация на съответните структури и статични променливи) се използва термина програмни модули.

 

4.1.1.  Външни драйверни програми и разширени функции.

 

Микроконтролерът JN5148 има ограничена вътрешна памет (128 Kb). За да се изпълнят изискванията на различни приложения, тя е разширена чрез енерго-независима S25FL512SAGMFI011 с обем 64 MB от тип FLASH, достъпна по SPI интерфейс.

Външната памет има файлова организация, като всеки от файловете е с размер по-малък от 8 K. Във вътрешната памет на микроконтролера се резервират два линейни буфера с размер по 8 K всеки, за съхраняване на програмни модули за двата типа програмни обекти- разширена функция и външни драйверни програми .

В даден момент е възможно активиране на една разширена функция (заредена в съответния линеен буфер) и една или повече външни драйверни програми ( заредени в съответния линеен буфер).

Външните драйверни програми и разширените функции се прехвърлят в съответни линейни буфери (т.е. създават се програмни модули), при наличие на заявка от функции на потребителското приложение- т.е. когато приложните програми изискват обновяваването на буферите, поради необходимост от изпълнение на съответен програмен модул . Модулите съдържат предварително компилиран програмен код (в него са включени копия на всички функции, към които има обръщение). Фърмуерът на Активните мрежови устройства предоставя методи за достъп на потребителските приложения до статуса, параметрите и резултатите от изпълнениетс на програмните модули.

         Външните драйверни програми и разширени функции имат обща структура. Двата типа програмни модули се идентифицират с уникални имена ( същите се използват като имена на файловете, съдържащи програмния код на съответните обекти, във  външната FLASH памет). Описаните програмни модули( външни драйверни програми и разширени функции) се реализират чрез Машини на състоянията ( State machine). Всички работни динамични и статични променливи ( необходимите входни и/или изходни буфери за данни и резултати, статусни променливи, пойнтери и броячи) са включени в тялото на модулите и след генерацията на последните (в съответните линейни буфери) са позиционирани в адресното пространство на съответния  буфер.

Различните драйверни програми и разширени функции реализират «собствени»  Машини на състоянията, включени в тялото на модулите. Това им осигурява възможности за индивидуална интерпретация на входните параметри и резултати. Важна особеност на програмните модули ( на външните драйверни програми и разширени функции) е че те работят като синхронни програмни устройства. За целта в тялото на модулите е включен параметър, наречен Time_scan. Той определя интервал, през който фърмуерът  на  Активните мрежови устройства стартира изпълнението на Машината на състоянията на съответния модул. Контролира се целостта и валидността на информацията включена в модулите. Пълен контрол се извършва само при начално зареждане в линейния буфер. При следващи обращения към програмния модул се тества само валидността на заглавната контролна сума, тъй като в тялото на модула са включени полета за данни, които динамично се променят.

 

 

N: байт

Употреба

0

Синхро-Байтове    (87 CD).

1

2

Дължина на Модула.

3

4

Име на модула

(отместване).

5

6

Тип на модула  (D, X).

7

Заглавна контролна сума (0-6).

8

Машина на състоянието

(отместване).

9

10

Статус.

11

Време за сканиране x 10ms

(Time_scan).

12

Входен буфер- дължина.

13

Входен буфер (отместване).

14

15

Изходен буфер – дължина.

16

Изходен буфер

(отместване).

17

. . .

. . .

. . .

. . .

n-2

CRC 16. На целия модул (0- (n-3)).

n-1

 

Фиг.7. Структура на програмния модул на външна

драйверна програма или разширена функция.

 

От Фиг.7. се вижда, че външните драйверни програми и разширени функции работят изцяло самостоятелно, независимо от фърмуера на JN5148. Те се проектират, компилират и зареждат в енергонезависимата 64MB външна FLASH памет на Активното мрежово устройство, извън изпълнението на приложната програма (Off line) от външен компютър, а съответните програмни модули се генерират в реално време, в рамките и според изискванията на приложенията.

 

4.1.2.   Вътрешни драйверни програми

 

Вътрешните драйверни програми са част от фърмуера на Активното мрежово устройство. Те са предназначени за обработка на прекъсвания, генерирани от външни и вътрешни източници. Тези програми се включват в потребителското програмно осигуряване и след инициализация се регистрират като стандартни драйвери на Стека на JN5148.

Всяко Активно мрежово устройство притежава следните   вътрешни драйверни програми:

 

-          Системен времеви цикъл.

 

 На базата на апаратен таймер, всеки 10 ms се генерира прекъсване, което се обработва от тази програма. Това прекъсване е база за отчитане на интервали при синхронно изпълняваните операции (управление на работата с външните драйверни програми и разширени функции).

 

-          Серийни комуникации- Com0, Com1.

 

 Тези драйвери са предназначени за обслужване на входно/изходни информационни потоци (от USB и RS 232 C, включен към GPRS T900) към двата вградени в JN5148 UART0 и UART1 . Те поддържат индивидуални кръгови буфери, от които след първична обработка се отделят  текстови съобщения( команди), подлежащи на последваща интерпретация от фърмуера на JN5148 или извеждане към външните устройства. Серийните комуникации поддържат алтернативни канали на Технологичния слой, по отношение на командите от Семантичния език, т.е. когато Активно мрежово устройство функционира извън Технологичния слой, тези канали могат да формират входни командни съобщения и да изведат съответни рапорти за изпълнение на командите по същия начин, както това се извършва чрез безжичната мрежа. Общият принцип, реализиран при комуникациите е, че каналът по който се осъществява извеждане на информационно съобщение(рапорот) е този по който е получено входното (командно) съобщение, иницииращо изпълнение на команда от Семантичния език. Поради спецификата на външните устройства включени към Серийните комуникации( USB, GPRS модем T900), по отношение на представянето на данните и динамиката на транзакциите, към вътрешните драйвери Com0 и Com1 са включени синхронни управляващи програмни средства, реализирани като Машини на състоянията. Те реализират първична обработка на буферите, като раз- капсолират постъпилите записи от външните устройства в информационни съобщения, капсолират информационните съобщения в записи за извеждане по съответния канал и поддържат съответните комуникационни протоколи. Тези програмни средства са част от програмни модули на Външните драйверни програми, използвани за реализация на съответния комуникационен интерфейс (т.е. директорията на Външните драйверни програми във външната FLASH памет на Активното мрежово устройство съдържа файлове с пре- компилирани Външни драйверни програми за всеки тип комуникация, които може да реализира устройството).

 

-          Вътрешно модулна комуникация –Spi1,Spi2.

 

 Тези драйвери осигуряват комуникация между JN5148 и вградени в Активното мрежово устройство на функционални блокове, достъпни по SPI интерфейс (Spi1 поддържа комуникация с S25FL512SAGMFI011 (64 Mb FLASH) , Spi2 – с фронт-енд процесор  ATxmega16/128A4U).

Вътрешно модулната комуникация предполага, че JN5148 винаги функционира като устройство от тип „Master”, докато S25FL512SAGMFI011 и ATxmega16/128A4U като „Slave”.

 

В конкретната реализация на Вътрешно модулната комуникация, дължината на обменяните блокове данни е 32 бита, а скоростта на обмен 16 Mb/s. След всеки обмен се формира сигнал за прекъсване, който се използва за активиране на драйверите (Spi1,Spi2).

 

Последните работят в две фази, които циклично се сменят:

 

 

-          Фаза 1.

 

-          MASTER се инициализира за извеждане на 32 битово съобщение в режим на прекъсване.

-          Извежда поле от командата (32 бита) към SLAVE. По полученото прекъсване драйверът разбира, че командата е изпратена. Игнорират се входящите битове изпратени от SLAVE към MASTER.

-          Операцията се повтаря, до извеждане на цялата информация, включена в командата към SLAVE ;

 

 

 

-          Фаза 2.

 

-          MASTER се инициализира за работа в CONTINUE режим. В този режим автоматично се генерира „празна - Idle” 32 битова команда.

-          След получаване на прекъсване, специална функция прочита входящите от SLAVE (32 бита). Тази операция се повтаря до досигане на броя битове, които се очакват в качеството на отговор от страна на SLAVE на подадената команда. След това режимът CONTINUE се отменя.

 

Стартирането на комуникацията и превключването на фазите се постига чрез използване на синхронни управляващи програмни средства, реализирани като Машини на състоянията( по една за всеки от драйверите Spi1 и Spi2).

 

 

4.1.3 Използване на фронт-енд процесори.

 

При проектирането на някои от Активните мрежови устройства се използват вградени в модулите фронт-енд процесори. Те употребяват микроконтролер ATxmega16/128A4U, в качеството на МCU (Microcontroller Control Unit). На базата на поддържаните от ATxmega16/128A4U апаратни средства и специализиран софтуер, разработен за специфични приложения, те могат да бъдат разглежзани като разширения на ресурсите на JN5148. Използването на фронт-енд процесорите позволява реализацията на управление и мониторинг на външни обекти, имащи критични по отношене на бързодействието параметри, а съшо така поддръжката на специализирани протоколи за работа с матистрали базирани на различни интерфейси.

Когато се използва фронт-енд процесор, той реализира собствен работен цикъл (включващ обработка на входове от сензори, активиране на изходи, поддържане на външни интерфейси) като автономно устройство.

Връзката между ATxmega16/128A4U и JN5148 се реализира по SPI, посредством драйверът за вътрешно- модулна комуникация Spi2. При получаване от Spi2 на съответна команда, фронт-енд процесорът се настройва към зададените параметри, а в качеството на отговор изпраща рапорт за състоянието си, извършените измервания и натрупаната до момента информация за обекта на управление и наблюдение.

 

Фронт-енд процесорите за различните Активни мрежови устройства са както следва:

 

-          Фронт-енд процесор на Активно мрежово устройство, функциониращо като Координатор на локална мрежа-фронт-енд процесорът изпълнява ролята на посредник между жичната между-мрежова RS485 магистрала и безжичната автономна мрежа. В това си качество, той е свързан по интерфейс SPI (поддържан от драйвер Spi2) към JN5148, функциониращ като Координатор на автономна безжична мрежа. Като устройство, включено към RS485, той използва уникален адрес, съвпадащ с адреса на мрежата към която е кооптиран. При получаване на съобщение по магистрала RS485

- (съобщението се изпраща от Координаторът на главната мрежа, посредством куплирания към него фронт-енд процесор) съдържащо адрес, съвпадащ с адреса на мрежата, се извършват следните действия:

1. Фронт-енд процесорът разкапсулира съобщението( то трябва да е външна команда) и извлича вмъкнатата в него вътрешна команда;

2. Изпраща вътрешната команда чрез драйвера Spi2 по вътрешномодулния интерфейс SPI към JN5148;

3.  JN5148 излъчва вътрешната команда в своята мрежа по използвания радиоканал;

4.  Командата се приема и интерпретира в рамките на мрежата;

5. След изпълнението на командата Координаторът получава по радиоканала съответен рапорт, който препраща към фронт-енд процесора чрез драйвер Spi2 по SPI интерфейс;

6. Фронт- енд процесорът получава рапорта и го препраща по RS485 магистралата към инициаторът на външната команда ( фронт- енд процесора, асоцииран с Координатора на Главната мрежа), в качеството на отговор на командата.

 

-          Фронт-енд процесорът на Активното мрежово устройство от тип SEN100+ - той обслужва вътрешните сензори на модула( влага, температура), външните сензори (1-WIRE термометри DS18B20 по едножична магистрала, отдалечени от модула), извършва четене на стойностите на цифровите входове, задаване стойности на галванично развързаните изходи, снемане на изображение от видеокамерата. JN5148 изпраща команда посредством Spi2, включваща заявка за различните параметри подлежащи на измерване, след което фронт-енд процесорът изпълнява заявката и изпраща съответната информация към JN5148, като отговор(рапорт) за командата;

 

-          Фронт-енд процесорът на Активното мрежово устройство от тип SERV100+ -той извършва изчислителни процедури, свързани с времеконсумативни алгоритми. Командата, подадена чрез Spi2 съдържа входните аргументи. След преключване се изпраща рапорт към JN5148 с резултата от изчисленията;

 

-          Фронт-енд процесорът на Активното мрежово устройство от тип CAN100+ - той реализира устройство , включено в CAN магистрала, осигурява достъп до тази магистрала и може да функционира като пасивно или активно устройство върху магистралата. Командата съдържа параметри за извеждане на съобщение върху магистралата. Изпълнението на командата и статуса на магистралата се извеждат като рапорт по Spi2, към JN5148.

 

4.2. Средства за обработка на съобщения и команди на Технологичния слой.

 

Всяко Активно мрежово устройство включва група от софтуерни средства за обработка на мрежови съобщения, транспортирани по Технологичния слой. Тези средства са реализирани като част от фърмуера на JN5148 ( Jenie стек, vJenie_CbStackMgmtEvent(), vJenie_CbStackDataEvent() ), част от потребителския софтуер (Технологичен протокол) и набор от програмни инструменти (филтри, кръгови буфери, парсери).

На Фиг. 8. е показано функционирането на различни програмни средства, предназначени за  обработка на съобщения. От фигурата се вижда, че потребителският софтуер (в лявата половина) е задължен да подготви и регистрира функции, които Стекът Jenie ще използва при появата на различни събития (Индикации) в безжичната мрежа. Всеки път, когато такова събитие е налице, Стекът се обръща към съответна функция, изпращайки й като входен параметър информация за конкретния причинител на събитието и структура от данни (осигуряваща възможност за обработка на последното от страна на потребителска програма). След изпълнението на функцията, управлението се връща на Стека. Максималното време за задържане на управлението в потребителската функция (обслужваща Индикация) не трябва да надвишава 10 ms. Когато липсват събития ( Idle State), стекът активира периодично (всеки 100 ms) vJenie_CbMain() (потребителска функция, която също му връща управлението след изпълнението си). Тя изпълнява потребителския таск и практически представлява потребителското приложение. Времевите ограничения наложени на тази функция налагат тя  да бъде проектирана като Машина на състоянията.

В vJenie_CbMain() са реализирани повече от една независими Машини на състоянието, отговорни за различни видове обработки. Тези машини се активират последователно, като управлението на всяка от тях се извършва от функции обработващи Индикациите или други потребителски функции, чрез променливи на състоянието, указващи поредните стъпки, подлежащи на изпълнение.След активиране на последната от Машините на състоянията включени в тялото на vJenie_CbMain() и изпълнението на нейната текущ стъпка, управлението се предава на стека Jenie.

 

Съобщенията използвани за реализация на Технологичния протокол и Семантичния език се приемат от потребителската програма с помощта на функция vJenie_CbStackDataEvent(). Тази функция, подготвена от потребителя, получава полета (Терми) с дължина до 80 байта, записва ги в кръгов Входен буфер и стартира работата на други програмни средства за обработка на данните ( те обикновено са включени в тялото на vJenie_CbMain() и реализирани като Машини на състоянието).

Термите се разполагат изцяло в дадено информационно съобщение на Технологичния слой. Всяко информационно съобщение съдържа един или няколко терми.

Командите на Технологичния протокол и Семантичния език са информационни структури, включващи няколко терми. При получаване на пореден терм се активира програма «парсинг», която обработва Входния буфер. Когато се открие текстова последователност, представяща команда, последната се записва в кръгов Буфер на получените команди, като се запомня канала по който е получена( Технологичния слой).  Този буфер е общ за всички източници на команди- Технологичния слой и Серийните комуникации.

Когато Буферът на получените команди съдържа текст на приета команда се активира Интерпретаторът на командите, който изпълнява последната. Изпълнението на командите следва реда на постъпването им.

След изпълнението на командата се генерира рапорт за резултата, който се капсулира в последователност от терми и извежда чрез Технологичния слой към Координатора на локалната мрежа с помощта на функцията на Jenie  eJenie_SendData().

 

4.3. Команди на Семантичния език.

 

Семантичният език включва команди осигуряващи достъпа до информационната структура на различните разширени функции и външни драйверни програми поддържани от Активните мрежови устройства. Синтаксиса на тези команди е същия, като на командите на Технологичния протокол. Отново се използват външни и вътрешни Семантични команди, като вътрешните се включват в тялото на външните. Същият е и механизма, по който след постъпване в Координатор на някоя автономна безжична мрежа, последния извлича от външна Семантична команда на вътрешна такава и я транспортира по безжичен начин към НОД-овете на тази мрежа.

Основното различие е в начините на интерпретация на Семантичните команди. Докато командите на Технологичния протокол се изпълняват от Интерпретаторът на командите директно, Семантичните команди се интерпретират от вградената логика в разширените функции и външни драйверни програми, които са активни в дадения момент. Интерпретаторът на командите участва в този процес само като регистратор на наличието на постъпила Семантична команда и веднага предава управлението на вградената в нея Машина на състоянията за последваща обработка(конфигурирайки статичните променливи управляващи тази машина). Тези команди взаимодействат с полета от структурата на програмния модул (Фиг. 7.), без да отчитат конкретната семантика( тя се определя от съответните разширени функции и външни драйвери).

 

Външните Семантични команди имат следния синтаксис:

 

<N: на безжичната мрежа>:<вътрешна Семантична команда><CR>

 

Изпълнението на външна Семантична команда се извършва на няколко стъпки:

 

1. Координаторът на Главната безжична мрежа извежда по RS485 кода на командата;

2.   Координаторът на адресираната мрежа получава този код;

3.  Координаторът на адресираната мрежа отделя кода, обозначен като <вътрешна Семантична команда> и го подава към своята мрежа, като вътрешна Семантична команда по съответния радиоканал;

4.   След изпълнението на командата, Координаторът на адресираната мрежа получава рапорт, който се изпраща по RS485 обратно към Координатора на Главната безжична мрежа. Рапортът е терминиран с NULL. Той може да включва 0 или повече стринга, завършващи с CR.

 

Когато адреса на безжичната мрежа е 0, не се извършва извеждане по RS485 и направо се формира вътрешна Семантична команда по радиоканала на Главната безжична мрежа.

 

Вътрешните Семантични команди имат общ формат:

 

SEM_COMMAND:N=X,Y,Z

N e десетично число, представящо индекс (пореден номер) на Активното мрежово устройство в Базата данни за регистрирани НОД-ове на Координатора. То се използва като адрес на устройството.

X е текстови стринг, съдържащ името (съвпадащо с името на файл в външната FLASH) на съответна Разширена функция или Външна драйверна програма.

Y е текстови стринг (определящ входните параметри на разширената функция или външната драйверна програма).

Z е десетично число (определящ вида на обработката или вътрешен специфичен параметър).

Съществуват две групи Семантични команди. Те са имплементирани във всички разширени функции и външни драйвери. Поддържат се от фърмуера на всички Активни мрежови устройства.

 

-          Основни Семантични команди.

 

 

Команда

Функции

SEM_EDRV:N=X,Y,Z

Обръщение към Активно мрежово устройство с индекс N за работа с Външна драйверна програма с име X.

Yсъдържание на входния буфер.

Z – режим на работа:

0 – инициализация;

1 – получаване на статусна информация;

2 – задаване на статусна информация (от поле Y);

3 – получаване на данните от изходния буфер;

4 -  изпращане на данни във входния буфер (от поле Y).

SEM_XFUN:N= X,Y,Z

Обръщение към Активно мрежово устройство с индекс N за работа с разширена функция с име X.

Yсъдържание на входния буфер.

Z – режим на работа:

0 – инициализация;

1 – получаване на статусна информация;

2 – задаване на статусна информация(от поле Y);

3 – получаване на данните от изходния буфер;

4 -  изпращане на данни във входния буфер( от поле Y).

 

Фиг. 9. Вътрешни Семантични команди от група

Основни Семантични команди.

 

 

-          Помощни Семантични команди.

 

 

Команда

Функции

SEM_HEDRV:N=X,Y,Z

Обръщение към Активно мрежово устройство с индекс N за работа с Външна драйверна програма с име X. Машината на състоянията в начално състояние - неактивна (0).

Yсъдържание на входния буфер.

Z – режим на работа:

0 – инициализация на входния буфер. Машината на състоянията в начално състояние- неактивна(0);

1 – получаване на статусна информация Машината на състоянията в начално състояние- неактивна(0);

2 – задаване на статусна информация(от поле Y). Машината на състоянията в начално състояние- неактивна(0);

3 – получаване на данните от изходния буфер. Машината на състоянията в начално състояние- неактивна(0);

4 -  изпращане на данни във входния буфер( от поле Y). Машината на състоянията в начално състояние- неактивна(0).

SEM_HXFUN:N= X,Y,Z

Обръщение към Активно мрежово устройство с индекс N за работа с разширена функция с име X. Машината на състоянията в начално състояние- неактивна(0).

Yсъдържание на входния буфер.

Z – режим на работа:

0 – инициализация на входния буфер. Машината на състоянията в начално състояние- неактивна(0);

1 – получаване на статусна информация Машината на състоянията в начално състояние- неактивна(0);

2 – задаване на статусна информация(от поле Y). Машината на състоянията в начално състояние- неактивна(0);

3 – получаване на данните от изходния буфер. Машината на състоянията в начално състояние- неактивна(0);

4 -  изпращане на данни във входния буфер( от поле Y). Машината на състоянията в начално състояние- неактивна(0).

SEM_LEDRV:N= ,,Y,Z

Връща списък с имена, съдържащи текст Y (ако текстовия стринг е празен, списъка включва всички имена) на Външни драйверни програми, поддържани от Активно мрежово устройство с индекс N. Ако Z=0, се търси външната памет, в противен случай (Z>=0) само програмния буфер за заредени Външни драйверни програми.

SEM_LXFUN:N= X,Y,Z

Връща списък с имена, съдържащи текст Y(ако текстовия стринг е празен, списъка включва всички имена) на Разширени функции, поддържани от Активно мрежово устройство с индекс N. Ако Z=0, се търси външната памет, в противен случай (Z>=0) само програмния буфер за заредени разширени функции.

SEM_ZEDRV:N=X ,,

Изтрива от програмния буфер за заредени Външни драйверни програми, поддържан от Активно мрежово устройство с индекс N, на Външна драйверна програма с име X.

SEM_ZEFUN:N=,,

Изтрива от програмния буфер за заредени Разширени функции, поддържан от Активно мрежово устройство с индекс N, на Разширена функция с име X.

SEM_LDE :N=X,,

Зарежда Външна драйверна програма като файл в директорията на Външните драйверни програми в FLASH.

SEM_LDX :N=X,,

Зарежда Разширена функция като файл в директорията на Разширените функции в FLASH.

 

Фиг. 10. Вътрешни Семантични команди от група

Помощни Семантични команди.

 

След изпълнението на вътрешната Семантична команда, постъпила по канала, реализиран чрез Технологичния слой, последната генерира рапорт за резултата, който се капсулира в последователност от терми и извежда чрез Технологичния слой към Координатора на локалната мрежа с помощта на функцията на Jenie  eJenie_SendData(). Във случая, когато Семантична команда е постъпила по каналите на Серийната комуникация, нейния рапорт се капсулира в записи, съответни на на изискванията на външното устройство поддържащо тези канали и извежда по тях, използвайки съответен комуникационен драйвер (USB, GPRS). Спазва се принципа, че изпращача на Семантичната команда е получател на съответния рапорт генериран от нея.

 

            4.4. Интерпретатор на съобщенията в Технологичния слой.

 

            Съобщенията на Технологичния слой се интерпретират по различни начини:

 

-          Мрежовите съобщения в рамките на автономна безжична мрежа се генерират и обработват от Стека (Jenie) включен в всеки един от мрежовите НОД-ове. В този смисъл Jenie се явява техен интерпретатор;

-          Външните команди ( на Технологичния протокол или Семантичния език) се инициират от Координаторът на Главната мрежа и са насочени към Координатора на някоя от автономните мрежи (предполага се че външната команда е предназначена за автономна безжична мрежа, различна от Главната). Тези команди се разпространяват по жичен интерфейс RS 485. Този интерфейс реализира логическа двупосочна комуникация по 2-жична магистрала, между устройство от тип - MASTER и устройство от тип Slave (включено в група от такива устройства, инсталирани върху магистралата). Всяко от устройствата има уникален адрес ( в разглеждания случай той съвпада с адреса на автономната безжична мрежа).В тялото на външната команда е вмъкнат  адреса на мрежата получател (адрес на фронт-енд процесор на Координатор,  позициониран върху магистралата RS 485). Всички устройства, включени към RS485 магистралата, получават тези команди. Активира се само това устройство (фронт–енд процесор, реализиран чрез ATxmega16/128A4U) чийто адрес съвпада с този, вграден в командата. След активирането на фронт-енд процесорът, последния извлича от тялото на външната команда вградената в нея вътрешна и я изпраща по интерфейс  Spi2 към куплирания с него JN5148 (функциониращ, като мрежово устрайство от тип  Координатор на автономната мрежа). Последният приема командата и я интерпретира(използвайки интерпретаторите на вътрешни команди) като «вътрешн» за своята мрежа. След изпълнението на тази команда Координаторът на автономната мрежа получава съответен рапорт по радиоканала на мрежата, който  препраща чрез  своя Spi2 - интерфейс към куплирания към него фронт-енд процесор. Фронт-енд процесорът трансформира рапорта в съобщение за RS 485 интерфейс, с адресант Координатора на Главната мрежа и изпраща това съобщение, в качеството на отговор на външната команда;

-          Вътрешните команди на Технологичния протокол или Семантичния език се формират от Координатор на Автономната безжична мрежа и се разпространяват по радиоканал, локално в тази мрежа. Те се интерпретират по различен начин, в зависимост от това дали са команди на Технологичния протокол или на Семантичния език. В първият случай, те се изпълняват от спезиализирана програма, вградена в фърмуера на всяко Активно мрежово устройство- Интерпретатор на командите. Този интерпретатор определя групата към която спада дадената команда и формира комуникация със един или повече НОД-ове от локалната мрежа, в съответствие с семантиката на командата. Тази комуникация се реализира чрез използване на вградените в Jenie функции.В крайната фаза на изпълнението на вътрешна команда на Технологичния протокол, Координаторът на автономната безжична мрежа получава рапорт, специфичен за различните вътрешни команди.

-          Когато се изпълнява вътрешна команда на Семантичния език, тя отново се обработва от Интерпретатора на командите.Ако тази команда спада към групата Помощни Семантични команди, действията на тази програма са идентични с тези при обработка на вътрешните команди на Технологичния протокол, отчитайки спецификата на действията породени от изпълнението на вътрешната Семантична команда.

Когато вътрешната команда спада към групата Основни Семантични команди, Интерпретаторът на командите извършва подготвителни действия, свързани с проверката за наличност на съответните Външни драйверни програми или Разширени функции в работните им буфери (при необходимост се извършват операции за зареждане на съответните програмни модули) и придава управлението на вградените в програмните модули интерпретиращи програмни средства (инициализира работата на вградените в програмните модули Машини на състоянието). Интерпретацията на Основните Семантични команди се извършва изцяло на базата на вътрешните интерпретатори и зависи от спецификата на пре-програмираните използвани Външни драйверни програми и Разширени функции.

-          В крайната фаза на изпълнението на вътрешна команда на Технологечния протокол или Семантичния език, Координаторът на автономната безжична мрежа получава рапорт, специфичен за различните вътрешни команди.

 

 

4.5. Комуникационни драйвери.

 

            Комуникационните драйвери осигуряват реализацията на интерфейса на Активното мрежово устройство с външната клетъчна мрежа. Те са програмни модули, зависими от спецификата на апартната и програмна реализация на използваните безжични модеми. В настоящия проект се предполага използването на модем – терминали T900 на фирмата SIM. Те са проектирани на базата на специализиран вграден модул SIM900, осигуряващ различни начини на комуникация, базирани върху GPRS мрежата. T900 поддържа и генерира SMS, MMS, TCP/IP socket , HTTP, FTP и Безжичен Интернет. Той използва вграден интерфейс RS232 C (Rx, Tx, CTS, CTS, DTR) за връзка с устройства, работещи с него в качеството на комуникационно средство. Програмното управление на T900 се осъществява посредством набор от AT команди. Последните управляват апаратните модули на модема, конфигурират и активират различните работни режими на устройството, вдаимодействат с поддържаните Стекове и обработват постъпилите съобщения от външните мрежи.

            AT командите се генерират от Комуникационните драйвери на Активното мрежово устройство и изпращат чрез серийния интерфейс Com2 към входната порта на модем- терминала (посредством RS232 C ). Те имат специфечен синтаксис и са реализирани като текстови стрингове, терминирани с (CR ). Фърмуера на T900 включва парсер и програмни средства за тяхната интерпретация. След изпълнението на всяка AT команда, T900 изпраща текстово съобщение, което предоставя рапорт за нейното изпълнение и/или връща информация, свързана със семантиката на командата. Тези съобщения могат да бъдат синхронни или асинхронни(генерирани от външни събития). В първият случай те следват изпълнението на командата. Във втория случай те задават състоянията на статични системни променливи, които в последствие могат да се прочетат с съответни AT команди.

            Голямото разнообразие на режими на работа на T900, използването на ралични комуникационни интерфейси и разнородни AT команди, а също така възможността на Активното мрежово устройство да употребява повече от един канал за свързване с външни клиенти, предполагат реализацията на различни видове Комуникационни драйвери. В настоящия проект е направен опит за унификация на архитектурата на последните.

 

            Проектирането на Комуникационен драйвер предполага разработката на програмни средства, осигуряващи изпълнението на следните функции:

 

-          Въвеждане на входни съобщения, генерирани в режим на прекъсване, във входен буфер  и извеждане на текстови последователности (AT команди) от изходен буфер, синхронизирано с управляващите модемски сигнали на T900. Тази функция реализира драйверът Com2, предназначен за работа със серийната порта на модема;

-          Инициалицация на T900 за работа в конкретен режим. За целта е необходимо изпълнението на определен набор AT команди, зависими от избора на комуникационния канал;

-          Установяване на радиовръзка с отдалечено устройство. Това се реализира с определени последователности от AT команди;

-          Формиране на текстовия стринг в изходния буфер на драйвера. Структурата и синтаксиса на този текст са в зависимост от типа на използваната комуникация;

-          Обработка на текстовото съобщение постъпило в входния буфер на драйвера. Тази обработка също зависи от типа на комуникацията. След обработката съобщението има вид, подходящ за ползване от други програмни функции;

-          Обслужване на асинхронни съобщения.

 

Последните пет функции са силно зависими от вида на желаната комуникация. В настоящия проект се предполага, че тези функции ще се реализират от Машината на състоянията на Външна драйверна програма. За целта, те се имплементират в логическата схема на изпълнението на последната, отразено в таблицата на преходите й. В резултат се осигурява активирането и работата на даден Комуникационен драйвер по схемата на обслужване на Външните драйверни програми. Когато възникне необходимост от употребата на даден вид комуникация се извършва зареждане на съответната Външна драйверна програма ( тя се едентифицира с име свързано с желания тип на  комуникация) в нейния работен буфер от външната FLASH памет, с последващо активиране на Машината на състоянията й. Логиката и последователността на действията на Комуникационния драйвер са предварително пре-програмирани в тялото на Външната драйверна програма, в съответствие с особеностите на желаната комуникация.

            Този подход позволява смяна на комуникационните канали в реално време, зареждайки Външни драйверни програми реализиращи различни Комуникационни драйвери. Също е възможна смяна на GPRS- модема без да е необходима преработка на потребителския софтуер или фърмуера на Активното мрежово устройство.

            Комуникационният драйвер, капсулиран във Външна драйверна програма, се проектира извън потребителската програма, използвайки Развойната среда инсталирана в PC и Помощни семантични команди за зареждане на Външни драйверни програми във FLASH памет на Активното мрежово устройство.

 

 

Архитектура на БПМИО

 

 

В настоящият материал се разглеждат някои аспекти на реализацията на проекта “Базисна платформа за мониторинг на индустриални обекти (БПМИО) включващи:

 

-          апаратната и програмна архитектура на БПМИО;

-           алгоритмичната реализация на функциите на устройствата, включени в платформата;

-           мрежови структури и градивни елементи използвани за тяхното построяване;

-          комуникационните протоколи, поддържани от мрежовите устройства (в рамките на локална мрежа) и между отделните мрежи;

-          апаратна и програмна архитектура на Операторските станции (Главна (ГОС) и Локална (ЛОС));

 

Използвана терминология

 

-          Безжична локална мрежа (WLAN) – това е локална мрежа, обединяваща няколко устройства, всяко с вградени възможности за комуникация по радиоканал. WLAN се характеризира с мрежови параметри, протокол за комуникация и специализирано програмно осигуряване ( Стек ), отговорно за управление на устройствата, включени в мрежата.

 

-          НОД ( Network Object Device) всяко едно от устройствата, включени в Безжичната Локална Мрежа. Всеки НОД съдържа специализирано програмно осигуряване ( Стек ), отговорно за управление на комуникацията на НОД-а. НОД-вете имат сходна апаратна архитектура, комуникационно програмно осигуряване и общ комуникационен протокол.

 

-          Координатор на Безжичната локална мрежа - НОД, който създава и менажира мрежата. В даден момент, всяка WLAN има точно един Координатор.

 

-          Безжичен индустриален контролер - това е идустриален контролер с възможност за комуникация по радиоканал с други подобни устройства. В качеството си на контролер, той управлява програмно някакъв индустриален обект. В същото време притежава възможност да функционира като НОД на Безжичната Локална Мрежа.

 

-          Активни мрежови устройства- те включват устройствата с функции на Безжични индустриални контролери, Сензорни безжични модули или Сърверни безжични модули.

 

-          Технологичен слой - Безжична Локална Мрежа, в която НОД-вете са Активни мрежови устройства .

 

 

-          Семантичен език - това е език за управление на активните устройства, включени в мрежата. Дефинират се Семантични команди и съответни Рапорти от различните устройства, в съответствие с командите. И двата типа информационни обекти използват  съобщенията на Технологичния слой за реализация на вътрешно мрежов транспортмежду Нод-овете. Когато Активните мрежови устройства работят в автономен режим ( не са включени в Технологичния слой ), Семантичните команди и съответните Рапорти се получават от и изпращат към външни Агенти, посредством GATEWAY . Той се реализира от включен към Активното мрежово устройство на модем-терминал, осигуряващ GPRS комуникация.

 

-          Главна операторска станция (ГОС) – построена на базата на PC, под Windows XP, тя реализира операторски интерфейс към Технологичния слой и Активните мрежови устройства.

 

-          Локална операторска станция (ЛОС) - построена на базата на PC под Windows XP, тя реализира тестови потребителски интерфейс към Активно мрежово устройство, работещо в мрежов или автономен режим.

 

 

1.            Основни цели на проекта БПМИО

 

 

            Проектът БПМИО предвижда разработката на апаратни и програмни средства, предназначени за подобряване на съществуващата и създаване на нова база за комплексна автоматизация на производствените процеси. Той се базира на широкото използване на безжична технология в процесите на управление на технологичните обекти.

 

-          Базовата платформа за мониторинг на индустриални обекти чрез използване на безжични комуникации – БПМИО има за цел създаването на инфраструктура, позволяваща реализиране на системи за управление и активен мониторинг на параметрите на стопанските обекти.

-          Базовата платформа позволява реализацията на стационарни и мобилни производствени системи с високо ниво на интелигентност.

-          Базовата платформа за мониторинг на индустриални обекти позволява разширяемост на технологичните линии, адаптация към конкретните производствени условия, без да се налага промяна на технологичната среда.

-          БПМИО е насочена предимно към индустриални приложения, но може да бъде успешно използвана и в други отрасли.

-          Разработката на БПМИО е предпоставка за използването на концепцията, известна в Информатиката като «Облачна технология» в областта на управление на технологичните процеси.

 

 

2. Сравнителен анализ с други системи. Технология М2М

 

В областта на Автоматизацията на технологичните процеси е известна технологията M2M. Тя предполага свързване на производствен агрегат към управляващ компютър, чрез използване на GPRS канал. За целта се използват GPRS модеми, които изпълняват ролята на рутери към контролерите на агрегатите. Често се употребява “безжичен интернет” като транспортна среда на детайл програмите. Този подход позволява употребата на външни информационни масиви в качеството на банки от данни свързани с конкретните технологични процеси. Основните проблеми пред тази технология са свързани с използването на специализирани контролери, високата цена на трафика и голямата натовареност на комуникационните канали (същите се използват и от битовите телефони).

 

3. Структура на Системите за мониторинг и управление, реализирани на базата на БПМИО.

 

3.1.  Мултимрежи.

 

БПМИО предполага проектирането на хибридна комуникационна мултимрежа( Технологичен слой ), включваща съвокупност от автономни безжични мрежи от индустриални контролери( Активни мрежови устройства).Всяка от автономните безжични мрежи управлява група от обекти, които се намират в област с добра радиовидимост. Една от автономните безжични мрежи е наречена главна. Тя се свързва жично(USB) с Главната операторскатстанция (ГОС). В рамките на всяка автономна мрежа комуникацията се поддържа от специализирани контролери с вграден безжичен интерфейс, поддържащ JenNet стек (подобен на Zig Bee, но по-подходящ за индустриални приложения, работещ на честота 2.44 GHz). Всяко Активно устройство притежава такъв вграден контролер. Координаторите на автономните мрежи са включени в магистрала от тип “модифициран RS485”. Тази магистрала може да има жични сегменти(стандартен RS485) и/или безжични сегменти, реализирани чрез радио-обмен по канал с честота 433 MHz. За целта всеки координатор съдържа вградени 433 MHz мрежов трансивер и галванично развързани буфери, реализиращи жичен RS485.

Комуникацията между ГОС и всяко Активно мрежово устройство се реализира на два такта- първо по “модифициран RS485” до координатора на съответната мрежа и после по безжичен интерфейс вътре в мрежата. Всяко съобщение предполага отговор в обратен порядък.

 

3.2. Активни мрежови устройства.

 

Активните мрежови устройства са индустриални контролери с вградени безжични интерфейси. Всяко едно от тях включва Комуникационен контролер и Специализиран контролер( Фронт-енд процесор), предназначен за работа с външни обекти чрез вградени в него периферии.

Всеки Комуникационен контролер поддържа безжичен интерфейс JenNetза вътрешна комуникация в автономната мрежа, USB интерфейс за свързване с ЛОС, банка от 64MB,съхраняваща библиотека от приложни програми и интерфейс към GPRS модем SIM900T.Комуникационният контролер се управлява от 32 битов процесор, включен към вграден в контролера модул.

Специализираните контролери имат вградени блокове за приемане и извеждане на различни видове електрически сигнали от и към външни обекти.

 

 Разработени са няколко вида Специализирани контролери:

 

- Crd100+контролер на координатора, включващ интерфейс RS485, безжичен 433 MHz трансивер,4 независими едножични магистрали 1-Wire bus за работа с групи от отдалечени сензори, логика за задаване и прочитане на адрес,специализиран 16-битов процесор Xmega32 на Atmel.

 

- Sen100+- контролер за обслужване на сензори, включващ изнесена видеокамера uCam, достъпна по RS422, 4 независими едножични магистрали 1-Wire bus за работа с групи от отдалечени сензори,2 оптоизолирани входа и 2 оптоизолирани изхода, специализиран 16-битов процесор Xmega32 на Atmel. Сензорите, включени към едножичните магистрали и обслужвани от контролера са:DS1820, DS1822, DS1823, отдалечен сензор за измерване на влага и температура и др.

 

- Can100+ - контролер за работа с магистрала от тип CAN,реализиращ пасивно или активно устройство върху магистралата, 4 оптоизолирани входа и 4 релейни изхода, специализиран процесор AVR128Can.

 

- Simo100+ -контролер за работа с аналогови и цифрови входове и изходи, включващ 4 аналогови 12 битови входа(0-10V),4 аналогови 12 битови изхода(0-10V),2 аналогови изхода (4-20 mA), 4 галванично развързани цифрови входове и 4 релейни изхода.

 

- Serv100+ - модул, включващ високо-производителен 32 битов процесор,64 MB flash модул,512 K RAM, интерфейс RJ45, RS485 или безжичен 433 MHz трансивер. Този модул изпълнява функциите на сървер в мрежата или Gateway към Ethernet магистрала. Той може да функционира и в качеството на координатор на автономна мрежа. До модула е възможен достъп, както по външната “модифициран RS485магистрала, така и от страна на устройствата от автономната мрежа.

 

- Всички специализирани контролери се свързват с Комуникационния контролер по унифициран интерфейс, базиран на SPI. Захранването на Комуникационния контролер се осигурява от Специализираните контролери.

 

Активните мрежови устройства притежават следните възможности:

 

-          всяко едно от Активните мрежови устройства има възможност за достъп до външни комуникационни устройства,използвайки различни вградени интерфейси.

-          Всички устройства могат да се свързват с външен компютър по USB ( ЛОС, ГОС).

-          Всички Активни мрежови устройства поддържат интерфейс за връзка с GPRS терминал SIM900T.

-          Всички Активни мрежови устройства поддържат вътрешен безжичен мрежов интерфейс на базата на стек JenNet.

-           Crd100+ и Serv100+ поддържат безжичен мрежов интерфейс на базата на трансивер SIM20 и жичен интерфейс RS485.

-          Serv100+ поддържа жичен интерфейс RJ45 за връзка с външни Ethernet мрежи(uTCP, HTTP).

 

3.3. Операторски станции.

 

БПМИО предполага проектиране и изработка на 2 вида операторски станции - Главна операторска станция (ГОС) и Локална операторска станция (ЛОС).

ГОС е обща за мултимрежата и е включена директно, чрез USB, към координатора на Главната автономна безжична мрежа. ЛОС има възможност да се включи към всяко едно от Активните мрежови устройства посредством неговия USB канал.

ГОС се реализира на базата на PC и платформа Windows XP/7. Поддържат се информационни канали USB, Ethernet и всички интерфейси на PC. Допълнително е осигурено обслужването на драйвери на GPRS модем SIM900T и 433 MHz SIM20T. ЛОС се реализира на базата на PC или друго устройство имащо интерфейс USB master. В първата реализация се предполага използването на платформа Windows XP/7.

ГОС е предназначена за програмиране работата на Активните мрежови устройства включени в автономните безжични мрежи, конфигурацията и режимите на работа на тези мрежи, наблюдения на информационния трафик и диагностика. Тя визуализира в табличен и графичен вид служебна и проблемно- ориентирана информация свързана с изпълнението на различните управляващи програми за обектите на управление. ГОС включва поддръжка на итерпретиращи и семантичен език, база на данните, средства за редактиране и драйверни програми. Лос е предназначена за програмиране работата на едно Активно мрежово устройство, конфигурация на режима на работа с него и наблюдение на информационния трафик  и диагностика на последното. Тя визуализира в табличен и графичен вид служебна и проблемно- ориентирана информация свързана с изпълнението на различните управляващи програми за обекта на управление. Допълнително, ЛОС може да се използва в качеството на ко-процесор към Активно мрежово устройство (например в задачите с разпознаване на образи). В този случай тя използва своя USB канал, като комуникационен с Активното мрежово устройство, доставящо входящата информация.

 

 

4. Технологичен слой.

 

Проектът БПМИО предполага изграждането на автономна безжична мрежа в качеството на транспортен слой (Технологичен слой), базиран на общодостъпна разрешена честотна лента. Този слой, заедно с транспортните мрежови функции, изпълнява ролята на интелигентен комуникатор, представляващ управляващата структура и управляемите обекти пред ГОС и външни мрежи.

Технологичният слой включва набор от безжични локални мрежи, реализиращи транспортиране по радиоканали и модифициран интерфейс RS485  на информационните и служебни съобщения между ГОС и Активните мрежови устройства. Комуникацията се организира в съответствие с Технологичен протокол за работа с Технологичния слой.

Този протокол осигурява изпълнението на групи от външни команди, изпращани от Координатора на Главната мрежа по жичен интерфейс  към останалите Координатори.

Всяка външна команда съдържа вградена в тялото си вътрешна команда, която съответния Координатор изпраща към НОД-овете от своята мрежа (капсулирана в съобщения от тип Data to Peer (Unicast)).

 

4.1. Технологичен протокол.

 

        Технологичния протокол е проектиран за работа в рамките на Технологичния слой. Той включва два вида команди: външни и вътрешни.

        Вътрешни команди- те се разпространяват по зададения за локалната мрежа работен радиоканал, генерират се от Координатора на мрежата и управляват комуникацията между НОД-овете;

        Външни команди- те се разпространяват по модифициран интерфейс RS485 между координаторите в Технологичен слой, включващ няколко автономни безжични мрежи, генерират се от Координатора на Главната мрежа и реализират междумрежов информационен трафик.

        Всяка от безжичните мрежи има свой уникален адрес, както следва:

 

        главната безжична мрежа има адрес 0;

        останалите безжични мрежи се адресират последователно 1,2, 3, ....

 

Външните команди имат следния синтаксис:

 

<N: на безжичната мрежа>:<вътрешна команда><CR>.

 

Изпълнението на външна команда се извършва на няколко стъпки:

 

1. Координаторът на Главната мрежа извежда по RS485 кода на командата;

2.   Координаторът на адресираната мрежа получава този код;

3.  Координаторът на адресираната мрежа отделя текста, обозначен като <вътрешна команда> и го подава към своята мрежа, като вътрешна команда по съответния радиоканал;

4.   След изпълнението на командата, Координаторът на адресираната мрежа получава рапорт, който се изпраща по RS485 обратно към Координаторът на Главната мрежа. Рапортът е терминиран с NULL. Той може да включва 0 или повече стринга, завършващи с CR.

Когато адреса на безжичната мрежа е 0, не се извършва комуникация по RS485, а направо се формира вътрешна команда по радиоканала на Главната безжична мрежа.

 

Вътрешните команди имат общ формат:

 

 

GGG_COMMAND:N=X,Y,Z

 

 

        Тук макроса GGG представя групата, към която пренадлежи командата: CMD (управление на координаторите);

        LST (Получаване информация от координатора на безжичната мрежа за регистрираните от него устройства);

        NDE (работа с конкретно мрежово устройство);

        NWK ( работа с всички устройства от мрежата).

                                           

N, X, Y, Z са десетични числа, представящи стойности на използвани в командата системни променливи представени в приложената таблица:

 

 

Име на променлива

Стойност

Функция

H

0-23

Час

M

0-59

Минута

N

0-254

Индекс на мре-жово устройство в Базата данни на Коорди-натора.

V

0-65535

16-битов стойност.

X

0 or 1

Логическа константа (изключено, включено).

Ch

11-26

Номер на радиоканал.

 

Фиг.4 Системни променливи на командите от Технологичния протокол.

 

4.2. Семантичен език.

 

Семантичният език е програмно средство за управление и комуникация с Активните мрежови устройства, включени като НОД-ове в някоя от локалните безжични мрежи на Технологичния слой. Основна задача на Семантичния език е да осигури възможност за оператора на ГОС да задава режимите на работа, управлява програмно и наблюдава в „реално време” технологичните параметри на външните обекти контролирани от Активните мрежови устройства.

Семантичният език включва команди осигуряващи достъпа до информационната структура на различните разширени функции и външни драйверни програми поддържани от Активните мрежови устройства. Синтаксиса на тези команди е същия, като на командите на Технологичния протокол. Отново се използват външни и вътрешни Семантични команди, като вътрешните се включват в тялото на външните. Същият е и механизма, по който след постъпване в Координатор на някоя автономна безжична мрежа, последния извлича от външна Семантична команда на вътрешна такава и я транспортира по безжичен начин към НОД-овете на тази мрежа.

Основното различие е в начините на интерпретация на Семантичните команди. Докато командите на Технологичния протокол се изпълняват от Интерпретаторът на командите директно, Семантичните команди се интерпретират от вградената логика в разширените функции и външни драйверни програми, които са активни в дадения момент. Интерпретаторът на командите участва в този процес само като регистратор на наличието на постъпила Семантична команда и веднага предава управлението на вградената в нея Машина на състоянията за последваща обработка(конфигурирайки статичните променливи управляващи тази машина). Тези команди взаимодействат с полета от структурата на програмния модул без да отчитат конкретната семантика( тя се определя от съответните разширени функции и външни драйвери).

 

Външните Семантични команди имат следния синтаксис:

 

<N: на безжичната мрежа>:<вътрешна Семантична команда><CR>

 

Изпълнението на външна Семантична команда се извършва на няколко стъпки:

 

1. Координаторът на Главната безжична мрежа извежда по RS485 кода на командата;

2.   Координаторът на адресираната мрежа получава този код;

3.  Координаторът на адресираната мрежа отделя кода, обозначен като <вътрешна Семантична команда> и го подава към своята мрежа, като вътрешна Семантична команда по съответния радиоканал;

4.   След изпълнението на командата, Координаторът на адресираната мрежа получава рапорт, който се изпраща по RS485 обратно към Координатора на Главната безжична мрежа. Рапортът е терминиран с NULL. Той може да включва 0 или повече стринга, завършващи с CR.

Когато адреса на безжичната мрежа е 0, не се извършва извеждане по RS485 и направо се формира вътрешна Семантична команда по радиоканала на Главната безжична мрежа.

 

Вътрешните Семантични команди имат общ формат:

 

SEM_COMMAND:N=X,Y,Z

 

N e десетично число, представящо индекс (пореден номер) на Активното мрежово устройство в Базата данни за регистрирани НОД-ове на Координатора. То се използва като адрес на устройството.

X е текстови стринг, съдържащ името (съвпадащо с името на файл в външната FLASH) на съответна Разширена функция или Външна драйверна програма.

Y е текстови стринг (определящ входните параметри на разширената функция или външната драйверна програма).

Z е десетично число (определящ вида на обработката или вътрешен специфичен параметър).

Съществуват две групи Вътрешни семантични команди-Основни команди и Помощни команди. Те са имплементирани във всички разширени функции и външни драйвери. Поддържат се от фърмуера на всички Активни мрежови устройства.

 

Основни семантични команди:

 

        SEM_EDRV:N=X,Y,Z

 

Обръщение към Активно мрежово устройство с индекс N за работа с Външна драйверна програма с име X.

Yсъдържание на входния буфер.

Zрежим на работа: 0 – инициализация; 1 – получаване на статусна информация; 2 – задаване на статусна информация (от поле Y); 3 – получаване на данните от изходния буфер; 4 -  изпращане на данни във входния буфер ( от поле Y).

 

        SEM_XFUN:N= X,Y,Z

 

Обръщение към Активно мрежово устройство с индекс N за работа с разширена функция с име X.

Yсъдържание на входния буфер.

Zрежим на работа: 0 – инициализация; 1 – получаване на статусна информация; 2 – задаване на статусна информация (от поле Y); 3 – получаване на данните от изходния буфер; 4 -  изпращане на данни във входния буфер ( от поле Y).

        Помощни семантични команди:

 

                      SEM_HEDRV:N=X,Y,Z

 

Обръщение към Активно мрежово устройство с индекс N за работа с Външна драйверна програма с име X.

Машината на състоянията в начално състояние- неактивна (0).

Yсъдържание на входния буфер.

Zрежим на работа: 0 – инициализация на входния буфер. Машината на състоянията в начално състояние- неактивна (0); 1 – получаване на статусна информация Машината на състоянията в начално състояние- неактивна (0); 2 – задаване на статусна информация (от поле Y). Машината на състоянията в начално състояние- неактивна (0); 3 – получаване на данните от изходния буфер. Машината на състоянията в начално състояние- неактивна(0); 4 -  изпращане на данни във входния буфер (от поле Y). Машината на състоянията в начално състояние- неактивна (0).

 

                      SEM_HXFUN:N= X,Y,Z

 

Обръщение към Активно мрежово устройство с индекс N за работа с разширена функция с име X.

Машината на състоянията в начално състояние- неактивна(0).

Yсъдържание на входния буфер.

Zрежим на работа: 0 – инициализация на входния буфер. Машината на състоянията в начално състояние- неактивна (0); 1 – получаване на статусна информация Машината на състоянията в начално състояние- неактивна (0); 2 – задаване на статусна информация (от поле Y). Машината на състоянията в начално състояние- неактивна (0); 3 – получаване на данните от изходния буфер. Машината на състоянията в начално състояние- неактивна (0); 4 -  изпращане на данни във входния буфер (от поле Y). Машината на състоянията в начално състояние- неактивна (0).

 

                      SEM_LEDRV:N= ,,Y,Z

 

Връща списък с имена, съдържащи текст Y (ако текстовия стринг е празен, списъка включва всички имена) на Външни драйверни програми, поддържани от Активно мрежово устройство с индекс N. Ако Z=0, се търси външната памет, в противен случай (Z>=0) само програмния буфер за заредени Външни драйверни програми.

 

                      SEM_LXFUN:N= X,Y,Z

 

Връща списък с имена, съдържащи текст Y (ако текстовия стринг е празен, списъка включва всички имена) на Разширени функции, поддържани от Активно мрежово устройство с индекс N. Ако Z=0, се търси външната памет, в противен случай (Z>=0) само програмния буфер за заредени разширени функции.

 

                      SEM_ZEDRV:N=X ,,

 

Изтрива от програмния буфер за заредени Външни драйверни програми, поддържан от Активно мрежово устройство с индекс N, на Външна драйверна програма с име X.

 

                      SEM_ZEFUN:N=,,

 

Изтрива от програмния буфер за заредени Разширени функции, поддържан от Активно мрежово устройство с индекс N, на Разширена функция с име X.

 

                      SEM_LDE :N=X,, Зарежда Външна драйверна програма като файл в директорията на Външните драйверни програми в FLASH.

 

                      SEM_LDX :N=X,, Зарежда Разширена функция като файл в директорията на Разширените функции в FLASH.

 

4.3. Реализация на командите на Семантичния език.

 

4.3.1. Разширени функции и външни драйвери.

 

Активните мрежови устройства имат обща софтуерна архитектура, която определя определя в голяма степен синтаксиса и семантиката на командите на Семантичния език. Тази архитектура се базира на свойствата на въведените нови класове програмни обекти –„ външни драйверни програми” и „разширени функции”.За наименование на техните реализации ( т.е. създаване в адресното пространство на JN5148 на работни копия на тези обекти, заедно с инициализация на съответните структури и статични променливи) се използва термина програмни модули.

Микроконтролерът JN5148 има ограничена вътрешна памет (128 Kb). За да се изпълнят изискванията на различни приложения, тя е разширена чрез енерго-независима S25FL512SAGMFI011 с обем 64 MB от тип FLASH, достъпна по SPI интерфейс.

Външната памет има файлова организация, като всеки от файловете е с размер по-малък от 8 K. Във вътрешната памет на микроконтролера се резервират два линейни буфера с размер по 8 K всеки, за съхраняване на програмни модули за двата типа програмни обекти- разширена функция и външни драйверни програми .

В даден момент е възможно активиране на една разширена функция ( заредена в съответния линеен буфер) и една или повече външни драйверни програми ( заредени в съответния линеен буфер).

Външните драйверни програми и разширените функции се прехвърлят в съответни линейни буфери ( т.е. създават се програмни модули) при наличие на заявка от функции на потребителското приложение- т.е. когато приложните програми изискват обновяваването на буферите поради необходимост от изпълнение на съответен програмен модул . Модулите съдържат предварително компилиран програмен код (в него са включени копия на всички функции, към които има обръщение). Фърмуерът на Активните мрежови устройства предоставя методи за достъп на потребителските приложения до статуса, параметрите и резултатите от изпълнениетс на програмните модули.

 

4.3.2. Структура на програмите и данните.

 

Външните драйверни програми и разширените функции се прехвърлят в съответни линейни буфери( т.е. създават се програмни модули) при наличие на заявка от функции на потребителското приложение- т.е. когато приложните програми изискват обновяваването на буферите поради необходимост от изпълнение на съответен програмен модул . Модулите съдържат предварително компилиран програмен код (в него са включени копия на всички функции, към които има обръщение). Фърмуерът на Активните мрежови устройства предоставя методи за достъп на потребителските приложения до статуса, параметрите и резултатите от изпълнениетс на програмните модули.

Външните драйверни програми и разширени функции имат обща структура. Двата типа програмни модули се идентифицират с уникални имена ( същите се използват като имена на файловете, съдържащи програмния код на съответните обекти, във  външната FLASH памет). Описаните програмни модули( външни драйверни програми и разширени функции) се реализират чрез Машини на състоянията (State machine). Всички работни динамични и статични променливи (необходимите входни и/или изходни буфери за данни и резултати, статусни променливи, пойнтери и броячи) са включени в тялото на модулите и след генерацията на последните (в съответните линейни буфери) са позиционирани в адресното пространство на съответния  буфер.

Различните драйверни програми и разширени функции реализират «собствени»  Машини на състоянията, включени в тялото на модулите. Това им осигурява възможности за индивидуална интерпретация на входните параметри и резултати.

Важна особеност на програмните модули ( на външните драйверни програми и разширени функции) е че те работят като синхронни програмни устройства. За целта в тялото на модулите е включен параметър, наречен Time_scan. Той определя интервал, през който фърмуерът  на  Активните мрежови устройства стартира изпълнението на Машината на състоянията на съответния модул. Контролира се целостта и валидността на информацията включена в модулите. Пълен контрол се извършва само при начално зареждане в линейния буфер. При следващи обращения към програмния модул се тества само валидността на заглавната контролна сума, тъй като в тялото на модула са включени полета за данни, които динамично се променят.

Външните драйверни програми и разширени функции работят изцяло самостоятелно, независимо от фърмуера на JN5148. Те се проектират, компилират и зареждат в енергонезависимата 64MB външна FLASH памет на Активното мрежово устройство, извън изпълнението на приложната програма (Off line) от външен компютър, а съответните програмни модули се генерират в реално време, в рамките и според изискванията на приложенията


5. Интерпретатори на командите от Технологичния слой.

 

Съобщенията в Технологичния слой се интерпретират по различни начини:

 

        Мрежовите съобщения в рамките на автономна безжична мрежа се генерират и обработват от Стека (Jenie) включен в всеки един от мрежовите НОД-ове. В този смисъл Jenie се явява техен интерпретатор;

 

        Външните команди ( на Технологичния протокол или Семантичния език) се инициират от Координаторът на Главната мрежа и са насочени към Координатора на някоя от автономните мрежи ( предполага се че външната команда е предназначена за автономна безжична мрежа, различна от Главната). Тези команди се разпространяват по жичен интерфейс RS 485. Този интерфейс реализира логическа двупосочна комуникация по 2-жична магистрала, между устройство от тип- MASTER и устройство от тип Slave ( включено в група от такива устройства, инсталирани върху магистралата). Всяко от устройствата има уникален адрес ( в разглеждания случай той съвпада с адреса на автономната безжична мрежа).В тялото на външната команда е вмъкнат  адреса на мрежата получател ( адрес на фронт-енд процесор на Координатор ,  позициониран върху магистралата RS 485). Всички устройства, включени към RS485 магистралата, получават тези команди. Активира се само това устройство (фронт–енд процесор, реализиран чрез ATxmega16/128A4U) чийто адрес съвпада с този, вграден в командата. След активирането на фронт-енд процесорът, последния извлича от тялото на външната команда вградената в нея вътрешна и я изпраща по интерфейс  Spi2 към куплирания с него JN5148 (функциониращ, като мрежово устрайство от тип  Координатор на автономната мрежа). Последният приема командата и я интерпретира(използвайки интерпретаторите на вътрешни команди) като «вътрешн» за своята мрежа. След изпълнението на тази команда Координаторът на автономната мрежа получава съответен рапорт по радиоканала на мрежата, който  препраща чрез  своя Spi2 - интерфейс към куплирания към него фронт-енд процесор. Фронт-енд процесорът трансформира рапорта в съобщение за RS 485 интерфейс, с адресант Координатора на Главната мрежа и изпраща това съобщение, в качеството на отговор на външната команда;

 

        Вътрешните команди на Технологичния протокол или Семантичния език се формират от Координатор на Автономната безжична мрежа и се разпространяват по радиоканал, локално в тази мрежа. Те се интерпретират по различен начин, в зависимост от това дали са команди на Технологичния протокол или на Семантичния език. В първият случай, те се изпълняват от специализирана програма, вградена в фърмуера на всяко Активно мрежово устройство- Интерпретатор на командите. Този интерпретатор определя групата към която спада дадената команда и формира комуникация със един или повече НОД-ове от локалната мрежа, в съответствие с семантиката на командата. Тази комуникация се реализира чрез използване на вградените в Jenie функции.В крайната фаза на изпълнението на вътрешна команда на Технологичния протокол, Координаторът на автономната безжична мрежа получава рапорт, специфичен за различните вътрешни команди.

 

 

6. Вътрешни драйверни програми на Активните мрежови устройства.

 

Вътрешните драйверни програми са част от фърмуера на Активното мрежово устройство. Те са предназначени за обработка на прекъсвания, генерирани от външни и вътрешни източници. Тези програми се включват в потребителското програмно осигуряване и след инициализация се регистрират като стандартни драйвери на Стека на JN5148.

 

Всяко Активно мрежово устройство притежава следните вътрешни драйверни програми:

 

        Системен времеви цикъл.

 

             На базата на апаратен таймер, всеки 10 ms се генерира прекъсване, което се обработва от тази програма. Това прекъсване е база за   отчитане на интервали при синхронно изпълняваните операции (управление на работата с външните драйверни програми и разширени функции).

 

        Серийни комуникации- Com0, Com1.

 

Тези драйвери са предназначени за обслужване на входно/изходни информационни потоци (от USB и RS 232 C, включен към GPRS T900) към двата вградени в JN5148 UART0 и UART1 . Те поддържат индивидуални кръгови буфери, от които след първична обработка се отделят  текстови съобщения ( команди), подлежащи на последваща интерпретация от фърмуера на JN5148 или извеждане към външните устройства. Серийните комуникации поддържат алтернативни канали на Технологичния слой, по отношение на командите от Семантичния език, т.е. когато Активно мрежово устройство функционира извън Технологичния слой, тези канали могат да формират входни командни съобщения и да изведат съответни рапорти за изпълнение на командите по същия начин, както това се извършва чрез безжичната мрежа. Общият принцип, реализиран при комуникациите е, че каналът по който се осъществява извеждане на информационно съобщение(рапорот) е този по който е получено входното (командно) съобщение, иницииращо изпълнение на команда от Семантичния език. Поради спецификата на външните устройства включени към Серийните комуникации (USB, GPRS модем T900), по отношение на представянето на данните и динамиката на транзакциите, към вътрешните драйвери Com0 и Com1 са включени синхронни управляващи програмни средства, реализирани като Машини на състоянията. Те реализират първична обработка на буферите, като раз- капсолират постъпилите записи от външните устройства в информационни съобщения, капсолират информационните съобщения в записи за извеждане по съответния канал и поддържат съответните комуникационни протоколи. Тези програмни средства са част от програмни модули на Външните драйверни програми, използвани за реализация на съответния комуникационен интерфейс ( т.е. директорията на Външните драйверни програми във външната FLASH памет на Активното мрежово устройство съдържа файлове с пре- компилирани Външни драйверни програми за всеки тип комуникация, които може да реализира устройството).

 

        Вътрешно модулна комуникация –Spi1,Spi2.

 

Тези драйвери осигуряват комуникация между JN5148 и вградени в Активното мрежово устройство на функционални блокове, достъпни по SPI интерфейс( Spi1 поддържа комуникация с S25FL512SAGMFI011 (64 Mb FLASH) , Spi2 – с фронт-енд процесор  ATxmega16/128A4U).

Вътрешно модулната комуникация предполага, че JN5148 винаги функционира като устройство от тип „Master”, докато S25FL512SAGMFI011 и ATxmega16/128A4U като „Slave”.

 

7. Комуникационни драйверни програми.

 

Комуникационните драйвери осигуряват реализацията на интерфейса на Активното мрежово устройство с външната клетъчна мрежа. Те са програмни модули, зависими от спецификата на апартната и програмна реализация на използваните безжични модеми. В настоящия проект се предполага използването на модем – терминали T900 на фирмата SIM. Те са проектирани на базата на специализиран вграден модул SIM900, осигуряващ различни начини на комуникация, базирани върху GPRS мрежата. T900 поддържа и генерира: SMS, MMS, TCP/IP socket , HTTP, FTP и Безжичен Интернет. Той използва вграден интерфейс RS232 C ( Rx, Tx, CTS, CTS, DTR) за връзка с устройства, работещи с него в качеството на комуникационно средство. Програмното управление на T900 се осъществява посредством набор от AT команди. Последните управляват апаратните модули на модема, конфигурират и активират различните работни режими на устройството, вдаимодействат с поддържаните Стекове и обработват постъпилите съобщения от външните мрежи.

AT командите се генерират от Комуникационните драйвери на Активното мрежово устройство и изпращат чрез серийния интерфейс Com2 към входната порта на модем- терминала (посредством RS232 C). Те имат специфечен синтаксис и са реализирани като текстови стрингове, терминирани с ( CR ). Фърмуера на T900 включва парсер и програмни средства за тяхната интерпретация. След изпълнението на всяка AT команда, T900 изпраща текстово съобщение, което предоставя рапорт за нейното изпълнение и/или връща информация, свързана със семантиката на командата. Тези съобщения могат да бъдат синхронни или асинхронни(генерирани от външни събития). В първият случай те следват изпълнението на командата. Във втория случай те задават състоянията на статични системни променливи, които в последствие могат да се прочетат с съответни AT команди.

Голямото разнообразие на режими на работа на T900, използването на ралични комуникационни интерфейси и разнородни AT команди, а също така възможността на Активното мрежово устройство да употребява повече от един канал за свързване с външни клиенти, предполагат реализацията на различни видове Комуникационни драйвери. В настоящия проект е направен опит за унификация на архитектурата на последните.

 

7.1. Работен модел на комуникационните драйвери.

 

      Проектирането на Комуникационен драйвер предполага разработката на програмни средства, осигуряващи изпълнението на следните функции:

 

        Въвеждане на входни съобщения, генерирани в режим на прекъсване, във входен буфер  и извеждане на текстови последователности( AT команди) от изходен буфер, синхронизирано с управляващите модемски сигнали на T900. Тази функция реализира драйверът Com2, предназначен за работа със серийната порта на модема.

        Инициалицация на T900 за работа в конкретен режим. За целта е необходимо изпълнението на определен набор AT команди, зависими от избора на комуникационния канал.

        Установяване на радиовръзка с отдалечено устройство. Това се реализира с определени последователности от AT команди.

        Формиране на текстовия стринг в изходния буфер на драйвера. Структурата и синтаксиса на този текст са в зависимост от типа на използваната комуникация.

        Обработка на текстовото съобщение постъпило в входния буфер на драйвера. Тази обработка също зависи от типа на комуникацията. След обработката съобщението има вид, подходящ за ползване от други програмни функции .

        Обслужване на асинхронни съобщения.

 

В настоящия проект се предполага, че тези функции ще се реализират от Машината на състоянията на Външна драйверна програма. За целта, те се имплементират в логическата схема на изпълнението на последната, отразено в таблицата на преходите й. В резултат се осигурява активирането и работата на даден Комуникационен драйвер по схемата на обслужване на Външните драйверни програми. Когато възникне необходимост от употребата на даден вид комуникация се извършва зареждане на съответната Външна драйверна програма ( тя се едентифицира с име свързано с желания тип на  комуникация) в нейния работен буфер от външната FLASH памет, с последващо активиране на Машината на състоянията й. Логиката и последователността на действията на Комуникационния драйвер са предварително пре-програмирани в тялото на Външната драйверна програма, в съответствие с особеностите на желаната комуникация.

Този подход позволява смяна на комуникационните канали в реално време, зареждайки Външни драйверни програми реализиращи различни Комуникационни драйвери. Също е възможна смяна на GPRS- модема без да е необходима преработка на потребителския софтуер или фърмуера на Активното мрежово устройство.

Комуникационният драйвер, капсулиран във Външна драйверна програма, се проектира извън потребителската програма, използвайки Развойната среда инсталирана в PC и Помощни семантични команди за зареждане на Външни драйверни програми във FLASH памет на Активното мрежово устройство.