ЗАО
НАУЧНО-ПРОИЗВОДСТВЕННАЯ ФИРМА ЛОГИКА
МАГИСТРАЛЬНЫЙ ПРОТОКОЛ
Руководство программиста
РАЖГ.00276-33
–
ЛОГИКА ТЕХНОЛОГИЯ ПРОФЕССИОНАЛОВ
© ЗАО НПФ ЛОГИКА, 1998, 2011
Отдельные изменения, связанные с дальнейшим совершенствованием изделий, поддерживающих настоящий протокол, могут быть не отражены в настоящем 2-м издании.
РОССИЯ, 190020, г. Санкт-Петербург, наб. Обводного канала, 150 Тел./факс: (812) 2522940, 4452745; [email protected]; www.logika.spb.ru Магистральный протокол. Руководство программиста Содержание Введение
1 Основные положения
1.1 Принципы магистрального обмена
1.2 Режимы передачи данных
1.3 Адресация абонентов
1.4 Магистральные компьютеры
1.5 Удаленный доступ
1.6 Локальный доступ
1.7 Локальное оперативное подключение
2 Управление магистралью
2.1 Типы маркеров
2.2 Маркерные циклы
2.3 Управляющие таймауты
2.4 Начальное прослушивание
3 Форматы сообщений
3.1 Общая структура
3.2 DLE-стаффинг
3.3 Контрольные коды
3.4 Указатели и информация при символьном обмене
3.5 Чтение параметров
3.6 Запись параметра
3.7 Чтение элементов индексного массива
3.8 Запись элемента массива с индексацией
3.9 Чтение временных массивов
3.10 Внутренняя организация архивов
3.11 Определение структуры архива
3.12 Чтение временного среза архива
4 Протяжённость магистрали
4 Магистральный протокол. Руководство программиста Введение Излагаемые в данном документе сведения относятся к следующим типам приборов фирмы ЗАО НПФ ЛОГИКА:
- тепловычислители СПТ961, СПТ961М, СПТ961.1, СПТ961.2;
- корректоры расхода газа СПГ761, СПГ761.1, СПГ761.2, СПГ762, СПГ762.1, СПГ762.2, СПГ763, СПГ763.1, СПГ763.2;
- сумматор электрической энергии и мощности СПЕ542.
Для построения информационных систем, состоящих из групп указанных приборов (в том числе смешанного состава) и персональных компьютеров используется магистральный интерфейс. Он обеспечивает непосредственное подключение каждого прибора к двухпроводной информационной магистрали. На аппаратном уровне магистраль соответствует стандарту RS485. Обмен по магистрали осуществляется с помощью магистрального протокола.
1 Основные положения 1.1 Принципы магистрального обмена По логической организации магистральный интерфейс представляет собой либо шину с маркерным доступом и 9-битовым форматов байтов (шина 1), либо шину с одним ведущим устройством и 8-битовым форматом байтов (шина 2), либо шину с маркерным доступом и 8-битовым форматом байтов (шина 3).
Для шин с маркерным доступом разработанный фирмой магистральный протокол включает в себя процедуры циркуляции маркера, захвата магистрали и контроля её использования. Обеспечивается передача сообщений переменной длины до 5,7 Кб. Все магистральные абоненты равноправны в смысле возможности доступа к ней для передачи сообщения. На магистрали нет постоянно выделенного ведущего, управляющего её использованием. Получение циркулирующего по магистрали маркера разрешает абоненту передачу одного сообщения любому другому абоненту по выбору. Закончив передачу, абонент выводит маркер освобождения, который разрешает доступ к магистрали другому абоненту.
На шине с одним ведущим устройством только это устройство постоянно управляет использованием магистрали.
1.2 Режимы передачи данных Обмен может выполняться на скоростях 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с. На начальном этапе запуска магистрали выбирается и фиксируется для всех абонентов скорость её дальнейшей работы. Снижение скорости в общем случае позволяет увеличить протяженность магистрали.
Для передачи сообщений и маркеров на шине с маркерным доступом используется асинхронная старт-стопная передача байтов. Формат байтов на магистрали для шины 1 следующий: один стартовый бит, восемь информационных, один управляющий и один стоповый. Контрольный бит для шины 1 не используется. Формат байтов на магистрали для шины 3 следующий: один стартовый бит, восемь информационных, один бит нечётности и один стоповый. Из информационных первым передаётся младший бит. Стоповый бит может быть укороченным, но не более, чем на половину.
Сообщения по шине с одним ведущим устройством передаются в том же формате, в котором они передаются по шине с маркерным доступом, однако формат байтов другой – отсутствует управляющий бит. Кроме того, на шине с одним ведущим устройством отсутствуют какие-либо маркерные процедуры.
1.3 Адресация абонентов К магистрали может быть подключено до 30 абонентов. Каждому абоненту должен быть задан уникальный адрес из диапазона от 0 до 29. Адреса рекомендуется назначать от нуля подряд, без пропусков. При этом взаимное расположение абонентов на магистрали не имеет значения. Процедуры управления магистралью требуют, чтобы старший адрес был известен всем абонентам. Он используется для организации маркерных циклов на шине с маркерным доступом.
Помимо магистрального интерфейса абонент может иметь дополнительный интерфейс (направление) типа "точка-точка" и осуществлять ретрансляцию магистральных сообщений в этот интерфейс и обратно из интерфейса в магистраль. Адрес дополнительного направления формируется из магистрального адреса соответствующего абонента добавлением 128 (установлен старший бит в адресном байте). Таким образом, дополнительные адреса могут принимать значения из диапазона 128...157.
Получив сообщение из магистрали со своим адресом, в котором установлен старший бит, абонент направляет его в дополнительный интерфейс. Если по дополнительному интерфейсу получено сообщение с адресом назначения, отличным от магистрального адреса данного абонента, то он передает его через магистраль соответствующему адресату. Адресатами могут быть магистральные абоненты или их дополнительные направления. В последнем случае первоначально сообщение передается магистральному абоненту, и он затем выводит его в свой дополнительный интерфейс.
Сообщения по дополнительному интерфейсу передаются в том же формате, в котором они передаются по магистрали. Однако формат байтов другой – отсутствует управляющий бит. Кроме того, на дополнительном направлении отсутствуют какие-либо маркерные процедуры.
Передача сообщений по дополнительному направлению может осуществляться на скорости отличной от магистральной. Абонент производит буферизацию сообщений между магистралью и дополнительным направлением для выравнивания скоростей.
У приборов фирмы ЛОГИКА в качестве дополнительного интерфейса используются RS232 и оптический интерфейс по стандарту МЭК1107. Одновременно может работать только один из них.
Выбор осуществляется с лицевой панели прибора.
Оптический интерфейс содержит только каналы передачи и приема данных, а RS232 включает пять цепей: цепь сигнального заземления SG; цепи приема и передачи данных - RxD и TxD; цепи управления потоком данных - RTS и CTS. С помощью двух последних цепей приборы могут осуществлять однонаправленное или двунаправленное управление потоком данных.
1.4 Магистральные компьютеры К информационной магистрали помимо приборов могут подключаться компьютеры. В этом случае они являются такими же абонентами, как и приборы. Обычно персональные компьютеры не имеют интерфейса RS485, поэтому фирма ЛОГИКА выпускает специальный адаптер АПС79 для сопряжения компьютера с магистралью. Адаптер представляет собой устройство, подключаемое к СОМ-порту компьютера. К шине с маркерным доступом может быть подключено несколько компьютеров через адаптеры АПС79.
К шине с одним ведущим может быть подключен один компьютер через какой-либо из преобразователей RS232 RS485, или через интерфейс RS232С одного из приборов (см. раздел 1.6).
1.5 Удаленный доступ Дополнительный интерфейс абонента может представлять собой коммутируемую или выделенную телефонную линию, а также радиоканал. В этом случае, ретранслируя сообщения между магистралью и дополнительным направлением, абонент обеспечивает удаленный доступ к магистрали.
Интерфейс RS232 приборов фирмы ЛОГИКА обеспечивает различные виды связи. Так, приборы поддерживают работу с телефонными модемами, использующими AT-систему команд.
Рассмотрим порядок работы на коммутируемых телефонных линиях. Исходно прибор находится в режиме команд (по терминологии AT-соединений) и ожидает входящего вызова, то есть передачи к нему по линии данных слова RING. Если вызов поступает в разрешенное для работы на линии время, то он принимается. Прибор сразу, либо после получения заданного числа слов RING, снимает трубку, отвечая АТА. Далее прибор ожидает слово CONNECT, после чего переходит в режим данных. Теперь по дополнительному направлению могут передаваться только форматные сообщения, применяемые в магистральном протоколе. Любые команды модема игнорируются, поскольку не являются форматными сообщениями. Если вместо CONNECT поступает NO CARRIER, прибор остается в командном режиме.
В режиме данных прибор контролирует интенсивность использования коммутируемого соединения. Если по направлению к модему из прибора в течение 2 минут не передавались сообщения, то он переходит в режим команд и переводит в него модем. Для этого прибор выводит последовательность из трех знаков +++, обрамленную полуторасекундными паузами. Затем он вешает трубку, передавая команду ATH0.
Описанная процедура перехода в режим команд по таймауту означает, что если модем перешел в режим команд самостоятельно в связи с разрывом соединения, прибор будет готов к приему нового входящего вызова не более чем через две минуты.
В режиме данных никакие команды по цепям данных для управления потоком не используются.
Возможно только аппаратное управление с помощью цепей RTS и CTS.
Работа по выделенным телефонным линиям и по радиоканалу предполагает, что прибор постоянно находится в режиме данных и допускает использование только форматных сообщений магистрального протокола.
1.6 Локальный доступ Возможно также локальное подключение компьютера к магистрали через прибор, который является абонентом магистрали. В этом случае соединение осуществляется с помощью физической линий по трех- или пятипроводной схеме нуль-модемного соединения между COM-портом компьютера и приборным интерфейсом RS232. Прибор-абонент обеспечивает ретрансляцию форматных сообщений между магистралью и локальным компьютером.
Здесь в отличие от рассмотренного выше магистрального компьютера не требуется адаптер интерфейса RS485, но число цепей в соединении больше. Программное обеспечение компьютера проще, т.к. не должно поддерживать маркерный цикл. Это осуществляет прибор.
1.7 Локальное оперативное подключение Оптический интерфейс прибора предназначен для оперативного соединения компьютера (например, переносного) с прибором. Если прибор магистральный, то он может осуществлять ретрансляцию форматных сообщений между компьютером и магистралью. Интерфейс реализован с применением адаптеров АПС70 или АПС71.
АПС70 представляет собой головку цилиндрической формы, содержащую источник и приемник инфракрасного излучения. Головка, соединенная кабелем с COM-портом компьютера, временно (на сеанс обмена) закрепляется магнитной защелкой на лицевой панели прибора в гнезде оптического порта. АПС71 выполнен аналогично АПС70, но содержит в себе дополнительно преобразователь USB/COM и подключается к USB порту компьютера.
Оптическое соединение выполняется на лицевой панели прибора в следующем порядке:
- устанавливается адаптер АПС70 (АПС71) в гнезде оптического порта прибора;
- последовательным нажатием кнопки МЕНЮ выбирается пункт Прибор;
- затем выбирается пункт Порт и нажимается стрелка вниз ;
- на табло прибора появляется сообщение "Оптопорт включен".
В этот момент интерфейс переходит в начальное состояние согласования скоростей, как это требуется по стандарту МЭК1107. Программа компьютера должна вывести и принять ряд сообщений, которые описанных ниже.
Формат сообщений соответствует двухточечному протоколу по стандарту МЭК1107. В процессе этого диалога, который выполняется на скорости 300 бит/с, устанавливается скорость последующего обмена и происходит переключение на магистральный формат сообщений.
Передача ведется в символьном формате. Формат символа соответствует стандарту ИСО 646 ( стартовый бит, 7 битов данных, 1 бит четности, 1 стоповый бит). Данные кодируются в соответствии с 7-битной таблицей кодов ASCII.
Для начала обмена данными со сторон внешнего оборудования в прибор со скоростью передачи 300 бит/с посылается сообщение запрос сеанса Начальному символу "/" соответствует шестнадцатеричный код 2Fh. Символ "?", код 3Fh, предлагает прибору начать сеанс обмена данными. Конечный символ "!", код 21h, ограничивает текстовую часть запроса. Завершают сообщение символы CR (возврат каретки, код 0Dh) и LF (перевод строки, код 0Ah).
В ответ на запрос сеанса прибор также со скоростью 300 бит/с передает идентифицирующее сообщение LGK три буквы, идентифицирующие изготовителя прибора, например, ЗАО НПФ ЛОГИКА;
принимает значения от нуля до девяти и указывает скорость, с которой прибор готов вести обмен данными: 0 300 бит/с, 1 600 бит/с,... 9 – 115200 бит/с;
T1...T6 шесть символов, указывающих тип прибора; например, для прибора СПТ961 это P1 P2 два символа, описывающие возможности прибора при переходе на этом этапе к магистральному протоколу обмена. Первый символ, P1, указывает, закрыт или доступен магистральный протокол (0/1). Второй, P2, указывает, какая скорость установлена для магистрального протокола в параметре "Спецификация внешнего оборудования";
I1 I2 I3 три младших цифры идентификатора прибора (параметр 008);
завершающий символ возврата каретки;
завершающий символ перевода строки.
Далее со стороны внешнего оборудования в прибор со скоростью 300 бит/с должно быть передано подтверждение выбора скорости передачи:
Здесь АСК - символ подтверждения, его код 06h.
Прибор отвечает символом подтверждения: АСК Далее обмен данными осуществляется на согласованной в начальной фазе скорости и в магистральном протоколе.
В приборе для обслуживания интерфейса RS232 и оптического канала используются одни и те же аппаратные средства, поэтому при включении оптопорта работа RS232 блокируется. Она восстанавливается автоматически, если обмен через порт не производится в течение двух минут. Это должна учитывать компьютерная программа и поддерживать соответствующий темп обмена. Когда сеанс обмена заканчивается, пользователь отключает АПС70 (АПС71). Через две минуты работа RS232 восстанавливается.
2 Управление магистралью 2.1 Типы маркеров Управление магистралью осуществляется с помощью специальных двухбайтовых (шина 1) или трёхбайтовых (шина 3) маркеров, которые в определенные моменты времени может выводить каждый абонент и требуемым образом менять состояние магистрали.
Первый байт в маркере всегда одинаков – это флаг, в котором восемь информационных бит и управляющий установлены в единицу. Флаг-байт необходим, чтобы магистральные аппаратные средства приборов перешли в состояние, обеспечивающее однозначную интерпретацию второго байта.
Следующие маркеры различаются для шины 1 и 3.
Второй байт для шины 1 имеет следующую структуру:
Биты нумеруются, начиная с младшего информационного. Пять битов A4A3A2A1A0 составляют адресную часть маркера. Два бита M1M0 указывают тип маркера. Седьмой бит всегда равен нулю и отличает этот байт от флаг-байта. Восьмой бит является управляющим и принимает значение 0 или 1 в зависимости от типа маркера.
Различаются следующие типы маркеров:
U=1 и M1M0 = 01 маркер захвата магистрали;
U=1 и M1M0 = 10 маркер отказа от магистрали;
U=0 и M1M0 = 11 маркер подтверждения.
Данный раздел относится только к шине с маркерным доступом Второй байт для шины 3 имеет следующую структуру:
Третий байт для шины 3 имеет следующую структуру:
M1M0 = 01 маркер захвата магистрали;
M1M0 = 10 маркер отказа от магистрали;
M1M0 = 11 маркер подтверждения.
Все байты маркера всегда выводятся подряд. Пауза между ними не должна превышать времени передачи одного байта на выбранной скорости работы магистрали.
2.2 Маркерные циклы Общая схема маркерных циклов такова. Пусть в некоторый момент времени абонент с адресом i получил доступ к магистрали. Если у него имеется сообщение для передачи по магистрали, то он выводит маркер захвата, в адресной части которого указывает магистрального адресата. Получив маркер захвата, адресат обязан вывести маркер подтверждения с собственным адресом. Если такое подтверждение не получено, абонент i уничтожает сообщение и выводит маркер отказа от магистрали с указанием собственного адреса. Если подтверждение получено, то в магистраль выводится одно форматное сообщение, и уже после него маркер отказа. Для шины 1 во всех байтах сообщения бит U=0. Непосредственно перед сообщением выводится флаг-байт.
Если абонент не имеет сообщения, он выводит маркер отказа. Передача по магистрали маркера отказа с адресом i означает, что доступ к магистрали переходит к абоненту с адресом i + 1. Он выполняет те же действия, что и предшествующий абонент. Когда выводится маркер отказа с адресом N, доступ к магистрали получает абонент с адресом 0. Здесь N – максимальный из адресов абонентов участвующих в циклах вывода маркеров захвата и отказа.
Различаются активные и пассивные абоненты. Первые поддерживают циркуляцию, передавая маркеры захвата и отказа. В случае, когда они адресуются для приема сообщения, активные абоненты выводят маркер подтверждения. Вторые могут быть только адресованы и выводят маркер подтверждения. Адреса пассивных абонентов целесообразно назначать вне диапазона адресов активных, нумеруя их от 29 в сторону уменьшения. Примером пассивного абонента является адаптер принтера АПС43. Он всегда имеет фиксированный адрес 29. Все приборы являются активными абонентами.
2.3 Управляющие таймауты Передаваемые маркеры могут искажаться помехой. Кроме того, абоненты могут отключаться от магистрали, например, вследствие отключения питания прибора или магистрального компьютера, изъятия прибора для проведения поверки и ремонта и т.п. Все эти обстоятельства не должны останавливать работу магистрали, то есть маркерные циклы.
Поэтому абонент с адресом i получает доступ к магистрали не только, когда получен маркер отказа от абонента i – 1 (этот абонент может отсутствовать). Доступ автоматически переходит к нему, когда закончился некоторый таймаут. Здесь возможно использование одного из двух таймаутов – Т ЗХ и ТОТ.
Первый вычисляется и устанавливается всякий раз, когда абонент i выделил на магистрали маркер захвата, а второй – когда выделил маркер отказа. Вычисления таймаутов производятся по формулам:
TМ – время необходимое для передачи максимального сообщения размером 5,7 Кб на выбранной скорости работы магистрали;
TЗХ таймаут захвата, мс;
Тот – таймаут отказа, мс;
магистральный адрес абонента;
k – адрес, указанный в маркере отказа;
TБ – задержка, зависящая от выбранной скорости работы магистрали (см. таблицу 2.1).
Таким образом, когда какой-либо из абонентов отказался от использования магистрали, все остальные начинают ожидать, что магистраль захватит (или откажется) абонент со следующим по возрастанию адресом. Каждому следующему выделяется свое временне окно. Если абонент захватил магистраль и слишком долго не освобождает ее, то доступ перейдет к действующему абоненту с самым младшим адресом.
Очевидно, что среднее время ожидания доступа пропорционально N. Если его не указывать каждому абоненту, а положить в формулах N=29, то магистраль останется работоспособной при любом числе абонентов, но время ожидания неоправданно увеличится. Поэтому значение N указывается каждому абоненту.
На магистрали используется ещё один обязательный таймаут – TА= 4мс. Это обязательная минимальная задержка между выключением передатчика одним абонентом и включением передатчика другим абонентом. Задержка необходима для завершения переходных процессов, чтобы не произошло искажение передаваемого сообщения или маркера.
2.4 Начальное прослушивание Для синхронизации с работой магистрали абонент после логического подключения к ней выполняет начальное прослушивание. Логическое подключение прибора происходит при включении его питания, а также при каждом рестарте. Алгоритм прослушивания следующий. В течение первых двух секунд абонент контролирует прохождение любых байтов (данных или маркеров). При активной магистрали за это время должен пройти хотя бы один байт. Если байт(ы) зафиксирован, то устанавливается таймаут TЗХ. В течение этого периода должны поступить управляющие маркеры. Они синхронизируют абонента с магистралью, или доступ автоматически перейдет к данному абоненту.
Если байты (байт) не зафиксированы, то устанавливается другой, более короткий таймаут:
Тнп – таймаут начального прослушивания;
TБ – задержка, зависящая от выбранной скорости работы магистрали (см. таблицу 2.1);
N – старший магистральный адрес;
i – магистральный адрес абонента.
Неактивной магистраль может оказаться, например, если все абоненты имеют одну питающую цепь, по которой прошла помеха, вызвавшая синхронный рестарт приборов. В этом случае они все приступят к начальному прослушиванию. Передача будет отсутствовать. Все приборы, как видно из формулы, установят различные таймауты, что позволит избежать столкновения маркеров при запуске циклов.
3 Форматы сообщений 3.1 Общая структура Сообщения состоят из заголовка, тела и следующей за ними контрольной информации. Эти составляющие имеют формат:
- заголовок - тело сообщения (данные) - контрольная информация Для структурирования сообщений используются управляющие символы:
SOH = 01h начало заголовка, ISI = 1Fh указатель кода функции FNC, STX = 02h начало тела сообщения, ETX = 03h конец тела сообщения.
Здесь и далее буква h указывает, что значение приведено в шестнадцатеричной системе счисления.
Использованы следующие обозначения:
DAD байт адреса приёмника, SAD байт адреса источника, FNC байт кода функции, CRC1, CRC2 циклические контрольные коды.
Адреса DAD и SAD являются адресами абонентов на магистрали или дополнительном интерфейсе.
При передаче сообщения через магистраль в адресную часть маркера захвата помещаются пять младших битов из DAD, а в адресную часть маркера подтверждения - из SAD.
Допускается использование безадресных заголовков вида:
Однако в этом случае абонент-получатель полагает, что оно адресовано ему. Если получателем является прибор и сообщение содержит запрос, то ответ направляется в дополнительный интерфейс и тоже в безадресном виде.
Заголовок и тело сообщения могут включать поля переменной длины, соответственно DataHead и DataSet. Эти поля содержат данные, которые могут быть как символьными, так и двоичными.
Код FNC в заголовке сообщения определяет, как должны интерпретироваться и обрабатываться данные DataSet из тела сообщения. Если данные отсутствуют, то сообщение является управляющим или подтверждающим выполнение абонентом каких-либо действий.
3.2 DLE-стаффинг Для того, чтобы можно было выделять управляющие символы на фоне двоичных данных, управляющие символы отмечаются символом-префиксом DLE=10h. Он всегда предшествует управляющему символу. Поэтому при передаче сообщения в действительности имеют следующий вид.
Заголовок Тело сообщения Все поля от DAD до ETX включительно подвергаются DLE-стаффингу, то есть к каждому обнаруженному символу DLE добавляется еще один. Затем формируется контрольная информация.
Полученные два байта записываются за ETX без стаффинга.
Стаффинг применяется всегда, вне зависимости от того является ли сообщение двоичным или символьным.
3.3 Контрольные коды Контрольные коды насчитывается с байта, следующего за SOH, поскольку два первых байта DLE и SOH проверяются явно при выделении начала сообщения. Контрольные коды охватывают все байты, включая ETX и все стаффинг-символы в этом промежутке. Алгоритм расчета циклического контрольного кода приведен ниже, в виде функции на языке С. Функция возвращает 16-ти разрядное целое число, старший байт которого CRC1, а младший CRC2. Если приписать эти байты к сообще нию и повторно выполнить функцию, включая в промежуток обработки и эти байты, то результат должен быть нулевым.
//////////////////////////////////////////////////////// //Функция вычисляет и возвращает циклический код для //последовательности из len байтов, указанной *msg.
//Используется порождающий полином:
//(X в степени 16)+(X в степени 12)+(X в степени 5)+1.
//Полиному соответствует битовая маска 0x1021.
int CRCode (char *msg, int len)