381

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

JohnJohnov ©:

В стабилизаторе может быть только три варианта:мощность/напряжение/ток на выходе.

Так и надо передавать то, что стабилизатор стабилизирует.

JohnJohnov ©:

исходим из того, что любой стаб удерживает уставку

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

JohnJohnov ©:

Байт "состав"

Только предлагаю его сделать "человекопонятным", т.е. передавать не b00000101, а символ "U" и не b00010111, а символ "P".
Сразу понятно в первом случае имеем напряжение, во втором - мощность.
---
Можно второй параметр не передавать, тогда считать, что уставка для этого параметра недоступна.
---
Ну и в конце или в начале посылки передавать статус регулятора.
---

JohnJohnov ©:

не гоняем пустые байты

И чем они тебя так смущают?

РК 35х1600

382

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

kvic ©:

Не факт, есть переходные процессы, аварийные ситуации, особые режимы работы.

На этот случай у нас предусмотрен байт "режим+ошибки"

kvic ©:

предлагаю передавать два параметра - текущий измеренный и уставку.

Они оба есть в твоем стабе, в моем - только уставка.
Лучше всё же делить параметры на основной (это то, что стаб выдает на выходе, у тебя - это напряжение в нагрузке, у меня уставка мощности, в этом стабе - ток в нагрузке) и дополнительные.

kvic ©:

Только предлагаю его сделать "человекопонятным", т.е. передавать не b00000101, а символ "U" и не b00010111, а символ "P".
Сразу понятно в первом случае имеем напряжение, во втором - мощность.

Ну передавать именно b00000101 я и не предлагал. Передадим $05 цифрами в ASCII.
Ну т.е. как то так:
:050103EA03E8<CR>, где
: - заголовок
05 - "состав" (основной - напряжение, доп. - тоже напряжение, т.е уставка)
01 - "режим+ошибки" (режим рабочий, ошибок нет)
03EA - основной параметр (напряжение в нагрузке - 100,2В)
03E8 - доп.параметр (уставка - 100,0В)

При наличии байта "состав", на кой нам ещё и буква? Думаешь кто-то будет парсить строку из терминала глазами в реалтайме?  :)

kvic ©:

И чем они тебя так смущают?

Не то чтобы смущают, но если ко всему ещё и ресурсы экономятся, это скорее хорошо! :)
И посылка получается фиксированной длины, тоже хорошо.

С уважением, <дата, подпись>, отвечайте нам, а то...
РК 28/1500
Простой стабилизированный регулятор

383

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

JohnJohnov ©:

Ну т.е. как то так:
:050103EA03E8<CR>

Можно и так.

JohnJohnov ©:

Думаешь кто-то будет парсить строку из терминала глазами в реалтайме?

Кто-нибудь обязательно найдётся.

РК 35х1600

384 (2021-07-06 12:33:56 отредактировано JohnJohnov)

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

Протокол передачи информационных и управляющих данных между стабилизатором мощности/напряжения/тока и управляющим устройством

Стабилизатор без дополнительного запроса с интервалом порядка секунды передает управляющему устройству информационную посылку символами в ASCII коде.
В интервале между информационными посылками стабилизатор принимает от управляющего устройства управляющую посылку символами в ASCII коде.

====Параметры порта:

9600N1, т.е.

  • скорость 9600,

  • четность не проверяется,

  • один стоп-бит.

Информация от стабилизатора

====Формат посылки:

TAABBCCCCDDDD<CR>, где

  • T - заголовок (буква «T» &#54)

  • 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хх - младшие два бита описывают основной параметр

  • 00 - запрещённое значение

  • 01 - напряжение в нагрузке

  • 10 - ток в нагрузке

  • 11 - мощность в нагрузке

bxxхххх00 - старшие шесть бит описывают дополнительный параметр

  • 000000 - нет параметра

  • 000001 - напряжение в нагрузке (если основной - напряжение, то напряжение уставки)

  • 000010 - ток в нагрузке (если основной - ток, то ток уставки)

  • 000011 - мощность в нагрузке (если основной - мощность, то мощность уставки)

  • 000100 - сопротивление нагрузки

  • 000101 - напряжение сети

  • прочие - ...

Пример 3. Байт "состав данных" для Стабилизированного регулятора на базе Arduino...:

0х05, т.е (b00000101), где

  • b00000101 - основной параметр - напряжение в нагрузке

  • b00000101 - дополнительный параметр - напряжение уставки

Пример 4. Байт "состав данных" для Простого стабилизатора мощности ТЭНа...:

0х17, т.е (b00010111), где

  • b00010111 - основной параметр - мощность в нагрузке

  • b00010111 - дополнительный параметр - напряжение сети

====Служебный байт «Режим + ошибки»

Байт "режим + ошибки" формируется побитово, в зависимости от состояния стабилизатора, передаётся в виде шестнадцатиричного числа.

b000000хх - младшие два бита описывают режим

  • 00 - рабочий режим (стабилизатор старается поддерживать заданный выходной параметр)

  • 01 - разгон

  • 10 - нагрузка отключена

  • 11 - аварийное отключение нагрузки (удаленное включение невозможно)

bxxхххх00 - старшие шесть бит описывают ошибки

  • 000000 - ошибок нет

  • 000001 - отсутствие сетевого напряжения, нагрузка отключена

  • 000010 - напряжения сети недостаточно для достижения уставки

  • прочие - ...

Пример 5. Байт «режим + ошибки» в рабочем режиме и в отсутствие ошибок:

0х00, т.е (b00000000), где

  • b00000000 - режим рабочий

  • b00000000 - ошибок нет

Пример 6. Байт «режим + ошибки» в рабочем режиме при недостаточном напряжении сети:

0х08, т.е (b00001000), где

  • b00001000 - режим рабочий

  • b00001000 - напряжения сети недостаточно для достижения уставки

Пример 7. Байт «режим + ошибки» в отсутствие сети:

0х06, т.е (b00000110), где

  • b00000110 - нагрузка отключена

  • 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» &#4D или «m» &#6D)

  • A - код режима (идентичен коду режима в байте «режим + ошибки»)

    • 0 - перейти в рабочий режим (стабилизатор старается поддерживать заданный выходной параметр)

    • 1 - перейти в режим «разгон»

    • 2 - отключить нагрузку

  • <CR> - признак конца посылки (символ "возврат каретки" &#OD)

Т.е.
M0<CR> - перейти в рабочий режим.
M1<CR> - разгон.
M2<CR> - стоп.

====Формат посылки для передачи уставки:

Тип параметра уставки соответствует основному параметру, передаваемому стабилизатором в информационной посылке.
Проверка параметра на выход за пределы диапазона проводится стабилизатором.

ABBBB<CR>, где

  • A - Заголовок (буква в зависимости от типа основного параметра: «P» &#50 или «p» &#70 - мощность, «U» &#55 или «u» &#75 - напряжение, «I» &#49 или «i» &#69 - ток)

  • BBBB - уставка (два байта, передаются в виде шестнадцатиричного числа в формате передачи параметров)

  • <CR> - признак конца посылки (символ "возврат каретки" &#OD)

Т.е.
P04E2<CR> - установить мощность 1250Вт
U03E8<CR> - установить напряжение 100,0В
I05F2<CR> - установить ток 15,22А


==========

kvic, d.styler, оформил предварительный вариант. Что скажете?

kvic, пока оформлял, понял, что это твой первоначальный протокол, слегка расширенный и с добавлением байта "состав".   :D

UPD1. Исправлены коды режимов и добавлена нечувствительность к регистру в управляющих посылках.

С уважением, <дата, подпись>, отвечайте нам, а то...
РК 28/1500
Простой стабилизированный регулятор

385 (2021-07-05 08:27:28 отредактировано )

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

Да нормально всё.
Только основной режим работы всё-таки стабилизация.
А переменные по умолчанию вроде равны 0.
Исходя из этого изменить режимы и команды:

JohnJohnov ©:

00 - нагрузка отключена

JohnJohnov ©:

M0<CR> - стоп.

на 00 - рабочий режим, М0<CR> - перейти в рабочий режим.

И предусмотреть возможность управления не только заглавными, но и строчными буквами.

РК 35х1600

386

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

kvic, твоя логика мне понятна.
Я исходил из другой:
Умолчальный режим - обесточенный ТЭН, просто по технике безопасности. И это крайний режим (минимум в нагрузке), другой крайний режим - разгон (максимум в нагрузке). А рабочий болтается между оными.

Но это же просто цифры, как захотим, так и будет  :)
Так?:
0 - рабочий, 1 - стоп, 2 - разгон.

С уважением, <дата, подпись>, отвечайте нам, а то...
РК 28/1500
Простой стабилизированный регулятор

387

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

JohnJohnov ©:

это же просто цифры, как захотим, так и будет

Ага.

JohnJohnov ©:

Так?:
0 - рабочий, 1 - стоп, 2 - разгон.

В моём сейчас так:
0 - рабочий режим,
1 - разгон,
2 - стоп.
Давай так оставим, чтобы тем у кого уже построено и настроено, не менять логику, если ты не против, конечно.
Есть ещё:
3 - аварийное выключение внешним сигналом с блокировкой (режим дистанционно не отключается).
Сделано в своё время по просьбе пользователей.

РК 35х1600

388

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

kvic ©:

И предусмотреть возможность управления не только заглавными, но и строчными буквами.

Нечувствительность к регистру имеешь ввиду?

kvic ©:

Давай так оставим

Давай.

kvic ©:

3 - аварийное выключение внешним сигналом с блокировкой (режим дистанционно не отключается).

Разъясни вкратце суть.
Я тему твою читал, но вот про этот кунштюк так и не понял до конца.

С уважением, <дата, подпись>, отвечайте нам, а то...
РК 28/1500
Простой стабилизированный регулятор

389 (2021-07-06 11:54:05 отредактировано kvic)

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

JohnJohnov ©:

Нечувствительность к регистру имеешь ввиду?

Ага.

JohnJohnov ©:

Разъясни вкратце суть.
... про этот кунштюк так и не понял до конца.

Это по сути тот же режим "стоп", только включается внешним сигналом на ногу контроллера.
Через UART или кнопками в него не попадёшь.
Выйти из этого режима командами по UART, IIC или ещё как тоже нет возможности.
Выключить его может только оператор, лично нажав и подержав кнопку.
Но, при этом, если внешний сигнал не снят, через 5 секунд будет возврат в этот же режим.
---
Вроде как аварийное отключение по сигналу некого датчика.
---
Совершенно не обязательно,
просто цифра "3" уже используется, если что.

РК 35х1600

390 (2021-07-06 12:03:52 отредактировано )

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

kvic, внёс изменения в протокол

d.styler, скажи своё веское слово по поводу протокола.

С уважением, <дата, подпись>, отвечайте нам, а то...
РК 28/1500
Простой стабилизированный регулятор

391

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

JohnJohnov ©:

скажи своё веское слово по поводу протокола.

А че - мне нравится. Наконец то вижу что то похожее на унификацию.  :) Отлично!
То есть в основе будет пакет с известной длиной. И команды управления посылаются только на регулятор, а пакеты состояния только от регулятора.
Еще было бы полезно определить последовательность пакетов - типа мы посылаем на регулятор команду поднять мощность - что должен отчетить регулятор? Это нужно чтоб отлавливать моменты когда пакеты теряются по той или иной причине.

А так - отличная работа!  *THUMBSUP*

392 (2021-07-07 13:31:53 отредактировано )

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

d.styler ©:

что должен отчетить регулятор?

Он через секунду своё обновленное состояние пришлёт.
Специальный отчет о приеме команды, думаю, ни к чему.

Можно дублировать управляющую команду для надежности.
Т.е. регулятор шлёт свою инфу и ждёт управляющую посылку.
Получает таковую, запоминает, но состояние не меняет.
Через секунду опять шлёт инфу и ждёт дубль управляющей посылки.
Получает дубль, сравнивает,
   - если дубли разнятся не реагирует.
   - если дубли одинаковы - изменяет состояние.
Через секунду шлёт обновленную инфу.

Есть смысл, наверное, сделать защитный интервал секунд 5-10 после успешного приема управляющей команды, в который регулятор не реагирует на управление по UART. Для защиты от нечаянного спама, помех.

С уважением, <дата, подпись>, отвечайте нам, а то...
РК 28/1500
Простой стабилизированный регулятор

393

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

JohnJohnov ©:

Он через секунду своё обновленное состояние пришлёт.
Специальный отчет о приеме команды, думаю, ни к чему.

Тоже придерживаюсь такого мнения.

JohnJohnov ©:

Т.е. регулятор шлёт свою инфу и ждёт управляющую посылку.
Получает таковую, запоминает, но состояние не меняет.

Наоборот.
Состояние регулятора имеет приоритет. Он отвечает за поддержание нужного параметра.
Управляющая программа только отображает состояние регулятора и может отправлять запрос на изменение состояния.
Регулятор может принять этот запрос, а может и отвергнуть.
Допустим, управляющая программа хочет изменить своё состояние и, соответственно, состояние регулятора.
1. Программа шлёт пакет с желаемым изменением в регулятор, своё состояние пока не меняет.
2. Регулятор принимает пакет, расшифровывает, меняет (или не меняет) свое состояние.
3. Регулятор планово отсылает пакет состояния.
4. Программа принимает пакет информации от регулятора и только тогда меняет свое состояние, в соответствии с состоянием регулятора.
---
Так как регулятор ритмично шлёт пакеты с определённой структурой, то этот факт можно использовать для контроля связи.
Если, допустим, в течение 5 секунд программа не получает пакет с нужной структурой, то считает, что связь пропала.
Выводит сообщение (или не выводит) и пытается что-то сделать (или не пытается).

JohnJohnov ©:

Есть смысл, наверное, сделать защитный интервал секунд 5-10 после успешного приема управляющей команды,

Не надо. Пусть регулятор отфильтровывает нужное из всего, что приходит.

РК 35х1600

394

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

kvic ©:

Наоборот.
Состояние регулятора имеет приоритет. Он отвечает за поддержание нужного параметра.

Безусловно.
Но я не об этом. Я о том, что регулятор принимает управляющую посылку к исполнению, только если получает две одинаковые посылки подряд. Защита от помех, потерь и пр.

kvic ©:

Не надо. Пусть регулятор отфильтровывает нужное из всего, что приходит.

Соглашусь. В протоколе это предусматривать не нужно.

С уважением, <дата, подпись>, отвечайте нам, а то...
РК 28/1500
Простой стабилизированный регулятор

395

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

JohnJohnov ©:

регулятор принимает управляющую посылку к исполнению, только если получает две одинаковые посылки подряд. Защита от помех, потерь и пр.

Думаю это лишнее.
Всё же не межпланетной станцией управляем.  :D
Кривую посылку регулятор просто должен не принимать.
Соответственно состояние не изменит.
Управляющая программа это отобразит.
Оператор ещё раз нажмёт на кнопку, только и всего.
Ну, может, матерка подпустит.   *ns10*

РК 35х1600

396

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

kvic ©:

Кривую посылку регулятор просто должен не принимать.

Кривую не примет, ясен день. А если кривая будет совсем как прямая?
Рудольф прав - данные могут пропадать/появляться по дороге.
Вот выключится чайник во время передачи уставки, и примет регулятор не 100В, а 204В, а у тебя предзахлёб.  :D А тут хоть какая-то защита.
Вероятность низка и необходимость сомнительна, не спорю.

С уважением, <дата, подпись>, отвечайте нам, а то...
РК 28/1500
Простой стабилизированный регулятор

397 (2021-07-07 18:19:08 отредактировано kvic)

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

JohnJohnov ©:

и примет регулятор не 100В, а 204В, а у тебя предзахлёб.

И скажет регулятор управляющей программе "я сговнячил 204 на выходе, бе-бе-бе".
А программа ему: "Да ну нах, я заказывала 100. Быстро сделал 100, а то взвою так, что оператор прилетит и тебя выключит совсем, а если не придёт, сама тебе экстерминатус устрою".
:D
Лирика.
На самом деле очень маловероятно.

РК 35х1600

398

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

kvic ©:

А программа ему: "Да ну нах...

Или "Да мне пох..."  :D

Таким образом, принимаем протокол в окончательном (на сегодня) варианте

С уважением, <дата, подпись>, отвечайте нам, а то...
РК 28/1500
Простой стабилизированный регулятор

399 (2021-07-07 19:16:41 отредактировано kvic)

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

JohnJohnov ©:

принимаем протокол в окончательном (на сегодня) варианте

Надо бы Косого позвать.
А то самовар варить не будет.

РК 35х1600

400 (2021-07-07 20:13:48 отредактировано Косой)

Re: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей

Мое мнение по этому вопросу можно не принимать во внимание :), так как для этого стабилизатора есть версия скетча с поддержкой управления по UART, поддерживаемого Самоваром. И для Стабилизированный регулятор на базе Arduino с управлением  через UART текущая прошивка тоже поддерживает управление, единственная просьба - сохранить ее для тех, кому нужно будет управление Самоваром.
Просто так переписывать скетч Самовара мне бы не хотелось, особого смысла я в этом на данный момент не вижу, так как пока нет других автоматик, которые бы управляли стабилизаторами.

Когда появится в этом реальная необходимость - перепишу Самовар, чтобы он поддерживал этот стандарт. А может быть, появится желающий доработать код Самовара для поддержки стандарта.

Категоричность - признак ограниченности