Version 4.1.6
При обновлении с версий 4.1.4…4.1.5 до версии 4.1.6 дополнительная калибровка не требуется.
После обновления проверить значения в меню “Communication”. Проверить пункт меню “Online = YES”. Выбрать скорость в пункте ‘Baudrate’.
Для управления с ПК использовать актуальную версию DPSmaster_416 или DPSmaster_43
Скорость связи Modbus
Ниже на скриншотах:
- Горизонтальная развертка 100мс на клетку
- Желтый луч – Rx – запрос от мастера
- Синий луч – Tx – ответ из DPS
Цикл микропрогаммы DPS составляет 100 миллисекунд.
В каждом цикле микропрограмма сначала выставляет выходные значения USET, ISET -> DAC.
Затем замеряет выходные значения ADC -> UOUT, IOUT и входное напряжение ADC ->UIN.
Затем прорисовывает экран.
После этого, в оставшееся до 100 мс время, отвечает на запросы Modbus. Сколько успеет, столько и ответит. В зависимости от скорости от 1 до 3 раз.
Таким образом, посылать запросы на запись USET/ISET или чтение UOUT/IOUT чаще, чем раз в 100 мс не имеет смысла.
Особенности протокола и записи в регистры
Для того чтобы одновременно управлять несколькими ведомыми устройствами (slaves) можно использовать широковещательный запрос на запись с адресом ноль.
Таким образом, можно одновременно во все ведомые устройства в сети одной групповой командой с адресом ноль записать регистры USET и ISET.
Затем, одновременно во все ведомые устройства в сети одной командой с адресом ноль записать один регистр LOCK.
Затем, одновременно во все ведомые устройства в сети одной командой с адресом ноль записать один регистр ONOFF.
После этого, можно в цикле запрашивать состояние каждого слейва по отдельности по их адресам. Например, посылать групповой запрос на чтение регистров UOUT, IOUT, POWER, UIN, LOCK, PROTECT. Анализа регистра PROTECT может быть достаточно.
Далее, в этом же цикле можно одновременно во все ведомые устройства в сети одной командой с адресом ноль записать один регистр USET (или сразу USET и ISET при необходимости). Изменение ISET в цикле представляется необоснованным.
Исполняемые регистры (Executable), это регистры, при записи которых DPS выполняет некоторые действия:
- LOCK (7-й) – блокировка кнопок
- ONOFF (10-й) – вкл\выкл выхода
- CMD (33-й) – смотри таблицу Register CMD
- MEM (36-й) – изменение профиля М0…С9
- CLB_CMD (41-й) – исполнение команды калибровки
Чтобы команда была исполнена, запрос на запись должен быть одиночный, а не групповой !!! (кроме CLB_CMD).
Также запись в некоторые регистры приводит к записи значений в память EEPROM:
- CMD
- CLB_CMD
- Все регистры профилей M0 … C9
Так как микросхема EEPROM имеет ограниченный ресурс в 1 миллион циклов записи, программисту следует избегать частого или циклического использования этих команд. Для записи профиля следует использовать групповую запись регистров USETP … OTIM.
Зачем нужен LOCK = 1 в начале сессии
Прошивка имеет функцию автосохранения настроек для удобства пользователей, чтобы изменения сохранялись при следующем включении девайса. Эта функция сохраняет значения USET, ISET и MEM через 25 секунд после последнего изменения. Однако, в случае длительно управления через Modbus, это функция может быть вредна. Поэтому, если LOCK = 1:
- Исключается конфликт с командами от кнопок девайса
- Отключается функция автосохранения
- Запускается функция автоопределения обрыва связи (срабатывает когда запросы от мастера не поступают в течении 2 секунд).
После обрыва связи девайс автоматически восстановит свой LOCK = 0 и разблокирует кнопки.
Для корректного окончания сессии мастер должен записать LOCK=0 и прекратить передачу.
Восстановление после сбоя внешнего питания
Использование опции POWER_ON_START в случае управления девайсом от внешнего контроллера представляется необоснованным.
Тем не менее, если опция POWER_ON_START используется, для корректного восстановления необходимо следить за правильностью значений в регистрах MEM, Profile.USETP, Profile.ISETP. Для сохранения этих регистров в EEPROM используйте регистр CMD=2 или CMD=3
Добавления в протоколе
Добавлены регистры с данными счетчиков времени, ампер-часов и ватт-часов.
Communication protocol ver 4.1.6
| Register | Name | Read / Write | Description | Range | Executable | Write to EEPROM |
|---|---|---|---|---|---|---|
| 0x0000 | USET | R/W | format 00.00 | 0...Umax | ||
| 0x0001 | ISET | R/W | format 00.00 for DPS5020 / format 0.000 for DPS5005 | 0...Imax | ||
| 0x0002 | UOUT | R | format 00.00 | |||
| 0x0003 | IOUT | R | format 00.00 for DPS5020 / format 0.000 for DPS5005 | |||
| 0x0004 | POWER | R | format 0000.0 | |||
| 0x0005 | UIN | R | format 00.00 | |||
| 0x0006 | LOCK | W | Lock the buttons | 0 or 1 | YES | |
| 0x0007 | PROTECT | R | *See Register PROTECT table | 0...25 | ||
| 0x0008 | CVCC | R | 0 - CV, 1- CC | 0 or 1 | ||
| 0x0009 | ONOFF | R/W | 0- Power off, 1- Power On | 0 or 1 | YES | |
| 0x000A | BLED | R/W | LCD Backlight | 1...5 | ||
| 0x000B | MODEL | R | DPS model | 5020 | ||
| 0x000C | VERSION | R | Firmware version | 18....43 | ||
| 0x000D | TMP | R | Temperature in C | |||
| 0x000E | ||||||
| 0x000F | DEBUG_DATA | R | ||||
| 0x0010 | MGIC | R | Version control data | |||
| 0x0011 | DVID | R | Version control key | |||
| 0x0012 | COMM | R | Online settings | |||
| 0x0013 | GYRO | R | Screen rotation | |||
| 0x0014 | MMAX | R/W | Max profile number | 0...19 | ||
| 0x0015 | RCNT | R/W | Reset counters | Odd or Even | ||
| 0x0016 | CF | R/W | C or F | Odd or Even | ||
| 0x0017 | OHP | R/W | Overheat temperature in C | 0...200 | ||
| 0x0018 | SMART | R/W | Smart display | Odd or Even | ||
| 0x0019 | PWRS | R/W | Power on start | Odd or Even | ||
| 0x001A | MINS | R/W | minimum source battery 0% | |||
| 0x001B | MAXS | R/W | maximum source battary 100% | |||
| 0x001C | CLR1 | R/W | PowerOff Color | RGB565 | ||
| 0x001D | CLR2 | R/W | CV color | RGB565 | ||
| 0x001E | CLR3 | R/W | CC color | RGB565 | ||
| 0x001F | ||||||
| 0x0020 | CMD | W | Execute command *See Register CMD table | YES | YES | |
| 0x0021 | TIME_L | R | Time counter low word | |||
| 0x0022 | TIME_H | R | Time counter high word | |||
| 0x0023 | MEM | R/W | Profile number | 0...19 | YES | |
| 0x0024 | AHCNT_L | R | Amper-hour counter low word | |||
| 0x0025 | AHCNT_H | R | Amper-hour counter high word | |||
| 0x0026 | WHCNT_L | R | Watt-hour counter low word | |||
| 0x0027 | WHCNT_H | R | Watt-hour counter high word | |||
| 0x0028 | CLB_CMD | W | *See CLB_CMD table | YES | YES | |
| 0x0029 | CLB_IDX | W | *See CLB_CMD table | |||
| 0x002A | CLB_DATA_L | W | Low Word for CalibRecord_t.Value | |||
| 0x002B | CLB_DATA_H | W | High Word for CalibRecord_t.Value |
Profiles M0 ... C9
| Registers ADDR | Registers (Decimal) | Name | Write to EEPROM |
|---|---|---|---|
| 0x0050 - 0x005F | 80 - 95 | Profile M0 | YES |
| 0x0060 - 0x006F | 96 - 111 | Profile M1 | YES |
| 0x0070 - 0x007F | Profile M2 | YES | |
| 0x0080 - 0x008F | Profile M3 | YES | |
| 0x0090 - 0x009F | Profile M4 | YES | |
| 0x00A0 - 0x00AF | Profile M5 | YES | |
| 0x00B0 - 0x00BF | Profile M6 | YES | |
| 0x00C0 - 0x00CF | Profile M7 | YES | |
| 0x00D0 - 0x00DF | Profile M8 | YES | |
| 0x00E0 - 0x00EF | Profile M9 | YES | |
| 0x00F0 - 0x00FF | Profile C0 | YES | |
| 0x0100 - 0x010F | Profile C1 | YES | |
| 0x0110 - 0x011F | Profile C2 | YES | |
| 0x0120 - 0x012F | Profile C3 | YES | |
| 0x0130 - 0x013F | Profile C4 | YES | |
| 0x0140 - 0x014F | Profile C5 | YES | |
| 0x0150 - 0x015F | Profile C6 | YES | |
| 0x0160 - 0x016F | Profile C7 | YES | |
| 0x0170 - 0x017F | Profile C8 | YES | |
| 0x0180 - 0x018F | 384 - 399 | Profile C9 | YES |
Profile ver. 4.3
| Register | Name | Read \ Write | Description | Range | Firmware | Write to EEPROM |
|---|---|---|---|---|---|---|
| 0 | USETP | R /W | Uset for profile | 0...Umax | Alt / China | YES |
| 1 | ISETP | R /W | Iset for profile | 0...Imax | Alt / China | YES |
| 2 | SOVP | R /W | OVP | 0...Umax | Alt / China | YES |
| 3 | SOCP | R /W | OCP | 0...Imax | Alt / China | YES |
| 4 | SOPP | R /W | OPP | 0... Umax x Imax | Alt / China | YES |
| 5 | BLED | R /W | LCD backlight | 1...5 | China | YES |
| 6 | SOFT | R /W | Soft front | Odd or Even | Alt | YES |
| 7 | SINI | R /W | China | YES | ||
| 8 | OTIM | R /W | Timer value | 0...5999 | Alt | YES |
Регистр PROTECT
Группы ошибок в регистре PROTECT
OVP…VIN – проверяются прошивкой DPS раз в 100 мс, когда выход включен.
EPR – проверяются прошивкой DPS при подаче внешнего питания, во время экрана с логотипом
E16…E25 – проверяются прошивкой DPS после калибровки и каждый раз в момент выключения выхода.
Все ошибки сбрасываются в момент включения выхода.
Register PROTECT
| Value | Name | Description | Condition |
|---|---|---|---|
| 0 | OK | No error | |
| 1 | OVP | Overvoltage protection | Uout >= Uset |
| 2 | OCP | Overcurrent protection | Iout >= Iset |
| 3 | OPP | Overpower protection | Uout x Iout > Profile.OPP |
| 4 | OTP | Stopped by timer | Time > Profile.OTP |
| 5 | OHP | Overheat protection | TMP > OHP |
| 6 | BAT | Source battery low voltage protection | Uin < MINS - 10% |
| 7 | END | Charge battery low current | Iout < 50mA for 30 seconds |
| 8 | EVP | Error voltage protection | Uset > Umax |
| 9 | ECP | Error current protection | Iset > Imax |
| 10 | VIN | Low input voltage error | Uset > Uin |
| 11 | EPR | EEPROM error | Can't read from EEPROM |
| 12 | |||
| 13 | |||
| 14 | |||
| 15 | |||
| 16 | E16 | Calibration data error | UinL >= UinH |
| 17 | E17 | Calibration data error | ADC_UinL >= ADC_UinH |
| 18 | E18 | Calibration data error | UoutL >= UoutH |
| 19 | E19 | Calibration data error | ADC_UoutL >= ADC_UoutH |
| 20 | E20 | Calibration data error | DAC_UoutL >= DAC_UoutH |
| 21 | E21 | Calibration data error | IoutL >= IoutH |
| 22 | E22 | Calibration data error | ADC_IoutL >= ADC_IoutH |
| 23 | E23 | Calibration data error | DAC_IoutL >= DAC_IoutH |
| 24 | E24 | Calibration data error | TempH Value <= 20C |
| 25 | E25 | Calibration data error | TempH ADC >= Temp ADC 20C |
Register CMD
| Value | Action |
|---|---|
| 1 | Stores MGIC ... CLR3 registers to EEPROM. Stores BLED register to EEPROM |
| 2 | Stores MEM to EEPROM Stores Profile registers to EEPOM. The profile number is in MEM register. |
| 3 | USET -> Profile.USETP ISET -> Profile.ISETP Stores MEM to EEPROM Stores Profile registers to EEPOM. The profile number is in MEM register. |
| 4 | Reset Timer and Energy counters |
| 1234 | Jump to Update Mode |
Registers CLB_CMD and CLB_IDX
| NAME=VALUE | Action/ Index |
|---|---|
| CLB_CMD = 0 | Show calibration screen |
| CLB_CMD = 1 | Start calibration for CLB_IDX |
| CLB_CMD = 2 | Fix the value in CLB_DATA for CLB_IDX |
| CLB_CMD = 3 | Exit and save calibration |
| CLB_CMD = 4 | Exit calibration w/o saving |
| CLB_IDX = 1 | U in L |
| CLB_IDX = 2 | U in H |
| CLB_IDX = 3 | U out L |
| CLB_IDX = 4 | U out H |
| CLB_IDX = 5 | I out L |
| CLB_IDX = 6 | I out H |
| CLB_IDX = 7 | Temp H |
