Все управляющие команды имеют длину 13 байт.
Byte: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Field: | S | H1 | H2 | H3 | H4 | PH | V1 | V2 | V3 | V4 | PV | K | END |
Value: | 0x57 | 0x3? | 0x3? | 0x3? | 0x3? | 0x0? | 0x3? | 0x3? | 0x3? | 0x3? | 0x0? | 0x?F | 0x20 |
Позиция кодируется как число импульсов в кодах ASCII от '0000' до '9999' (формула приведена в описании команды set).
Rot1Prog не позволяет управлять возвышением и не поддерживает различные разрешения, поэтому поля V1-V4, PH и PV всегда равны 0x00. Кроме того, поскольку поддерживаются только целые значения, H4 всегда устанавливается в 0x30 (0 десятых градусов).
Ответ по протоколу Rot1Prog имеет длину 5 байт.
Byte: | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
Field: | S | H1 | H2 | H3 | END |
Value: | 0x57 | 0x0? | 0x0? | 0x0? | 0x20 |
Позиция кодируется по следующей формуле:
az = H1 * 100 + H2 * 10 + H3 - 360
Ответ по протоколу Rot2Prog имеет длину 12 байт.
Byte: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Field: | S | H1 | H2 | H3 | H4 | PH | V1 | V2 | V3 | V4 | PV | END |
Value: | 0x57 | 0x0? | 0x0? | 0x0? | 0x0? | 0x0? | 0x0? | 0x0? | 0x0? | 0x0? | 0x0? | 0x20 |
Позиция декодируется по следующей формуле:
az = H1 * 100 + H2 * 10 + H3 + H4 / 10 - 360
el = V1 * 100 + V2 * 10 + V3 + V4 / 10 - 360
Значения PH и PV в ответных пакетах сообщают компьютеру параметры контроллера. The Rot2Prog поддерживает следующие значения разрешающей способности (всегда одинаковы по азимуту и возвышению):
Deg/pulse | PH | PV |
---|---|---|
1 | 0x01 | 0x01 |
0.5 | 0x02 | 0x02 |
0.25 | 0x04 | 0x04 |
Команда STOP принудительно останавливает поворотное устройство в текущей позиции и возвращает пакет статуса с текущей позицией.
В некоторых источниках упоминается, что моментально возвращаемая позиция не совсем точна, из-за инерции контроллер успевает повернуть устройство ещё на градус-полтора.
Поля H1-H4, PH, V1-V4 и PV игнорируются:
Command:
S | H1 | H2 | H3 | H4 | PH | V1 | V2 | V3 | V4 | PV | K | END |
0x57 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x0F | 0x20 |
Rotator stops.
Ответ по протоколу Rot1Prog:
S | H1 | H2 | H3 | END |
0x57 | 0x03 | 0x07 | 0x02 | 0x20 |
az = 372 - 360 = 12
Ответ по протоколу Rot2Prog:
S | H1 | H2 | H3 | H4 | PH | V1 | V2 | V3 | V4 | PV | END |
0x57 | 0x03 | 0x07 | 0x02 | 0x05 | 0x02 | 0x03 | 0x09 | 0x04 | 0x00 | 0x02 | 0x20 |
az = 372.5 - 360 = 12.5, el = 394.0 - 360 = 34.0
PH = PV = 0x02 (импульс на каждые 0.5°)
Команда STATUS возвращает текущее положение поворотного устройства.
Поля H1-H4, PH, V1-V4 и PV игнорируются:
S | H1 | H2 | H3 | H4 | PH | V1 | V2 | V3 | V4 | PV | K | END |
0x57 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x1F | 0x20 |
Ответ по протоколу Rot1Prog:
S | H1 | H2 | H3 | END |
0x57 | 0x03 | 0x07 | 0x02 | 0x20 |
az = 372 - 360 = 12
Ответ по протоколу Rot2Prog:
S | H1 | H2 | H3 | H4 | PH | V1 | V2 | V3 | V4 | PV | END |
0x57 | 0x03 | 0x07 | 0x02 | 0x05 | 0x02 | 0x03 | 0x09 | 0x04 | 0x00 | 0x02 | 0x20 |
az = 372.5 - 360 = 12.5, el = 394.0 - 360 = 34.0
PH = PV = 0x02 (импульс на каждые 0.5°)
Команда STATUS может быть вызывана в процессе поворота и всегда будет возвращать текущее положение.
Команда SET указывает контроллеру нужное положение. Контроллер не отправляет ответа на данную команду.
Азимут и возвышение вычисляются как количество импульсов со смещением +360 градусов (поэтому отрицательное положение может быть закодировано положительными числами).
Rot1Prog поддерживает только целые значения градусов:
H = 360 + az
Rot2Prog поддерживает различные разрешения:
H = PH * (360 + az)
V = PV * (360 + el)
Поля H1-H4 и V1-V4 - это числа, закодированные как ASCII (0x30 - 0x39, т.е. '0' - '9').
Например, азимут 123 Rot1Prog передаст следующим образом:
H = 360 + 123 = 483
S | H1 | H2 | H3 | H4 | PH | V1 | V2 | V3 | V4 | PV | K | END |
0x57 | 0x34 | 0x38 | 0x33 | 0x30 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x2F | 0x20 |
Помните - H4 не используется и всегда равен 0x30.
Например, при передачи протоколом Rot2Prog азимут 123.5, высоты 77.0, и точности один импульс на 0.5° (PH = PV = 2):
H = 2 * (360 + 123.5) = 967
V = 2 * (360 + 77.0) = 874
S | H1 | H2 | H3 | H4 | PH | V1 | V2 | V3 | V4 | PV | K | END |
0x57 | 0x30 | 0x39 | 0x36 | 0x37 | 0x02 | 0x30 | 0x38 | 0x37 | 0x34 | 0x02 | 0x2F | 0x20 |
Переданные значения PH и PV игнорируются. Блоком управления использует значения, устанавленные выбором разрешения в меню. Эти значения можно прочитать командой status (только для Rot2Prog).
Обратите внимание - в команде set поля H1-H4 интерпретируется по-разному в зависимости от используемого протокола Rot1Prog или Rot2Prog:
Field | Rot1Prog | Rot2Prog |
---|---|---|
H1 | *100 | *1000 |
H2 | *10 | *100 |
H3 | *1 | *10 |
H4 | *0 | *1 |
Rot1Prog использует H1 для сотен и не использует H4.
Rot2Prog использует H4 для единиц и H1 для тысяч.