Описание шаблонов кадров

<< Click to Display Table of Contents >>

Navigation:  Проект > Элементы дерева объектов > Палитра ФБ > Служебные > Master PLC SmartLink >

Описание шаблонов кадров

Содержание кадров запросов или ответов можно условно разбить на части, как это обычно делается в описаниях протоколов (например: адрес, сумма байт данных, значения, контрольная сумма,  и. т. п.) Каждая часть кадра соответствует выражению в шаблоне.

 

 

Можно выделить следующие части, из которых состоят кадры и которые необходимо описывать:

 

Статический (символ начала, конца, адрес и т.п.)

Данные входов-выходов ФБ

Результат вычислений, зависящий от текущего содержания кадра (CRC, количество байт)

 

 

Для описания шаблона кадра используется строка специального формата.

 

Ниже перечислены выражения, с помощью которых описываются шаблоны:

 

Статические выражения.

 

Используются для описания тех частей кадра, которые не меняются в режиме исполнения, например: символ начала кадра, адрес опрашиваемого устройства. Статическое выражение помещается в кадр (а при получении ответа - сравнивается) в виде ASCII кодов символов, записанных пользователем в шаблоне. Это наиболее удобно для текстовых протоколов. Если же требуется употребить в выражении бинарные данные, используйте знак ‘\’ перед значением каждого байта, записанного в шестнадцатеричном формате (\xx – символ с кодом xx).

 

 

Можно также использовать следующие символы:

 

\r – <CR> - возврат каретки (код 0D);

\n - <LF> -  перевод строки;

\\ - символ ‘\’

 

 

Примеры:

 

шаблон

кадр (пробелы вставлены для наглядности)

123\r

31 32 33 0D

\31\32\33\0D

31 32 33 0D

 

 

 

Специальные выражения.

 

Специальные – это все выражения кроме статических. Они должны быть обрамлены фигурными скобками - {выражение}. Не допускается рекурсия (т.е. выражения, вложенные, в другие выражения).

 

Метка.

 

Выражения-метки не попадают в кадр запроса и не ожидаются в кадрах ответов. Они используются для выделения какого-то участка кадра. Например, контрольная сумма часто рассчитывается без учета байт самой контрольной суммы, а также начального и конечного символов. Чтобы пометить определенные места, в шаблоне употребляются метки с идентификаторами, а эти идентификаторы затем используются в тех выражениях шаблона, где необходимо указать отмеченный метками участок.

 

Общий вид:

 

{L:<ИД>}

‘L’ – символ, указывающий, что выражение является меткой, через двоеточие указывается <ид> - идентификатор метки. Идентификатором метки может быть любой символ от 0 до 9 (то есть максимально 10 меток).

 

Например:

xxxх{L:0}xxxх{L:5}xxxх{L:2}

 

 

Значения входов ФБ в запросах и выходов ФБ в ответах.

 

Ввиду многообразия существующих протоколов, для значений необходимо указывать несколько атрибутов, позволяющих его правильно интерпретировать в(из) последовательность байт.

 

Общий вид:

 

{P(<Нач_вх>-<Кон_вх>): <Длина_в_кадре><Формат_кадра> : <Формат_данных>}

 

<Нач_вх> и <Кон_вх> - это индексы начального и конечного входов/выходов ФБ в группе, индексирование начинается с 0.

<Длина_в_кадре> количество байт, которое занимает в кадре одно передаваемое значение;

 

<Формат_кадра> - как представлены данные в кадре. Может принимать одно из 2-х значений:

b – бинарный. В кадре находятся сами байты, из которых состоит значение. При использовании бинарных протоколов обратите внимание на свойство High-Low. Если свойство High-Low установлено истина, то число помещается в кадр старшим байтом вперед, если ложь, то младшим байтом вперед.

t – текст. В кадре содержатся коды цифр значения. Например, для передачи числа 5 в кадр помещается число пятьдесят три (в шестнадцатеричном представлении, младшим байтом вперед 0х35) – значение символа ‘5’ в кодировке ASCII. Перед этим может быть вставлено необходимое количество нулей, если <длина в кадре> превышает количество символов числа.

 

<Формат_данных>

 

Это поле зависит от того, какой указан формат кадра.

Может принимать значения:

Для бинарных форматов кадров (‘b’):

i – данные представляют целое число

f – данные представляют 4-байтное вещественное число. Длина в кадре в этом случае должна быть равна 4-м

Для текстовых (‘t’)

d – означает, что символы в кадре представляют собой число в десятеричной системе;

h - символы в кадре представляют собой число в шестнадцатеричной системе, цифры a-f в нижнем регистре;

H - символы в кадре представляют собой число в шестнадцатеричной системе, цифры A-F в верхнем регистре;

i – при разборе  выражения типа {P(_-_):_t:i} начальные символы, не являющиеся цифрами, не будут игнорироваться, кроме пробелов и нулей, а также распознается знак;  

f – символы в кадре представляют десятичное вещественное число с точкой, отделяющей дробную часть. Вещественные числа, содержащие в тексте десятичную точку (запятую), также распознаются со знаком, несмотря на пробелы «_» в начале или в конце, например:

«-0.123»

«+123.456»

«_123.456_»

 

Например, текстовый кадр содержит байты 31 32, что соответствует символам «1» и «2». Если указано, что формат данных десятеричный (d), то значение будет распознаваться как «двенадцать», если шестнадцатеричный (h), то значение – «восемнадцать».

 

 

Примеры:

 

пусть имеются четыре входа ФБ с индексами от 0 до 3 и значениями 10, 20, 30, 40 соответственно (в шестнадцатеричном формате 0xA, 0x14, 0x1E, 0x28).

 

в шаблоне

в кадре

{P(0-3):4t:d}

00 00 31 30   00 00 32 30   00 00 33 30   00 00 34 30

{P(0-3):2t:h}

00 41  31 34   31 45    32 38

{P(0-3):2b:i}

00 0A   00 14    00 1E    00 28

 

 

Формула (Контрольная сумма, Сумма байт)

 

{F<Идентификатор_формулы>(<ид_н_м>-<ид_к_м>):< Длина_в_кадре><Формат_кадра> : <Формат_данных>}

 

F<Идентификатор_формулы> определяет по какому из заданных алгоритмов вычисляется значение. Может принимать значения:

Fcrc1 – сумма байт без переноса (остаток от деления суммы байт на 256)

Fcrc2 – контрольная сумма CRC16, применяемая в протоколах, подобных «Modbus RTU»

Flen – просто количество байт

Fxor – исключающее или всех байт между метками

принимаются заявки

 

<ид_н_м>-<ид_к_м> - идентификаторы меток. Значение формулы вычисляется на основе байт, лежащих между первой и второй меткой. Требуется чтобы в строке шаблона оба выражения-метки, используемые в выражении-формуле находились слева от выражения-формулы!

Остальные поля описывают представление значения в массиве байт и полностью идентичны выражению «Значения входов».

 

Например:

 

в шаблоне

в кадре

{L:3}\01\02\03{L:5}{Fcrc1(3-5):1b:i}

01 02 03   06

{L:3}\01\02\03{L:5}{Fcrc1(3-5):4t:h}

01 02 03   30 30 30 36

{L:1}\00\00\00{L:2}{Flen(1-2):4t:d}

00 00 00   30 30 30 33

 

Смотри примеры использования ФБ в Приложение, Приложение 1.

 

Смотрите также:

 

Описание ФБ

Входы и Выходы ФБ

Страница свойств "Настройки"