Протокол передачи информационных и управляющих данных между стабилизатором мощности/напряжения/тока и управляющим устройством
Стабилизатор без дополнительного запроса с интервалом порядка секунды передает управляющему устройству информационную посылку символами в ASCII коде.
В интервале между информационными посылками стабилизатор принимает от управляющего устройства управляющую посылку символами в ASCII коде.
====Параметры порта:
9600N1, т.е.
скорость 9600,
четность не проверяется,
один стоп-бит.
Информация от стабилизатора
====Формат посылки:
TAABBCCCCDDDD<CR>, где
T - заголовок (буква «T» 6)
AA - служебный байт «состав»
BB - служебный байт «режим + ошибки»
CCCC - основной параметр (два байта, передаются в виде шестнадцатиричного числа 0х0000..0хFFFF, диапазон значений 0...65535)
DDDD - дополнительный параметр (два байта, передаются в виде шестнадцатиричного числа 0х0000..0хFFFF, диапазон значений 0...65535)
<CR> - признак конца посылки (символ "возврат каретки" &#OD)
Пример 1. Возможная посылка от Стабилизированного регулятора на базе Arduino...:
T050003EA03E8<CR>, где
05 - «состав» (основной - напряжение в нагрузке, доп. - уставка напряжения)
00 - «режим + ошибки» (режим рабочий, ошибок нет)
03EA - основной параметр (напряжение в нагрузке - 100,2В)
03E8 - доп.параметр (уставка - 100,0В)
Пример 2. Возможная посылка от Простого стабилизатора мощности ТЭНа...:
T170804E208D5<CR>, где
17 - «состав» (основной - мощность в нагрузке, доп. - напряжение сети)
08 - «режим + ошибки» (режим рабочий, напряжения сети недостаточно для достижения уставки)
04E2 - основной параметр (мощность в нагрузке - 1250Вт)
08D5 - доп.параметр (напряжение сети - 226,1В)
====Служебный байт «Состав данных»
Байт «состав данных» формируется побитово, в зависимости от типов передаваемых параметров, передаётся в виде шестнадцатиричного числа.
Исходим из того, что стабилизатор удерживает уставку на выходе с достаточной точностью, потому основной параметр может быть измеренный, уставка, рассчитанный и пр.
Единственное требование - основной параметр должен максимально точно отражать состояние нагрузки.
Основной параметр для конкретного стабилизатора не меняется и передается в каждой посылке.
Дополнительный параметр - может изменяться от посылки к посылке с соответствующим изменением байта «состав данных».
b000000хх - младшие два бита описывают основной параметр
bxxхххх00 - старшие шесть бит описывают дополнительный параметр
000000 - нет параметра
000001 - напряжение в нагрузке (если основной - напряжение, то напряжение уставки)
000010 - ток в нагрузке (если основной - ток, то ток уставки)
000011 - мощность в нагрузке (если основной - мощность, то мощность уставки)
000100 - сопротивление нагрузки
000101 - напряжение сети
прочие - ...
Пример 3. Байт "состав данных" для Стабилизированного регулятора на базе Arduino...:
0х05, т.е (b00000101), где
Пример 4. Байт "состав данных" для Простого стабилизатора мощности ТЭНа...:
0х17, т.е (b00010111), где
====Служебный байт «Режим + ошибки»
Байт "режим + ошибки" формируется побитово, в зависимости от состояния стабилизатора, передаётся в виде шестнадцатиричного числа.
b000000хх - младшие два бита описывают режим
bxxхххх00 - старшие шесть бит описывают ошибки
000000 - ошибок нет
000001 - отсутствие сетевого напряжения, нагрузка отключена
000010 - напряжения сети недостаточно для достижения уставки
прочие - ...
Пример 5. Байт «режим + ошибки» в рабочем режиме и в отсутствие ошибок:
0х00, т.е (b00000000), где
Пример 6. Байт «режим + ошибки» в рабочем режиме при недостаточном напряжении сети:
0х08, т.е (b00001000), где
Пример 7. Байт «режим + ошибки» в отсутствие сети:
0х06, т.е (b00000110), где
====Формат передачи параметров
Значения параметров передаются в виде двухбайтного шестнадцатиричного числа в ASCII-коде
Мощность - в Ваттах. Например: 1250Вт -> 0x04E2 -> 04E2
Напряжение - в Вольтах, умноженных на 10. Например: 226,1В -> 2261 -> 0x08D5 -> 08D5
Ток - в Амперах, умноженных на 100. Например: 15,22А -> 1522 -> 0x05F2 -> 05F2
Сопротивление - в Омах, умноженных на 100. Например: 15,11Ом -> 1511 -> 0x05E7 -> 05E7
==========
Управление стабилизатором
====Формат посылки для установки режима:
MA<CR>, где
M - Заголовок (буква «M» D или «m» D)
A - код режима (идентичен коду режима в байте «режим + ошибки»)
<CR> - признак конца посылки (символ "возврат каретки" &#OD)
Т.е.
M0<CR> - перейти в рабочий режим.
M1<CR> - разгон.
M2<CR> - стоп.
====Формат посылки для передачи уставки:
Тип параметра уставки соответствует основному параметру, передаваемому стабилизатором в информационной посылке.
Проверка параметра на выход за пределы диапазона проводится стабилизатором.
ABBBB<CR>, где
A - Заголовок (буква в зависимости от типа основного параметра: «P» 2 или «p» F - мощность, «U» 7 или «u» K - напряжение, «I» 1 или «i» E - ток)
BBBB - уставка (два байта, передаются в виде шестнадцатиричного числа в формате передачи параметров)
<CR> - признак конца посылки (символ "возврат каретки" &#OD)
Т.е.
P04E2<CR> - установить мощность 1250Вт
U03E8<CR> - установить напряжение 100,0В
I05F2<CR> - установить ток 15,22А
==========
kvic, d.styler, оформил предварительный вариант. Что скажете?
kvic, пока оформлял, понял, что это твой первоначальный протокол, слегка расширенный и с добавлением байта "состав". 
UPD1. Исправлены коды режимов и добавлена нечувствительность к регистру в управляющих посылках.
С уважением, <дата, подпись>, отвечайте нам, а то...
РК 28/1500Простой стабилизированный регулятор