Формат пакета РТМ-64var
Канал связи
Физическая связь контроллера в системе «Мега» возможна разными типами интерфейсов. Основное тело пакета не зависит от типа интерфейса, изменяются только обрамляющие пакет пилоты или преамбулы. Так, для проводного интерфейса RS-232/485 применяются пилоты 0x7E, как показано на рис.П.Б.1. Для радиоинтерфейса применяются преамбулы, отличительные для каждого вида радиосвязи.
Назначение пакета
Пакет предназначен для обмена данными в цифровой форме между территориально удаленными устройствами- отправителем и получателем, между которыми может не существовать непосредственной связи. Для такого случая между удаленными устройствами должны находиться промежуточные устройства- ретрансляторы, которые помогают доставить пакет от устройства отправителя к устройству-получателю. При этом доставка пакета на всем пути следования может осуществляться разными видами связи- проводной или радиосвязью.
Порядок расположения устройств, участвующих в процессе передачи и приема пакета, называется маршрутом.
Каждый пакет именованный, обязательно содержит двухбайтный код, который называется кодом команды. Код команды определяет назначение данных, содержащихся в пакете.
Формат данных
Данные передаются в виде пакетов, предваряемых заголовком. Общее количество байтов в пакете может изменяться от 10 до 255, минимальная длина пакета определяется минимальной длиной заголовка без присутствия данных. В системе «Мега» существует формат с фиксированной размером тела данных- 64 байта, однако он является устаревшим и здесь не рассматривается.
Заголовок начинается байтом «Адресатов всего», младшая тетрада которого указывает количество адресатов в маршруте. Адресатов в маршруте может содержаться не меньше одного и не более 15. Старший бит этого байта определяет способ расчета контрольной суммы КС (находится в конце пакета). При =0 двухбайтное значение КС содержит простую побайтную сумму разделов пакета «Заголовок» и «Данные». При =1 КС содержит CRC-16, вычисленный по полиному 0x1021.
Второй байт заголовка, «Признак var», имеющий значение 0xF0, указывает на вид протокола- РТМ-64var.
Третий байт заголовка, «Длина блока», определяет всю длину пакета за вычетом пилотов или преамбулы и вычисляется по формуле:
«Длина блока»=6 + 2*«Адресатов всего» + «Данные» + КС, где «Адресатов всего» - допустимое количество промежуточных ретрансляторов + один конечный получатель, «Данные» - количество байтов данных в теле (области) данных, КС- два байта контрольной суммы.
Четвертый байт заголовка «Резервные флаги» содержит резервные флаги, которые сейчас не используются и не имеют значение.
Пятый и шестой байты заголовка «Команда» указывают код команды, передаваемой пакетом. Код передается старшим байтом вперед.
Последующие двухбайтные слова заголовка «Адрес x» содержат адреса всех устройств, задействованных в обмене. Количество адресов и соответственно занимаемое ими место в заголовке однозначно определяется значением первого байта заголовка, «Адресатов всего». Адреса располагаются в заголовке в том порядке, в каком располагаются устройства с соответствующими адресами в маршруте прохождения пакета. Возможные значения адресов могут назначаться из диапазона 2…4095. В пакете могут располагаться одноименные адреса, но для корректной работы устройств связи одинаковые адреса не должны соседствовать в заголовке.
Крайний правый адрес в пакете рис.1 всегда принадлежит получателю пакета. По мере прохождения пакета через ретрансляторы каждый очередной ретранслятор, опознавший свой адрес в заголовке пакета, должен выставить признак прохождения пакета через этот ретранслятор установить старший бит старшего байта в «1». Таким образом, каждое устройство, принявшее пакет, в первую очередь примеряет на себя самый левый адрес, не имеющий признак прохождения пакета установленный в «1» бит <15> слова адреса.
Остающиеся незадействованными три бита <14…12> слова адреса определяют вид связи, по которому владелец адреса должен отправить этот пакет. Всего видов связи может быть 8, в контроллерах системы «Мега» за ними зарезервированы следующие аппаратные исполнения: 000b и 001b- интерфейс RS-232/485, 010b- радиосвязь ближнего радиуса действия, 011b- проводная связь телемеханики, 100b- радиосвязь дальнего радиуса действия, 101b- дополнительный интерфейс RS- 232/485, 110b- связь через GPRS-модем, 111b- передача MODBUS-пакета средствами протокола РТМ-64var.
Тело данных «Данные» содержит передаваемые значения, организованные пользователями в зависимости от названия команды «Команда». Размер тела данных может быть от 0 до 245 байт (при пакете без ретрансляторов).