Интерфейс к регуляторам Pilotage и Hyperion

(Редакция 18.07.2008)

Я использую регуляторы бесколлекторных моторов Pilotage Stamina 12 и Stamina 35 на своих моделях самолета и вертолета. И на мой взгляд, их штатная система программирования оставляет желать лучшего. Во-первых, нет возможности проверить текущую конфигурацию. Во-вторых, программировать можно только один параметр за сессию. В-третьих, необходимо всегда иметь под рукой инструкцию по программированию. Поэтому меня заинтересовала возможность задавать параметры регулятора через внешний интерфейс. Поиск в Сети и эксперименты показали, что:

а) регуляторы Pilotage и Hyperion являются близнецами-братьями

б) регуляторы имеют разъем, позволяющий конфигурировать их с помощью РС через СОМ порт.

(Фото взято из документа "Hyperion TITAN ESC Programming Interface PC Software").
Документ и саму программу под Windows можно найти здесь:
http://media.hyperion.hk/dn/pc/all.htm

в) на разъем, кроме общего провода и питания +5В, выведены линии UART процессора ATmega8.

После этого логично было предположить, что "родной" интерфейсный кабель представляет собой простой преобразователь уровней RS232<->TTL. Проверка с самодельным интерфейсом на МАХ232 показала полную работоспособность ПО Hyperion ESC с регуляторами Pilotage Stamina 12 и 35.

Однако, по понятным причинам, использовать РС в полевых условиях не слишком удобно. Поэтому меня заинтересовала возможность применения для этой цели КПК или иных мобильных устройств, что, в свою очередь, требовало знания протокола обмена данными. Для исследования протокола были "сколоты" данные сессии связи (с помощью Serial Port Monitoring Utility) и проанализированы. Протокол (в том объеме, в каком я его понимаю) оказался довольно простым. Рассмотрим его на примере сессии чтения настроек.

1. программа открывает СОМ порт с параметрами 19200 бод, 8 бит, без четности.

2. программа передает байт 00 (здесь и далее шестнадцатеричная система счисления)

3. регулятор отвечает байтом 26. (видимо, это считается "правильным" ответом и признаком установки связи)

  Добавлено 18.07.2008:
  Байт 26 - это версия регулятора (v1.3). Другие известные на текущий момент значения: 28 - v1.5, 29 - v2.6, 2D - v.1.10, 2F - v2.12. Интересно, что на байты меньше 25 и больше 2F программа выдает run-time error и слетает.

4. программа передает 02 (вероятно, это запрос настроек)

5. регулятор отвечает A0 25 30 35 41 51 62 70 80 90 01 (текущие настройки)

6. программа закрывает СОМ порт

Пример лога сессий чтения и записи параметров можно посмотреть здесь

Для расшифровки байтов настроек был написан на VB простейший программный эмулятор регулятора, позволяющий формировать различные значения в строках ответа на запросы с кодами 00 и 02:

Private Sub Form_Load()

With MSComm1

.CommPort = 4
.InputMode = comInputModeBinary
.Settings = "19200,n,8,1"
.RThreshold = 1
.PortOpen = True

End With

End Sub

Private Sub MSComm1_OnComm()

Dim b As Variant
Dim s As String

Select Case MSComm1.CommEvent

Case comEvReceive ' Received RThreshold # of chars.
b = MSComm1.Input
If b(0) = 0 Then

MSComm1.Output = Chr(Val("&h" & Trim(Text1.Text)))

ElseIf b(0) = 2 Then

s = Trim(Text2.Text)
Do While s <> ""

MSComm1.Output = Chr(Val("&h" & Left(s, 2)))
s = Trim(Right(s, Len(s) - 2))

Loop

Else

MSComm1.Output = Chr(1)

End If

End Select

End Sub

Так выглядит окошко эмулятора:

СОМ порт эмулятора был связан нуль-модемным кабелем с СОМ портом программы Hyperion TITAN ESC и с помощью эмулятора удалось выяснить возможные значения байтов настроек в ответе регулятора.

1-й байт - тормоз (BRAKE)
A0 - OFF
A1 - ON
A2 - SOFT

2-й байт - тип батареи (BATTERY)
20 - Ni
25 - Li 2S
26 - Li 3S

3-й байт - всегда 30, назначение неизвестно

4-й байт - напряжение отсечки (CUTOFF V/CELL)
34 - 2.7V Li (0.6V Ni)
35 - 2.8V Li (0.7V Ni)
36 - 2.9V Li (0.8V Ni)
37 - 3.0V Li (0.9V Ni)
38 - 3.1V Li

5-й байт - тип отсечки (AUTOCUT MODE)
40 - STOP MOTOR
41 - REDUCE POWER
42 - NO CUT

6-й байт - плавный старт (SOFT START)
50 - OFF
51 - ON

7-й байт - тип тайминга (TIMING MODE)
60 - SOFT
61 - HARD
62 - AUTO

8-й байт - частота ШИМ (FREQUENCY)
70 - 8 kHz
71 - 16 kHz

9-й байт - реверс (MOTOR REVERSE)
80 - OFF
81 - ON

10-й байт - гувернер (RPM CONTROL)
90 - OFF
91 - RPM RANGE 1
92 - RPM RANGE 2
93 - RPM RANGE 3

11-й байт - всегда 01, видимо, признак конца посылки

Другие значения байтов приводят к ошибкам того или иного вида.

Программирование параметров происходит следующим образом:

1. программа открывает СОМ порт с параметрами 19200 бод, 8 бит, без четности.

2. программа передает байт настройки, например, A0

3. регулятор отвечает байтом 01 (видимо, это считается признаком успешной операции)

4. программа закрывает СОМ порт

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

После того, как были получены данные по протоколу, не составляло большого труда реализовать программу конфигурирования для КПК (под Windows Mobile 5.0):

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

Добавлено 15.12.2007:
Реализована возможность использовать для конфигурирования беспроводной интерфейс IrDA, что может быть актульно для КПК, не имеющих СОМ порт.


Поробности в статье
Мост IrDA-COM

На главную

© Вадим Кушнир (aka Vad64)

 

Hosted by uCoz