13.07.2015 Views

CAL – CAN протокол прикладного уровня для ... - datamicro.ru

CAL – CAN протокол прикладного уровня для ... - datamicro.ru

CAL – CAN протокол прикладного уровня для ... - datamicro.ru

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>CAL</strong> - <strong>CAN</strong> <strong>протокол</strong> <strong>прикладного</strong> <strong>уровня</strong> <strong>для</strong> промавтоматикиВ отличие от <strong>протокол</strong>ов <strong>CAN</strong>openи DeviceNet, которые также определяютнепосредственную структуруи части приложения черезфиксированные методы доступа<strong>для</strong> представления и обменаданными (переменными), <strong>CAL</strong> неопределяет содержимое данныхили специфические объекты связи,которые должно обеспечиватьнекоторое устройство иликоторые ожидаются системой.Используя <strong>CAL</strong>, пользовательимеет возможность адаптироватьсистему связи точно к требованиямего приложения или системы.Следовательно, <strong>CAL</strong> <strong>протокол</strong>идеально подходит <strong>для</strong> реализацииспецифических системныхрешений подобно медицинскимили измерительным системам, атакже <strong>для</strong> реализации закрытыхсистем управления с децентрализованнымиинтеллектуальнымимодулями.Краткаяхарактеристика <strong>CAL</strong>Основная цель <strong>CAL</strong> <strong>–</strong> предоставлениеприкладному программистуинструмента <strong>для</strong> написания программногообеспечения распределенныхприложений, использующих<strong>CAN</strong> <strong>для</strong> объединения узловраспределенного приложения.<strong>CAL</strong> рассматривает программное обеспечение множестваустройств, объединенных в сеть, не как слабосвязанныеблоки, общающиеся между собой спомощью высокоуровневых сетевых <strong>протокол</strong>ов, акак единое распределенное приложение, различныекомпоненты которого функционируют на различныхузлах сети. Таким образом, <strong>CAL</strong> предоставляеттот уровень абстракции, который позволяетконцептуально связать компоненты программногообеспечения сетевых узлов в единое целое, а такжеслужит хорошей основой <strong>для</strong> создания программногообеспечения тематических стандартов болеевысокого <strong>уровня</strong>.Многие стандарты промышленных сетевых <strong>протокол</strong>овне полностью содержат все уровни стандартноймодели OSI/ISO, и <strong>CAL</strong> не исключение (Рис. 1) [7].Приложениеменеджера сетиПриложения узла1 2 3Рис. 1. Модель <strong>CAN</strong>/<strong>CAL</strong> в эталонной модели OSI/ISO(без LMT сервиса)Причины отсутствия ряда слоев состоят в следующем:NNNMT<strong>CAN</strong> шинаDBTCMSПрикладной уровень OSI/ISO 7Представительский уровень. . .Сетевой уровеньПередачаКанальный уровень<strong>CAN</strong><strong>протокол</strong>4 OSI/ISO 3...6(Уровни отсутствуют)ПриемФизический уровень OSI/ISO 1Интерфейсы:1 Сервис менеджера сети2 Сервис менеджера узла3 Сервис обмена сообщениями4 Сервис канального <strong>уровня</strong>OSI/ISO 2Протоколы: Протокол менеджера сети Протокол обмена сообщениями Протокол распределения <strong>CAN</strong> <strong>протокол</strong>Сама природа <strong>CAN</strong> не имеет возможности <strong>для</strong>межсетевой маршрутизации, которую предоставляетсетевой уровень (Network Layer)В распределенных управляющих системах реальноговремени каждое сообщение передаетсясобственным кадром. <strong>CAL</strong> обеспечивает транспортировкупроизвольных данных большогоразмера на прикладном уровне. Кроме того, <strong>CAN</strong><strong>протокол</strong> уже поддерживает некоторые аспектынадежного подключения. Поэтому транспортныйуровень (Transport Layer) также отсутствуетwww.<strong>datamicro</strong>.biz • (8634) 314-000 • www.<strong>datamicro</strong>.<strong>ru</strong> 4


<strong>CAL</strong> - <strong>CAN</strong> <strong>протокол</strong> <strong>прикладного</strong> <strong>уровня</strong> <strong>для</strong> промавтоматикиNNВ системах управления реальноговремени не используютсясвязи, ориентированныена сессию. Поэтому уровеньсессии (Session Layer) такжеотсутствует<strong>CAL</strong> жестко определяет форматыданных <strong>для</strong> приложенийчерез правила кодирования(“Encoding Rules”). Поэтомупредставительный уровень(Presentation Layer) отсутствует.Стандарт <strong>CAL</strong>Приложение XПриложение X Приложение YrequestrequestindicationconfirmresponseПодтверждаемый сервисЛокальный сервисПриложение X Приложение Y, Z, ...Приложение XrequestindicationindicationindicationindicationУслуги канального <strong>уровня</strong>В <strong>CAN</strong> сообщение передаетсявнутри так называемого COB’а(Communication Object). КаждыйCOB способен перенести до8 байт данных и характеризуетсяуникальным идентификатором(COB-ID).Канальный уровень <strong>CAN</strong> предлагает примитивы,обеспечивающие широковещательную передачусообщений или чтение конкретного сообщения позапросу. Таким образом, данные не передаются наопределенный узел сети в рамках распределенногоприложения (node-oriented network). Каждыйузел, используя значение COB-ID, самостоятельнопринимает решение, требуются ли ему данные, содержащиесяв принятом пакете (message-orientednetwork). То есть, вообще говоря, приемник не знаетисточника принятых данных. Такая архитектура сохраняетсяи на прикладном уровне (<strong>CAL</strong>).Основные характеристики <strong>CAL</strong>Прикладной уровень <strong>CAL</strong> предоставляет приложениючетыре сервисных элемента (serviceelements):NNN<strong>CAN</strong> Message Specification (CMS)Элемент сервиса определения сообщенийNetwork Management (NMT)Элемент сервиса управления сетьюDistributor (DBT)Элемент сервиса распределения <strong>CAN</strong> идентификаторовНеподтверждаемый сервисNLayer Management (LMT)Элемент сервиса управления <strong>уровня</strong>ми<strong>CAL</strong> <strong>протокол</strong> определен двояко: с одной стороныопределяются достаточно абстрактные сущности<strong>прикладного</strong> <strong>уровня</strong> и набор так называемых сервисов,позволяющих оперировать этими сущностямив рамках распределенного приложения (ServiceSpecification), с другой <strong>–</strong> описываются <strong>протокол</strong>ывзаимодействия этих абстрактных сущностейна уровне описания потоков данных в <strong>CAN</strong> сети(Protocol Specification) [4].Все сервисы <strong>CAL</strong> реализуются через сервисные примитивы(Рис. 2):NNNrequestЗапрос формируется приложением <strong>для</strong> передачина <strong>CAL</strong> уровеньindicationИндикация формируется <strong>CAL</strong> и оповещает приложениео поступлении данных или возникновениинекоторого события на <strong>CAL</strong> уровнеresponseCервис инициализациипоставщикаРис. 2. Типы сервиса <strong>прикладного</strong> <strong>уровня</strong>Ответ формируется приложением <strong>для</strong> передачина <strong>CAL</strong> уровень как реакция на ранее поступившуюиндикациюwww.<strong>datamicro</strong>.biz • (8634) 314-000 • www.<strong>datamicro</strong>.<strong>ru</strong> 5


<strong>CAL</strong> - <strong>CAN</strong> <strong>протокол</strong> <strong>прикладного</strong> <strong>уровня</strong> <strong>для</strong> промавтоматикиNconfirmПодтверждение формируется <strong>CAL</strong> и оповещаетприложение о поступлении ответаCMS <strong>–</strong> <strong>CAN</strong> cпецификациясообщенийСервисный элемент CMS (<strong>CAN</strong>basedMessage Specification)предоставляет собой язык описанияи манипуляции с объектамираспределенного приложения.Доступ узлов приложения к CMSобъектам осуществляется в моделиклиент-сервер.Имеется возможность использоватьтри типа объектов:NNNПеременныеСобытияДоменыПеременныеОбъекты типа Переменная(Variable) обеспечивают передачуданных, инициируемую клиентом.Переменные обеспечиваютобмен данными размером не бо-лее 8 байт, то есть обмен данными осуществляетсяс помощью передачи всего одного COB’a.Примером применения такого объекта может служитьтревожная сирена. Сервер объекта <strong>–</strong> узел,непосредственно управляющий сиреной. Клиент<strong>–</strong> узел, вырабатывающий управляющий сигнал навключение или выключение. Управление сиреной/******************************************************************************** Define CMS. Массив дескрипторов объектов*******************************************************************************/CMS_DEFINITIONS = {Def_VBWO_S ( BUZZER_CMD_<strong>CAN</strong>DRV_CHAN, 1005, BOOLEAN ),Def_ES_S ( AC_STATE_<strong>CAN</strong>DRV_CHAN, 402, STATE_RECORD, 0 ),Def_DM_S ( AC_DATA_<strong>CAN</strong>DRV_CHAN, 403, 404, UNSIGNED8, 0 ),Def_VBWO_S ( AC_CMD_<strong>CAN</strong>DRV_CHAN, 405, CMD_RECORD ),Def_EU_C ( AC_READ_LDATA_CHAN, 102, LDATA_ITEM )};/******************************************************************************** Define CMS. Индексы CMS объектов в массиве дескрипторов объектов*******************************************************************************/enum {BUZZER_CMD_CMS_HANDLE,AC_STATE_CMS_HANDLE,AC_DATA_CMS_HANDLE,AC_CMD_CMS_HANDLE,AC_LDATA_CMS_HANDLE};Рис. 4. Определение CMS объектовCMS модель <strong>для</strong> сиреныКлиентBuzzerOnOffCMSРеальный сигнална включениеBuzzerOnOff = TRUEСерверBuzzerOnOffПеременная “BuzzerOnOff” BasicWrityOnly BOOLEANРис. 3. Пример CMS модели <strong>для</strong> управлениясиреной Write Request (BuzzerOnOff, TRUE) Write Indication (BuzzerOnOff, TRUE)осуществляется передачей (записью) требуемогобулевского значения клиентом серверу (Рис. 3).Для описания каждого объекта стандарт предусматриваетсервис Define, определяющий атрибутыобъекта (Табл. 1).В зависимости от значений атрибутов Class и AccessType переменная может требовать одного COB’а <strong>для</strong>передачи данных от сервера клиенту <strong>–</strong> неподтверждаемыйсервис (Рис. 2), либо двух, в том случае,если <strong>протокол</strong> требует запроса и подтверждения(результата) <strong>–</strong> подтверждаемый сервис. НазначениеCOB’ов выполняется сервисным элементом DBT.Стандарт не фиксирует точного синтаксиса сервисаDefine в терминах какого-нибудь языка программирования.Это определяется конкретной реализацией<strong>CAL</strong>. Например, пакет dm<strong>CAL</strong> [10] не предполагаетдинамического распределения COB’ов (астандарт это допускает), и при определении пере-www.<strong>datamicro</strong>.biz • (8634) 314-000 • www.<strong>datamicro</strong>.<strong>ru</strong> 6


<strong>CAL</strong> - <strong>CAN</strong> <strong>протокол</strong> <strong>прикладного</strong> <strong>уровня</strong> <strong>для</strong> промавтоматикиТабл. 1. Атрибуты CMS объектовАтрибуты Тип объекта ОписаниеNameUser TypePriorityInhibit TimeData TypeError TypeVariable.EventVariable.EventКаждый CMS объект в рамках одного распределенного приложения имеетуникальное символическое имя, которое, безусловно, должно быть одно и тоже на клиентах и серверах объекта. Используется <strong>для</strong> динамического распределенияCOB-ID. При статическом распределении COB-ID имя может неиспользоваться.При определении объекта на узле распределенного приложения необходимоуказать, кем по отношению к объекту является узел <strong>–</strong> клиентом или сервером.Приоритет COB’а (ов), используемых объектом. Используется при динамическомраспределении COB-ID. При статическом распределении COB-ID неиспользуется, так как COB-ID’ы задаются при определении объекта.Время запрещения <strong>–</strong> минимальное время между двумя передачами COB’а.Каждый узел может указать собственное значение. При динамическом распределенииCOB’ов DBT укажет единое значение <strong>для</strong> всех узлов, использующихэтот объект.Передаваемые данные могут иметь различный тип. Тип служит <strong>для</strong> определенияразмера передаваемых данных и гарантирует одинаковое представлениеданных на разнотипных узлах.Подтверждаемые сервисы могут возвращать ошибки. Атрибут определяет типданных, соответствующих возвращаемому коду ошибки.Class Variable Переменная может относиться к одному из двух классов: базовая (Basic) илимультиплексная (Multiplexed). Для мультиплексной переменной дополнительнодолжны быть заданы Variable Set Name и Multiplexor. Несколько мультиплексныхпеременных на одном множестве используют одинаковые COB’ы.EventDomainСобытие может относиться к одному из трех классов: неуправляемое(Uncontrolled); управляемое (Controlled), клиент может запретить или разрешитьсерверу оповещение о событии; событие с памятью (Stored), серверосуществляет оповещение о событии, кроме того, клиент может прочестьданные события, как <strong>для</strong> ReadOnly переменной.Домен может относиться к одному из двух классов: базовый (Basic) илимультиплексный (Multiplexed). Мультиплексный домен благодаря различнымзначениям мультиплексора обеспечивает передачу различных данных некоторогоузла, используя один и тот же COB.Access Type Variable Тип доступа клиента к переменной. Допустимые значения:Variable SetNameMultiplexorMultiplexorData TypeMultiplexedVariablesMultiplexedVariablesMultiplexedDomainsNNNТолько <strong>для</strong> записи (WriteOnly), <strong>для</strong> такой переменной клиент может записатьновое значение переменной, сервис чтения значения переменнойотсутствуетТолько <strong>для</strong> чтения (ReadOnly), <strong>для</strong> такой переменной клиент может прочестьзначение переменной, сервис записи значения переменной отсутствуетДля чтения и записи (ReadWrite), клиент может как читать, так и писатьзначение переменнойИмя множества, объединяющего несколько мультиплексных переменных.Мультиплексные переменные, принадлежащие одному и тому же множеству,имеют один и тот (те) же COB-ID. Используется при динамическом распределенииCOB-ID.Мультиплексор (индекс), позволяющий различить мультиплексные переменныена одном множестве.Для правильной интерпретации мультиплексора на клиенте и сервере следуетобеспечить их одинаковое представление, что обеспечивается указаниемтипа данных мультиплексора.www.<strong>datamicro</strong>.biz • (8634) 314-000 • www.<strong>datamicro</strong>.<strong>ru</strong> 7


<strong>CAL</strong> - <strong>CAN</strong> <strong>протокол</strong> <strong>прикладного</strong> <strong>уровня</strong> <strong>для</strong> промавтоматикименной следует задавать COB(ы),и нет необходимости задаватьимя и приоритет. Для идентификацииCMS объектов в приложенииудобнее использовать не имя,а индекс в таблице объектов приложения(Рис. 4).Для манипуляции с переменнымистандарт предусматривает сервисычтения (Read), записи (Write)и обновления (Update) данных.На рис. 5 приведен фрагментпрограммы, реализующий серверBasic WriteOnly переменной <strong>для</strong>управления сиреной.Все сервисы CMS, реализуемыечерез примитив indication, требуютожидания поступления данных. Если на узлеприсутствует несколько CMS объектов, которыедолжны одновременно ожидать приема данных(например, сервер WriteOnly переменной и клиентсобытия), то реализовать такое ожидание удобнеевсего в рамках мультизадачной операционной системы.В таком случае реализация, например, сервераодной WriteOnly переменной будет представлятьсобой отдельную задачу.В зависимости от класса и способа доступа <strong>для</strong> обслуживаниясервисов приема/передачи может требоватьсяодин или два COB’а.СобытияОбъекты типа Событие (Event) обеспечивают передачуданных, инициируемую сервером. Событияобеспечивают обмен данными размером не более8 байт.Примером применения такогообъекта может служить датчиксчитывания смарт-карты, используемойв качестве пропуска (Рис.6). Сервер объекта <strong>–</strong> узел, содержащийсчитыватель и оповещающийзаинтересованные узлы оприкладывании пропуска. Клиент<strong>–</strong> узел, принимающий событие.Данные события <strong>–</strong> код пропуска.При определении события с помощьюсервиса Define необходимоуказать его атрибуты (см. Табл.1).//=== Задача управления сиренойvoid BuzzerOnOff_task(void){BOOL cData;Start_VBWO_S( BUZZER_CMD_CMS_HANDLE );for(;;) {Wait_VBWO_S_Indication( BUZZER_CMD_CMS_HANDLE, (byte*)&cData, NOTOUT );if( cData ) BuzzerOn();else BuzzerOff();} //for(;;)} //BuzzerOnOff_taskРис. 5. Задача <strong>–</strong> сервер Basic WriteOnly переменной,сервис WriteCчитывательсмарткартыСерверSmart-CardCмарткартаCMSCMS модель <strong>для</strong> смарткартыСобытие “Smart_Card” Stored CODE_RECORDРис. 6. Пример CMS модели считываниясмарт-карты…//=== Инициализация Stored Event <strong>–</strong> событие модуля доступаsData.stChange = 0;Start_ES_S( AC_STATE_CMS_HANDLE, (byte CMS_STORAGE*)&sData );…//=== Оповещение о событииsData.stChange = evPersonalPermit; // Событие <strong>–</strong> вставка карточки личного// пропускаmemmove( sData.stDat, COD, COD_LEN ); // Копирование кода пропускаStoreAndNotify_ES_S( AC_STATE_CMS_HANDLE, (byte CMS_STORAGE*)&sData );…Рис. 7. Фрагменты программы <strong>–</strong> сервер Storedсобытия, сервис NotifyКлиентSmart-Card NotifyRequest (Smart_Card, card_code) NotifyIndication (Smart_Card, card_code)www.<strong>datamicro</strong>.biz • (8634) 314-000 • www.<strong>datamicro</strong>.<strong>ru</strong> 8


<strong>CAL</strong> - <strong>CAN</strong> <strong>протокол</strong> <strong>прикладного</strong> <strong>уровня</strong> <strong>для</strong> промавтоматикиДля манипуляции с событиями стандарт предусматриваетсервисы оповещения (Notify), чтения(Read), обновления (Store) данных и изменениястатуса (SetControlState).На Рис. 7 приведен фрагмент программы, реализующийсервер Stored события <strong>для</strong> работы со считывателемпропусков.ДоменыОбъекты типа Домен (Domain) обеспечивают передачуданных, инициируемую клиентом. Размер массиваданных, вообще говоря, не ограничен.В качестве примера сервера мультиплексного доменаможно рассмотреть узел, выполняющий считываниеразличных данных с некоторого лабораторногооборудования. При этом мультиплексор будет определятьто, какие данные требуется получить клиенту(Рис. 8).При определении события с помощью сервисаDefine необходимо указать его атрибуты (см. Табл.1).Передача больших блоков данных с помощью доменаобеспечивается за счет разбиения блокаданных на сегменты, помещающиеся в один COB.Таким образом, <strong>для</strong> сегментированного приема ипередачи стандарт предусматривает сервисы инициализациипередачи (InitiateDomain Download, InitiateDomain Upload), собственнопередачи сегмента (DownloadDomain Segment, Upload DomainSegment) и прерывания обмена(Abort Domain Transfer). Причемесли инициатором обмена можетвыступать только клиент, то прерватьобмен может как клиент,так и сервер.При использовании сегментированногообмена ответственностьза правильность разбиения доменана сегменты и определениезавершения передачи лежит наприкладной программе. Если жеприменять не сегментированныйсервис (Domain Download,Domain Upload), то все управлениеобменом выполняет <strong>CAL</strong>.На Рис. 9 приведен фрагментпрограммы, реализующий сервермультиплексированного доменаCMS модель <strong>для</strong> считывания данныхлабораторного оборудованияCMS(см. Рис. 8).КлиентLab_DataМультиплексированный домен “Lab_Data” Multiplexed UNSIGNED8Типы данныхСерверLab_Data Download (Lab_Data, mux_value, data) Initiate Download (Lab_Data, mux_value) Segment Download (Lab_Data, mux_value, data)Рис. 8. Пример CMS модели <strong>для</strong> считыванияблока данныхСервисы определения переменных и событий содержататрибут типа данных. CMS определяет стандартныетипы данных и способы конструированияпроизводных типов данных. Использование типовvoid DataExchange_task(void){…Start_DM_S( AC_DATA_CMS_HANDLE );for (;;) {req = Wait_DM_S_Indication( AC_DATA_CMS_HANDLE, buf, NOTOUT, state );switch (req) {case cmsINITDOWN_REQ_DOM: //Инициализация загрузкиswitch( mux_value = *bDM_M(buf) ){…//Анализ мультиплексора}break;case cmsDOWN_REQ_DOM: //Запрос на очередной сегментswitch( mux_value ){…//Прием очередного сегмента}break;case cmsABORT_DOM: //Отказ от обменаstate = dtsINIT;continue;} //switch( req )Send_DM_S( AC_DATA_CMS_HANDLE, buf, (byte*)&mux_value );} //for(;;)} //DataExchange_taskРис. 9. Задача <strong>–</strong> сервер Multiplexed доменаwww.<strong>datamicro</strong>.biz • (8634) 314-000 • www.<strong>datamicro</strong>.<strong>ru</strong> 9


<strong>CAL</strong> - <strong>CAN</strong> <strong>протокол</strong> <strong>прикладного</strong> <strong>уровня</strong> <strong>для</strong> промавтоматикипозволяет абстрагироваться от внутреннего представленияданных в тех или иных процессорах и использоватьв рамках одного распределенного приложениясистемы, различающиеся по внутреннемупредставлению данных.Тип данных определяет так называемые правилакодирования (Encoding Rules) [4]. Эти правила четкоспецифицируют побитовый формат различныхтипов данных. Однако если в приложении используетсяформат отличный от того, который определенстандартом <strong>CAL</strong>, то ответственность за преобразованиележит на приложении. Более того, <strong>CAL</strong> неимеет достаточных средств контроля того, что <strong>для</strong>одного и того же объекта на разных узлах используетсяодин и тот же тип данных. Гарантировать этодолжен прикладной программист, выполняющийинтеграцию распределенного приложения.Реализация dm<strong>CAL</strong> использует указание типа данныхпри определении CMS объекта <strong>для</strong> подключенияфункций преобразования <strong>CAL</strong> приложение <strong>для</strong>соответствующего типа данных.NMT <strong>–</strong> управление сетьюСервисный элемент NMT (Network ManagemenT)отвечает за собственно сетевые аспекты распределенногоприложения. Сервисы <strong>уровня</strong> NMT не взаимодействуютс прикладными задачами (например,управлением производственным процессом).Для управления сетью NMT определяет три объекта:NNNnetwork objectСеть. Представляет собой набор описаний всехузлов (до 256) сети. Описание сети (т.е. networkobject) может находиться только на одном узле<strong>CAN</strong> сети, называемом NMT Masternode objectУзел. Описание узла <strong>CAN</strong> сети в network objectна NMT Masterremote node objectУдаленный узел. Описание узла сети в модуле.Модули, содержащие такой объект, называютсяNMT SlaveДля каждого remote node object на NMT Slave должнасуществовать пара node object на NMT Master. НаРис. 10 представлена NMT модель <strong>CAL</strong> сети.Основные атрибуты node object и remote nodeobject:NNNNNMT Address <strong>–</strong> адрес узлаNodeID <strong>–</strong> номер узлаОба служат <strong>для</strong> идентификации узла и используютсяNMT сервисамиNodeClass <strong>–</strong> класс узлаNodeState <strong>–</strong> состояние узлаОпределяет доступные сервисы NMT и возможностьвыполнения сервисов CMSУзелОбъектNodeNMT SlaveNMT сервисУзелNMT<strong>протокол</strong>Объект NetworkОбъектОбъектRemote NodeRemote Объект NodeRemote NodeNMT Master/SlaveNMT сервисNMT сервисNMT<strong>протокол</strong>ОбъектNode<strong>CAN</strong> сетьNMTсервисОбъектNodeNMT SlaveУзелРис. 10. Модель NMTwww.<strong>datamicro</strong>.biz • (8634) 314-000 • www.<strong>datamicro</strong>.<strong>ru</strong> 10


<strong>CAL</strong> - <strong>CAN</strong> <strong>протокол</strong> <strong>прикладного</strong> <strong>уровня</strong> <strong>для</strong> промавтоматикиТабл. 2. Ресурсы, используемые модулями системыМодуль обмена(RS-232/<strong>CAN</strong>)МодульдоступаПроходнаяSAB Siemens C505CA C505C C505C C505CXRAM 256 Byte 256 Byte 256 Byte 256 ByteДрайвер <strong>CAN</strong> [CODE] 0,7 kByte 0,7 kByte 0,7 kByte 0,7 kByteОС РВ [CODE] 0,5 kByte 0,5 kByte 0,5 kByte 0,5 kByte<strong>CAL</strong> [CODE] 1,5 kByte 2,5 kByte 2,5 kByte 2,5 kByteПриложение [CODE] 3,8 kByte 8,3 kByte 12,3 kByte 5,8 kByteВсе ПО [CODE] 6,5 kByte 12 KByte 16 kByte 9,5 kByteРазгрузкаNMT предоставляет три группы сервисов:NNNModule Control ServicesСервисы управления модулями обеспечиваютопределение node object и remote node object,инициализацию NMT Slave, а также смену состоянияобъектовError Control ServicesСервисы управления ошибками обеспечиваютобнаружение и обработку ошибок и отказов <strong>CAN</strong>сети, удаленные ошибки обнаруживаются через<strong>протокол</strong> Node/Network GuardingConfiguration Control ServicesСервисы управления конфигурированием позволяютконфигурировать узлы, загружать и читатькод и данные приложения.Класс узла определяет набор поддерживаемыхузлом сервисов. Минимальный NMT класс соответствуеттак называемой минимальной NMT функциональности<strong>–</strong> статическое назначение NMT параметрови невозможность их изменения средствами<strong>CAL</strong>.DBT <strong>–</strong> распределениеидентификаторовСервисный элемент DBT (DistriBuTor) обеспечиваетдинамическое назначение COB-ID’ов и Inhibit Time.Динамическое назначение идентификаторов позволяетосуществлять горячее подключение узлов иоперативную реконфигурацию сети.Для реализации процесса распределения используетсямодель Master/Slave, подобная модели NMT(Рис. 10). На DBT Master (который может бытьтолько один в сети) размещается COB Database, содержащаяинформацию, в первую очередь именавсех CMS объектов на всех узлах сети. DBT Slave(совпадающий с NMT Slave) может запросить у DBTMaster выполнение распределения идентификаторов.DBT предоставляет две группы сервисов:NNDistribution Control ServicesСервисы распределения обеспечивают динамическоеназначение идентификаторовConsistency Control ServicesСервисы этой группы обеспечивают возможностьпроверки корректности одноименных CMSобъектов, созданных на различных узлах.LMT <strong>–</strong> управление <strong>уровня</strong>миСервисный элемент LMT (Layer ManagemenT) позволяетизменять NMT адрес и некоторые параметрыканального <strong>уровня</strong> сети (bit timing parameters).Возможность изменения NMT Address обеспечиваетвыполнение оперативной реконфигурации сети.Для реализации процесса распределения используетсямодель Master/Slave, подобная модели NMT(Рис. 10). Каждый LMT Slave обладает не изменяемымLMT Address (серийным номером), благодарякоторому LMT Master может идентифицировать LMTSlave, <strong>для</strong> которого требуется изменить или прочестьпараметры.Пакеты <strong>CAL</strong> <strong>протокол</strong>аСуществуещее на рынке программное обеспечение,реализующее <strong>CAL</strong> <strong>протокол</strong>, позволяет легкои быстро создавать <strong>CAL</strong> приложения. Так, напри-www.<strong>datamicro</strong>.biz • (8634) 314-000 • www.<strong>datamicro</strong>.<strong>ru</strong> 11


<strong>CAL</strong> - <strong>CAN</strong> <strong>протокол</strong> <strong>прикладного</strong> <strong>уровня</strong> <strong>для</strong> промавтоматикиТабло888888Весовая АВТОРазгрузка ЖДABBВесовая ЖДТабло888888A BBПроходная<strong>CAN</strong>РазгрузкаАВТО12Отпускныевесы наводуТаганрогскийзаливAABBBBАВТО весыRS232УзелдоступаШлюз<strong>CAN</strong>RS232ЛабораторияУзелдоступаЛаб. весы IЖД весыRS232<strong>CAN</strong>Шлюз<strong>CAN</strong>RS232Лаб. весы IIЯМРRS232RS232<strong>CAN</strong> сеть технологического процессаРадиоEthernet на подсистемууправления и принятия решенияМастертех. процессаРис. 11. Структура системы управления приемки зерна на зерновой терминалмер, пакет <strong>CAL</strong> Protocol Software от фирмы IXXATAutomation GmbH 2 , который поставляется в исходномкоде, покрывает все коммуникационные задачи,определяемые спецификацией <strong>CAL</strong>. Это позволяетпроектировщику системы сконцентрироватьсятолько на его приложении.Согласно делению <strong>CAL</strong> на четыре сервисных элемента(см. Рис. 1), <strong>CAL</strong> Protocol Software такжесостоит из отдельных модулей. Пакет может бытьлегко сконфигурирован и адаптирован к функциональнымвозможностям, требуемым приложением.Это означает, что к прикладным задачам не будутдобавлены ненужные функциональные сетевыевозожности.Доступ к <strong>CAN</strong> контроллеру (например, передача иприем объектов) выполняется через интерфейс канального<strong>уровня</strong> данных, который также реализованв виде отдельного модуля. Это позволяет выполнятьпростую адаптацию пакета к различным <strong>CAN</strong> контроллерами ресурсам системы. Пакет доступен вверсиях Slave и Master/Slave.2 http://www.ixxat.comВ случае, если проектировщик желает полностьюотделить прикладную систему от процесса связи по<strong>CAN</strong>, он может воспользоваться интеллектуальнойинтерфейсной PC/<strong>CAN</strong> платой, например iPC-I 320/PCI (на контроллере от DALLAS Semiconductor, совместимомс 8051), iPC-I 165 (на контроллерах отSiemens), tin<strong>CAN</strong> (PCMCIA), и микрокодом пакета<strong>CAL</strong> Windows DLL.Все функциональные возможности <strong>CAL</strong> <strong>протокол</strong>ареализуются через API, который доступен в видеDLL <strong>для</strong> Windows 3.11, 95/NT (включая требуемыедрайверы). Доступна версия и <strong>для</strong> DOS, котораяможет быть легко перенесена на другие операционныесистемы, подобные VxWorks, VRTX или OS/2.Пакет <strong>CAL</strong> Windows DLL доступен в версиях Slave иMaster/Slave.Пример реализациираспределенной системы сиспользованием <strong>CAL</strong>Все примеры, приведенные в статье, взяты из реальногопроекта управления приемкой зерна наwww.<strong>datamicro</strong>.biz • (8634) 314-000 • www.<strong>datamicro</strong>.<strong>ru</strong> 12


<strong>CAL</strong> - <strong>CAN</strong> <strong>протокол</strong> <strong>прикладного</strong> <strong>уровня</strong> <strong>для</strong> промавтоматикизерновом терминале (г. Таганрог). Общая структурасистемы приведена на рис. 11.Цель системы <strong>–</strong> обеспечить съем и передачу информациииз разнообразного оборудования в подсистемуучета и принятия решений зернового терминала.Сеть объединяет и обеспечивает съем данныхи управление следующим оборудованием:NNNNNВесовые автомобильная <strong>–</strong> Лахта СВ-60000А (Петровес,Россия) и железнодорожная <strong>–</strong> Лахта СВ-100000АРазгрузки автомобильные и железнодорожнаяОтпускные морские весы <strong>–</strong> MWET (Buhler, Германия)Лабораторное оборудование <strong>для</strong> анализа качествазерна <strong>–</strong> высокоточные весы САРТ-ГОСМBP2100 (Сарториус, Россия)Ядерно-магнитный резонатор <strong>–</strong> Minispec (B<strong>ru</strong>ker,Германия)Большая часть оборудования использует интерфейсRS-232 <strong>для</strong> управления и передачи данных. Каждаяединица оборудования оснащена двумя <strong>CAN</strong> узлами:шлюзом RS232/<strong>CAN</strong> и модулем доступа, обеспечивающимавторизацию оператора с помощью бесконтактнойReadOnly смарт-карты (фирма EM-MARIN)и учет транспорта с зерном с помощью “таблетки”iButton (фирма DALLAS Semiconductor).При разработке <strong>прикладного</strong> программного обеспечениябыл использован пакет dm<strong>CAL</strong>. Данныйпакет разработан на языке ANSI C. При реализациимодулей пакета использовались базовые программныесредства ОС РВ dmOS-51 2.0 [8] и драйвер <strong>CAN</strong>канального <strong>уровня</strong> [9].Благодаря тому, что программы пакета написаны наязыке C, в процессе выполнения работы при незначительныхзатратах он был портирован <strong>для</strong> ОС РВRTX-51 Tiny (Keil Software), MS DOS и Windows 9x/NT.Основная проблема состояла в переносе драйвера<strong>CAN</strong>, так как использовались существенно разныеОС и различные <strong>CAN</strong> контроллеры.На написание <strong>прикладного</strong> ПО было затрачено около2 человеко/месяцев. Реализация подобного распределенногоприложения без использования <strong>CAL</strong>потребовала бы существенно больших временныхзатрат при большом количестве ошибок.Литература1. Jens Uphoff, Theory and Practi-cal Experience with<strong>CAL</strong>-based Indus-trial Control, Proc. of the FirstInt. <strong>CAN</strong> Conf. (iCC’94), CiA, Erlangen, Germany2. Wolfhard Lawrenz: “Vernetzte Systeme imAutomobil dez Zukunft <strong>–</strong> Modellbildung”, HohereLagen, Werkzeuge, forderkennzeichen: TV8933Prometheus Phase II, TIB Hannover, September19933. Третьяков С.А., «<strong>CAN</strong> на пороге нового столетия»,МКА, № 2, с. 54-65, 19994. CiA/DS201/DS207 <strong>CAL</strong> Specification, Version 1.1,Feb<strong>ru</strong>ary 19965. Wolfhard Lawrenz. <strong>CAN</strong> System Engineering.,Springer, 19976. Erich-Jurgen Heins, A Real-time PC with iRMX forWindows con-trols Medical System Components directlyvia a <strong>CAN</strong> Network, Proc. of the First Int. <strong>CAN</strong>Conf. (iCC’94), CiA, Erlangen, Germany7. <strong>CAN</strong> Specification. Version 2.0. 1991, Robert BoschGmbH8. ОС dmOS-51, v.2.0. Руководство программиста.DATAMICRO, Таганрог, октябрь 1998.9. Драйвер <strong>CAN</strong>-контроллера, v.2.0. Руководствопрограммиста. DATAMICRO, Таганрог, октябрь1998.10. Пакет <strong>CAL</strong> Slave, v.1.01. Руководство программиста.DATAMICRO, Таганрог, декабрь 1998.www.<strong>datamicro</strong>.biz • (8634) 314-000 • www.<strong>datamicro</strong>.<strong>ru</strong> 13

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!