Номера бит ячеек описаны с 0-го по 7-й (т.е. бит0 – младший, бит7 - старший).
Описанные ячейки памяти МАП актуальны для версии ПО не ниже 23.3. Протокол: Протокол имеет максимально простой вид, где существует всего две посылки чтения и записи, а также два типа ответа с данными или ошибкой. 1) В протоколе реализовано чтение или запись страницей “P” длиной от P=0 – 1 байт до P=255 – 256 байт подряд. Чтение / Запись можно производить в EEPROM по адресам 0 – 0x3FF (кроме ячеек 0-4 из которых можно только читать) или в динамическую память RAM начиная с адреса 0x400. В памяти RAM находятся данные меняющиеся в процессе работы типа напряжения, ток и т.д. и которые, как правило, нужно отслеживать в реальном времени. В EEPROM находятся в основном настройки (запись в память RAM необходима, в основном, только для отладки приложений, кроме ячейки _put_eeprom=0x403 см. ниже). Послать команду “Com”. Команда передается как запись байта по адресам 0-4 (реально только по адресу 0x00, другие как резерв на будущее). Список комманд (запись в ячейку по 0-му адресу): значение ячейки: ComMAP_OFF=1 – Выключить МАП. ComMAP_ON=2 – Включить МАП. ComMAP_EEPromWR=3 - Необходимо установить эту команду перед записью в EEProm, RAM. ComMAP_ChargeOFF=4 – Выключить заряд (если есть сеть). ComMAP_ChargeON=5 – Включить заряд (если есть сеть). ComMAP_Reset=6 – Сброс МАП – использовать в крайнем случае для полной перегрузки МАП. ComMAP_Call_load_EEProm=7 – Команда инициализации данных из EEProm, чтобы если были изменены ячейки EEProm, они вступили в строй.
Посылка от PC идет с эхом (т.е. на каждый символ читаем эхо) – для исключения переполнения. Также при приеме символов от МАП надо обратно послать эхом этот-же символ. Если нет посылки в течении 5с МАП считает, что компьютер отключили (поэтому нельзя допускать перерыв между отдельными байтами посылки более 5с).
Протокол передает данные, конец посылки является символ \n=0x0A (LF – новая строка). Если надо в посылке передать символ \n, то вместо него вставляется последовательность 0xDB, 0xDC. Таким образом первый байт 0xDB тоже является спецсимволом и если в посылке надо передать символ 0xDB, то вместо него вставляется последовательность 0xDB, 0xDD. Контрольная сумма не кодируется двойной посылкой и может принимать значение и 0xDB и \n=0x0A, в последнем случае в конец посылки не надо добавлять еще один /n.
Контрольная сумма является суммой всех байт посылки (кроме последнего \n и самой контрольной суммы) по модулю 256 (т.е сумма в unsigned char игнорируя переполнения) дополненная до 256 (0x100). Т.е. такая, что сумма посылки вместе с контрольной суммой дает 0 по модулю 256. Т.е. S=0x100-mod256(сумма кроме \n и самой контрольной суммы)
Каждый байт будет подтвержден эхо-м, например, для чтения страницы: Посылаем r Читаем r Посылаем P Читаем P Посылаем A1 Читаем A1 Посылаем A0 Читаем A0 Посылаем S Читаем S Посылаем \n Читаем \n Далее наоборот, например (в случае ошибки): Читаем e Посылаем e Читаем D Посылаем D Читаем S Посылаем S Читаем \n Посылаем \n
Коды ошибок: ErrRS_sum=1, //не правильная контрольная сумма. ErrRS_eco=2, //нет эхо при передачи. ErrRS_cod=4, //не правильный код при передачи - не хватает символа или не те символы. ErrRS_NoEEWR=0x10, //не было предварительно команды разрешения записи в ЕЕProm. ErrRS_reserve=0x20, //используется резерв адресного пространства, пока эти пространства не реализованны.
1) Чтение страницы (от 1 до 256 байт) данных начиная с адреса A=A1A0 Посылка начинается с сивола ‘r’ (0x72), далее идет байт длинны страницы P (0 – 1 байт, 1- 2 байт, …, 255 – 256 байт), два байта адреса A, байт контрольной суммы S и символ ‘\n’ – конец посылки (если контрольная сумма сама не равна ‘\n’). rPA1A0S\n (код ‘r’=0x72) и ждем ответа – читаем от МАП
МАП отвечает: Если все в порядке то посылка начинается с символа ‘o’=0x6F и далее данные размером в страницу, контрольная сумма и символ ‘\n’ – конец посылки (если контрольная сумма сама не равна ‘\n’). oD0D1D2 ….. DpS\n (подтверждение чтения и возврат данных D0… Dp c адреса A1A0).
Или в случае ошибки посылка начинается с символа ‘e’=0x65, далее код ошибки, контрольная сумма и символ ‘\n’ – конец посылки (если контрольная сумма сама не равна ‘\n’). eDS\n (МАП прислал ошибку, с кодом ошибки D).
Пример 1. чтение байта (страницы длиной 1 байт, т.е. P=0) с адреса A=0x823A (пробелы передавать не надо). r 0x00 0x82 0x3A 0xD2 \n, (или если символы обозначать кодом 0x72 0x00 0x82 0x3A 0xD2 0x0A), где S=0x100-mod256(0x72+0x00+0x82+0x3A)= 0x100-mod256(0x12E)= 0x100-0x2E=0xD2, легко проверить, что сумма посылки с контрольной суммой есть - mod256(0x72+0x00+0x82+0x3A+0xD2)= mod256(0x200)=0
Если нет ошибки то получим ответ типа: o 0x12 0x7F \n (в ячейке, по этому адресу, находится 0x12), где S=0x100-mod256(0x6F+0x12)=0x100-mod256(0x81)=0x100-0x81=0x7F или o 0x87 0x0A (в ячейке находится 0x87, тогда контрольная сумма совпадает с символом /n и посылка заканчивается),
Если мы ошиблись и передали r 0x00 0x82 0x3A 0xD0 \n (не правильную контрольную сумму) То в ответ придет посылка: e 0x01 0x9A \n (где 0х01 – код ошибки ErrRS_sum=1, //не правильная контрольная сумма)
Пример 2. чтение байта (страницы длиной 1 байт, т.е. P=0) с адреса A=0x0084. r 0x00 0x00 0x84 0x0A, где S=0x100-mod256(0x72+0x00+0x00+0x84)= 0x100-mod256(0xF6)= 0x100-0xF6=0x0A – совпадает с /n – заканчиваем посылку контрольной суммой. Ответ получим аналогичный первому примеру.
Пример 3. чтение страницы в 16=0x10 (P=15=0x0F) байт с адреса A=0xADB (и старший и младший байты адреса попадают в спецсимволы, заменяем их двойными последовательностями). r 0x0F 0xDB 0xDC 0xDB 0xDD 0x10 \n, где S=0x100-mod256(0x72+0x0F+0xDB+0xDC+0xDB+0xDD)=0x100-mod256(0x3F0)=0x100-0xF0=0x10
Если нет ошибки то получим ответ типа (допустим там лежали данные последовательно растущие на 1, см. замену 0x0A на 0xDB 0xDC): o 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0xDB 0xDC 0x0B 0x0C 0x0D 0x0E 0x0F 0x6C\n где S=0x100-mod256(0x6F+0x00+0x01+0x02+0x03+0x04+0x05+0x06+0x07+0x08+0x09+0xDB+0xDC+0x0B+0x0C+0x0D+0x0E+0x0F)= 0x100-mod256(0x294)=0x100-0x94=0x6C
2) Посылка Команды / Запись страницы P данных начиная с адреса A=A1A0 Есть общая команда записи: Посылка начинается с сивола ‘w’ (0x77), далее идет байт длинны страницы P (0 – 1 байт, 255 – 256 байт), два байта адреса A, P байт данных, байт контрольной суммы S и символ ‘\n’ – конец посылки (если контрольная сумма сама не равна ‘\n’).
wPA1A0D0D1D2 ….. DpS\n и ждем ответа – читаем от МАП МАП отвечает: Аналогично с чтением, если все в порядке то посылка начинается с символа ‘o’=0x6F и далее контрольная сумма и символ ‘\n’ – конец посылки (если контрольная сумма сама не равна ‘\n’). oS\n (подтверждение записи данных D0… Dp c адреса A1A0), В данном случае контрольная сумма сразу вычисляется S=0x100-mod256(0x6F)=0x100-0x6F=0x91, Т.е ответ придет как: o 0x91 \n.
Или (как и при чтении) в случае ошибки посылка начинается с символа ‘e’=0x65, далее код ошибки, контрольная сумма и символ ‘\n’ – конец посылки (если контрольная сумма сама не равна ‘\n’). eDS\n (МАП прислал ошибку, с кодом ошибки D), (код ‘e’=0x65).
Посылка команды осуществляется записью одного байта “Com” (размер страницы P=0) по адресу A=0: w 0x00 0x00 0x00 Com S \n.
Например, запись команды “Включения МАП” w 0x00 0x00 0x00 0x02 0x87 \n
Если нет ошибки то получим ответ: o 0x91 \n,
Запись ячеек требует предварительной команды ComMAP_EEPromWR (разрешения записи), чтобы избежать случайной записи: w 0x00 0x00 0x00 DS\n, где в данном случае, D=ComMAP_EEPromWR=0x03, т.е. w 0x00 0x00 0x00 0x03 0x86\n, и только потом запись страницы.
Внимание!!! Запись в EEPROM в служебные ячейки может привести к неправильной работе МАП и даже выходу его из строя.
Пример 1. запись байта (страницы длиной 1 байт, т.е. P=0) на адрес A=0x3A значением 0x82. w 0x00 0x00 0x00 0x03 0x86 \n - команда на разрешения записи. w 0x00 0x00 0x3A 0x82 0xCD \n, - непосредственно запись ячейки где S=0x100-mod256(0x77+0x00+0x00+0x3A+0x82)= 0x100-mod256(0x133)= 0x100-0x33=0xCD, легко проверить, что сумма посылки с контрольной суммой есть - mod256(0x77+0x00+0x00+0x3A+0x82+0xCD)= mod256(0x200)=0
Если нет ошибки то получим ответ: o 0x91 \n,
Пример 2. Например, запись страницы длиной 4 байт, т.е. P=3 с адреса A=0x3A значениями 1,2,3, 0x7C. w 0x00 0x00 0x00 0x03 0x86 \n - команда на разрешения записи. w 0x03 0x00 0x3A 0x01 0x02 0x03 0x7C 0xCA \n, - запись четырех ячеек начиная с адреса 0x003A. где S=0x100-mod256(0x77+0x03+0x00+0x3A+0x01+0x02+0x03+0x7C)= 0x100-mod256(0x136)= 0x100-0x36=0xCA, легко проверить, что сумма посылки с контрольной суммой есть - mod256(0x77+0x03+0x00+0x3A+0x01+0x02+0x03+0x7C+0xCA)= mod256(0x200)=0
Если нет ошибки то получим ответ: o 0x91 \n,
Чтобы реже читать ячейки EEProm: Есть ячейка в RAM _put_eeprom=0x403, которая сообщает о том, что была запись в EEProm (как снаружи так и изнутри). Биты этой ячейки сообщают куда именно: Бит0 – В EEProm была запись. Бит1 - изменился режим работы - записали ячейку по адресу _MODE=0x50. Бит2 - изменили настройки МАП (то, что в ЖКИ МАП) ячейки с 0х138 до 0х1CF. Бит3 – изменились ячейки накопители ошибок с _CulerErr=0х48 до 0x4f. Бит4 - изменилась ячейка текущего времени _LCD_TimeCyr=0х1B6 (обновляется раз в 10мин). Остальные биты в резерве. Подробне см. ниже в описании ячеек.
После чтения этой ячейки ее необходимо обнулить, чтобы можно было узнать, что произошла следующая запись в EEProm. Это можно сделать т.к. в ПО можно делать запись, в том числе в RAM также как и в EEProm, только на адреса выше 0x400. В данном случае надо записать 0 в ячейку 0x403.
Ниже НЕ описаны ячейки, которые используются МАП-ом для внутренних нужд или которые использовались для моделей снятых с производства. Описание Ячеек RAM:
Префикс _ (подчеркивание) означает адрес ячейки, само значение ячейки указывается без префикса. Номера бит ячеек описаны с 0-го по 7-й (т.е. бит0 – младший, бит7 - старший).
_MODE=0x400 - Режим работы МАП – копия этой ячейки записывается в eeprom по адресу _MODE=0x50. значение ячейки: M_OFF =0 – МАП выключен (нет генерации) и нет сети на входе M_OFFNET =1 – МАП выключен (нет генерации) но есть сеть на входе (значение напряжения сети выводится в ЖКИ) M_ON =2 – МАП включен - происходит генерация 220В от АКБ. При этом либо нет сети на входе либо МАП в режиме ЭКО или тарифной сети и установлена опция "РежимПодкачкиЭКО"->"ПринудГенерЭКО". Определить принудительную генерацию можно по ячейке _flag_NETON_ECO см. ниже. Также возможен выход в принудительную генерацию при срабатывании по Pmax т.е. когда мощность нагрузки превысила значение LCD_NetMaxPow и "ПодкачкаСетиPmax""ВЫключена".
M_ONNET =3 – МАП включен и транслирует сеть (есть сеть на входе). При этом в режиме ЭКО или тарифной сети, если установлена опция "РежимПодкачкиЭКО"->"Подкачка ЭКО", может осуществляться подкачка. Определить подкачку можно по ячейке _flag_NETON_ECO см. ниже. Также возможена подкачка при срабатывании по Pmax т.е. когда мощность нагрузки превысила значение LCD_NetMaxPow и "ПодкачкаСетиPmax""Включена".
M_ONCHARGE =4 – МАП включен, транслирует сеть и одновременно заряжает АКБ.
_StatusCh=0x402 - Показывает состояние заряда в котором находится МАП. значение ячейки: Бит0 ChargeIlow =1 – Идет заряд малым током (буферный).
Бит1 ChargeNeed =2 – Флаг, что необходим заряд АКБ (если нет заряда), в режиме заряда - первая ступень. Бит2 ChargeEnd =4 – Идет вторая ступень заряда. Бит3 ChargeUmax =8 – Идет дозаряд постоянным напряжением Uакбмакс – 3-я ступень заряда. Во всех режимах кроме заряда надо следить только за ChargeNeed. В Заряде ChargeNeed – остается всегда, до завершения полного заряда (чтобы знать, что заряд не завершен если отключили сеть). Что касается ChargeIlow, ChargeUmax и ChargeEnd то программа следит только приоритетно в той последовательности которой написаны. Т.е. если есть ChargeIlow то буферный режим не смотря на другие флаги, далее если ChargeUmax то дозаряд несмотря на ChargeEnd и ChargeNeed и т.д.
Т.е. проверяются только следующие режимы (в приоритетном порядке): ChargeNeed|ChargeIlow - буферный заряд. ChargeNeed|ChargeUmax – дозаряд. ChargeNeed|ChargeEnd - вторая ступень. ChargeNeed - первая ступень, в том числе и вне заряда, что надо заряжать.
_put_eeprom=0x403 - была запись в EEProm – нулить после чтения. Биты ячейки: Бит0 - была запись в EEProm. Бит1 - изменился режим работы – МАП изменит ячейку _MODE=0x50. Бит2 - изменили настройки МАП - ячейки с _LCD_TypeSin=0x138 до _LCDmax_T_MAXCharge=0x1CF - Эти ячейки мог поменять пользователь с помощью дисплея ЖКИ (в этом случае этот бит укажет на это действие). Бит3 - изменились ячейки накопители ошибок с _CulerErr=0x48 до 0x4f (прописывает МАП). Бит4 - изменилась ячейка текущего времени _LCD_TimeCyr=0x1B6 (МАП обновляет раз в 10мин). Остальные биты в резерве, после чтения этой ячейки ее необходимо обнулить, чтобы можно было узнать, что произошла следующая запись в EEProm.
_StateUAcc=0x404 - Состояние напряжения на АКБ. S_UAccLow =0 – Напряжение ниже которого МАП отключает генерацию и будет работать только с сетью 220В. S_UAccMin =1 – Напряжение ниже минимально допустимого для АКБ, МАП отключит генерацию через 1мин. S_UAccMed =2 – Напряжение АКБ ниже нормы (для отображения индикатора заряда АКБ). S_UAccNorm=3 – Напряжение АКБ в норме (для отображения индикатора заряда АКБ). S_UAccMax =4 – Напряжение АКБ больше напряжения окончания заряда, заканчиваем заряд. S_UAccHi =5 – Напряжение АКБ больше максимально допустимого, отключаем заряд или генерацию.
_UAcc_med_VH=0x405, _UAcc_med_VL=0x406 -Напряжение АКБ. В этих ячейках лежит среднее напряжение на АКБ Но за выключение по полному разряду отвечает ячейка _UAcc_Optim_V=0x520 см. ниже. Uакб(В) = (UAcc_med_VH*256+ UAcc_med_VL)/10 !! Данные ячейки являются исключением для правила расположения верхнего и нижнего байта (общее правило младший байт находится в младшем адресе).
_IAcc_med_A_2=0x408 -Ток по АКБ при генерации или ток заряда (или при трансляции сети в режиме подкачки в сеть). Во время заряда это ток который идет в АКБ иначе из АКБ. Iакб(А) = IAcc_med_A_2*2
_PLoad_L=0x409 -текущая мощность нагрузки по АКБ т.е. при генерации (или при трансляции сети в режиме подкачки в сеть). Данная ячейка отображает мощность потребления блоков мощностью до 25кВт. Для блоков большей мощности необходимо задействовать ячейку _PLoad_H см. ниже. Pнагруз(Вт) = PLoad*100
_T_NetOn=0x40B - обратный отсчет задержки переключения с генерации на сеть при ее появлении, при NetOn=0 и наличии сети произойдет переключение на трансляцию сети.
_T_Charge=0x40C – обратный отсчет времени для перехода на заряд, при T_Charge=0 начнется заряд.
_T_AccDisch=0x40E – обратный отсчет времени работы в режиме генерации на напряжении АКБ ниже минимально допустимого, при T_AccDisch=0 генерация выключается.
_T_Nominal=0x40F -время работы на нагрузке выше номинальной в минутах (через 30мин генерация отключится).
_T_Overload=0x410 – обратный отсчет времени работы на перегрузке (нагрузка выше максимальной мощности) или другой критической ситуации (КЗ, низкое напряжение), при T_Overload=0 генерация отключится на время TOff_Overload. Если произойдет более 10 таких перегрузок в течении 10мин - МАП выключится.
_TOff_Overload=0x411 – обратный отсчет времени простоя после перегрузки или другой критической ситуации (КЗ, низкое напряжение), при TOff_Overload=0 генерация возобновится.
_F_AccOver=0x41C -Показывает состояние возникающее при перегрузках (генерация приостанавливается). Биты ячейки: Бит0 FT_IAcc_Over =1 – Отключение по перегрузке по току АКБ, 10 попыток перезапуска. Бит1 FT_IAcc_ChKz =2 – Отключение по перегрузке по току АКБ во время заряда, 10 попыток перезапуска. Бит2 FT_UAcc_Low =4 - Отключение по перегрузке по S_UAccLow - критически низкое напряжение АКБ, снимается при востановлении напряжения на АКБ. Бит3 FT_Culer =8 - Отключение по неисправности вентилятора, 10 попыток перезапуска. Бит4 FT_NominalOff =0x10 - Отключение по мощности выше номинальной более 30мин - снимается через 30мин Бит5 FT_AccDisch_OFF =0x20 - Отключение по полному разряду АКБ - снимаем по достижению напряжения на АКБ выше EE_LCD_UAccMinNetGen =12,5в (заводское) или при переходе на заряд. Бит6 FT_Tmax_OFF =0x40 - Отключение по выходу за пределы датчика температуры, снимается при остывании. Бит7 FT_IAcc_OFF =0x80 - Полное отключение по многократным перегрузкам по АКБ, снимается персоналом кнопкой “СТАРТ”.
_F_NETOver=0x41D -Показывает состояние возникающее при перегрузках по сети 220В. Биты ячейки: Бит0 FT_UOUTErr =1 - Отключение генерации - на выходе постороннее напряжение или неисправное реле. Либо не правильное подключение проводов 220В либо ремонт. Бит1 FT_PNET_Over =2 – Переход на генерацию - перегрузка по сети (превышена максимальная мощность EE_LCD_NetMaxPow порядка 1,5 максимальной мощности МАП), снимается после исчезновения сети со входа но не более 10 раз в течении 10 мин.
Бит3 FT_PNET_OFF =8 - *Выключение по многократным перегрузкам по сети, снимается персоналом кнопкой “СТАРТ”.
_UNET=0x422 -Напряжение сети. UNET=0 – нет сети на входе иначе Uсети(В)=UNET+100.
_INET=0x423 -Ток отбираемый от сети, в том числе на заряд. Iсети(A)= INET.
_PNET_L=0x424 -Мощность отбираемая от сети, в том числе на заряд. Данная ячейка отображает мощность потребления блоков мощностью до 25кВт. Для блоков большей мощности необходимо задействовать ячейку _PNET_H см. ниже. Pсети(Вт)=PNET*100
_TFNET=0x425 -Частота напряжения в сети. Fсети(Гц)=6250/TFNET для версий ПО >= 17.0. (Fсети(Гц)=2500/TFNET для версий ПО < 17.0) _ThFMAP=0x426 -Частота напряжения на выходе во время генерации. Fвыход(Гц)=6250/ThFMAP для версий ПО >= 17.0. (Fвыход(Гц)=2500/ThFMAP для версий ПО < 17.0)
_UOUTmed=0x427 – Напряжение на выходе во время генерации UOUTmed=0 – нет сети на входе иначе Uвыход(В)=UOUTmed +100.
_TFNET_Limit=0x428 – Частота вышла за пределы – переходим с сети на генерацию, значение этой ячейки сохраняет значение этой частоты Flimit(Гц)=2500/TFNET_Limit.
_UNET_Limit=0x429 – Напряжение вышло за пределы – переходим с сети на генерацию, значение этой ячейки сохраняет значение этого напряжения Ulimit(В)=UNET_Limit+100.
_RSErrSis=0x42A -Ошибки системы критические - произойдет выключение - необходимо исправить МАП, в нормальной работе должно быть RSErrSis=0.
_RSErrJobM=0x42B -ошибки (перегрузки) - после устранения выход в рабочий режим (отображается на ЖКИ). Биты ячейки: Бит0 ErrJM_AccLow =1 - АКБ полностью разряжен, напряжение критически низкое для работы МАП. Бит1 ErrJM_UAccHi =2 - Превышение напряжения на АКБ, генерация или заряд временно приостановлен. Бит2 ErrJM_IAccHiCh =4 - Ток KZ по АКБ при заряде, заряд временно приостановлен. Бит3 ErrJM_IAccHi =8 - Ток KZ по АКБ, генерация или заряд временно приостановлен. Бит4 ErrJM_Net_Rele =0x10 – Возможно залипло основное реле, необходим ремонт. Бит5 ErrJM_PNetKZ =0x20 - Ток КЗ по сети 220В, произойдет переход на генерацию с возможным дальнейшим отключением по КЗ АКБ. Бит6 ErrJM_ChReleUOUTErr =0x40 - На выходе 220В (но не на входе сети 220В) постороннее напряжение, генерация будет отключена. Бит7 ErrJM_Reset =0x80 - Произошел сброс программы, возможно сильная помеха от грозы и т.д.
_RSErrJob=0x42C -ошибки (перегрузки) - после устранения выход в рабочий режим (отображается на ЖКИ). Биты ячейки: Бит0 ErrJ_AccDisch =1 - АКБ полностью разряжен, МАП будет работать еще 1 минуту и отключит генерацию, пока напряжение на АКБ не станет выше EE_LCD_UAccMinNetGen =12,5в (заводское) или не перейдет на заряд. Бит1 ErrJ_PowAccMax =2 – Перегрузка по АКБ, генерация продолжится в течении 10сек (отсчет времени в ячейке _T_Overload). После чего произойдет отключение на 10сек. (_TOff_Overload) и так не более 10 раз в течении 10мин. Бит2 ErrJ_PowAccNominal =4 – Нагрузка выше номинальной мощности – будем работать ограниченное время (30 мин для Pro модели). Отсчет времени работы в ячейке _T_Nominal. Бит3 ErrJ_Temper =8 - Превышение температуры, приостановка генерации или заряда. Бит4 ErrJ_Culler =0x10 - Вентилятор не крутится, отрабатывает аналогично перегрузке ErrJ_PowAccMax.
Бит6 ErrJ_MODE =0x40 - Был сбой в режиме работы (например по сбросу питания или сильной помехи). Бит7 ErrJ_KZ_CH =0x80 - Выключились по многократным КЗ по заряду, через 2ч снимаем ошибку. _RSWarning=0x42D -предупреждения рабочие - не меняют ход работы (отображается на ЖКИ). Биты ячейки: Бит0 W_TransferBut =1 - Нет действия для комбинации кнопка (“СТАРТ” и “ЗАРЯД”), можно игнорировать. Бит1 W_Net_Limit =2 - Сетевое напряжение вышло за пределы. Бит2 W_Puls_Out =4 – Есть постороннее напряжение на выходной розетке или большие выбросы напряжения от нагрузки. Бит3 W_Puls_Net =8 - Выбросы напряжения в сети 220В по входу. Бит4 W_ButErr =0x10 - Залипла кнопка (“СТАРТ” или “ЗАРЯД”). Бит5 W_NoTransferCharge =0x20 - Переход на заряд не возможен - нет сети на входе. Бит6 W_PowMAPOverDizel =0x40 – В режиме трансляции сети и возможно заряда, мощность нагрузки за пределами выставленной максимальной мощности (EE_LCD_NetMaxPow), но меньше мощности МАР. Произойдет переход на генерацию (кроме режима подкачки). Бит7 W_NoStabNet =0x80 - Сеть не стабильна (по напряжению или частоте), не будет перехода на трансляцию сети или выход из заряда если насчитали много нестабильностей.
_Temp_Grad0=0x42E -Температура от внешнего датчика температуры (который наклеен на АКБ). T(град)=Temp_Grad0 – 50. !!! Надо отметить, что если этот датчик не вставлен то значение ячейки будет 70, что соответствует T(град)=20 град. Чтобы узнать вставлен ли датчик нужно проверить первый бит ячейки _Temp_off см. ниже.
_Temp_Grad1=0x42А -Температура датчика тора (в модели DOMINATOR) T(град)=Temp_Grad1 – 50. Проверить исправность датчика можно 2-м битом ячейки _Temp_off см. ниже.
_Temp_Grad2=0x430 -Температура датчика температуры транзисторов T(град)=Temp_Grad2 – 50. Проверить исправность датчика можно 3-м битом ячейки _Temp_off см. ниже.
_INET_16_4=0x431 - Более точное значение тока сети (аналогичное _INET), для подсчета статистики. Токе сети в Амперах *16 для токов <16A и *4 для токов >=16A - для вычисления мощности Iсети(A)= INET_16_4/16 если INET<16 или INET_16_4/4 если INET>=16.
_IAcc_med_A_u16_L=0x432, _IAcc_med_A_u16_H=0x433 - Более точное значение тока по АКБ (аналогичное _IAcc_med_A_2), для подсчета статистики. Iакб(А) = (IAcc_med_A_u16_L+ IAcc_med_A_u16_H*256)/16
_RCON_img=0x439 – Служебная ячейка из которой можно узнать по какой причине произошел сброс микроконтроллера.
_Temp_off=0x43C -для того чтобы знать есть или нет датчики температуры. бит 0: T_okr =0x01 Внешний датчик температуры (АКБ) отсутствует. бит 1: T_tor =0x02 Датчик температуры тора отсутствует. бит 2: T_rad =0x04 Датчик температуры транзисторов отсутствует.
_E_LCD_UAccChMax=0x43F -Текущее значение максимального напряжения заряда (конца заряда) поправленное по температуре внешнего датчика. Uакбмакс(В)=E_LCD_UAccChMax*K/10, где K=1 для 12В блока, K=2 для 24В блока, K=4 для 48В блока МАП.
_E_LCD_UAccChBUF=0x440 -Текущее значение буферного (поддерживающего) напряжения заряда поправленное по температуре внешнего датчика. Uакббуф(В)=E_LCD_UAccChBUF*K/10, где K=1 для 12В блока, K=2 для 24В блока, K=4 для 48В блока МАП. _T_CHARGE_NEED_ECO=0x441 -Счетчик, в минутах, задержки перехода из ЭКО режима (режим принудительной генерации при напряжении ниже EE_LCD_UAccMin) для игнорирования просадки. _RSErrDop=0x447 – Ошибки трехфазной системы, параллельных МАП, BMS и MPPT. Биты ячейки: Бит0: ErrD_SYNC3FazeConect =0x01 - Неправильные данные от предыдущей фазы или нет связи вообще. Бит1: ErrD_SYNC3FazeWin =0x02 - Вышли за окно синхронизации сдвига между фазами в 60 град. Бит2: ErrD_I2C_BMS=0x04 - ошибка I2C для BMS. Бит3: ErrD_I2C_MPPT=0x08 - ошибка I2C для MPPT. Бит4: ErrD_I2C_verPO4_MPPT=0x10 – устаревшая версия ПO МППТ (<4.0). Бит5: ErrD_SYNCSlaveConect =0x20 - Ошибка синхронизации параллельных МАП. не правильные данные (но есть сигнал синхронизации 50Гц) или нет связи вообще. Бит6: ErrD_SlaveNetOff =0x40 - На ведомом параллельном МАП нет сети, в то время как ведущий перешел на сеть - выключаем генерацию ведомого. _ThFMAPSync=0x449 – Частота предыдущей фазы (если текущая фаза в режиме генерации, то ее частота станет равной частоте предыдущей фазе). Fпредфазы(Гц)=2500/ThFMAPSync.
_TimeCyr_MINUT=0x44B – Счетчик минут текущего времени. Счетчик кратен 10 минутам, т.е. значения в ней от 0 до 9, на десятой минуте сбрасывается в 0. Остальные значения (часы и десятки минут) находятся в ячейке E_LCD_TimeCyr=0x1B6. _BMS=0x44C – Ячейка для работы с BMS. Либо можно читать состояние BMS подключенного по сухим контактам, либо управлять непосредственно через RS232. Режим работы BMS задается ячейкой EEProm _TempTopToBMS=0x21. Биты ячейки: Бит0 BMS_DisCh_GenOff =1 - Сигнал от BMS о Разряде Бит1 BMS_OverCh_ChOff =2 - Сигнал от BMS о ПереЗаряде _M_POWhourNET_L=0x44D, _M_POWhourNET_H=0x44E, _M_POWhourNET_HH=0x44F, _M_POWhourMAP_L=0x450, _M_POWhourMAP_H=0x451, _M_POWhourMAP_HH=0x452, _M_POWhourMAPCharge_L=0x453, _M_POWhourMAPCharge_H=0x454, _M_POWhourMAPCharge_HH=0x455, - Статистика потребляемой мощности от сети, от АКБ и от сети на заряд. Pсети(кВт.ч) = (M_POWhourNET_HH *65536 + M_POWhourNET_H *256 + M_POWhourNET_L)/100 – общее потребление от сети, включая заряд. Pакб(кВт.ч) = (M_POWhourMAP_HH *65536 + M_POWhourMAP_H *256 + M_POWhourMAP_L)/100 – общее потребление от АКБ, включая подкачку при трансляции сети. Pакб(кВт.ч) = (M_POWhourMAPCharge_HH *65536 + M_POWhourMAPCharge_H *256 + M_POWhourMAPCharge_L)/100 – потредление от сети на заряд, т.е. вкачиваемую энергию в АКБ.
_PLoad_H=0x456 – дополнительный байт для отображения мощности нагрузки по АКБ (или при трансляции сети в режиме подкачки в сеть) для блоков мощностью более 25кВт. Pнагруз(Вт) = (PLoad_H*256 + PLoad_L)*100
_PNET_H=0x457 -дополнительный байт для отображения мощности отбираемой от сети, в том числе на заряд для блоков мощностью потребления более 25кВт. Pсети(Вт)=(PNET_H*256 + PNET_L)*100
_CulerSpead=0x458 – текущая скорость вращения вентилятора: 0 – не вращается, 1 – вращение на половинной скорости, 2 – вращение на полной скорости. Далее по 32 ячейки (в 12В модели используется 4, 24В - 8, 48в - 16, 96В -32) отведены для информации о подключенных BMS (указанный адрес первого BMS): _UakbCell_L[32]=0x480, _UakbCell_H[32]=0x481 - Напряжение банок, т.е. от BMS на соотв. банках в вольтах*100 (т.е. 2 знака после запятой, например, 342 соотв. 3,42В). Необходимо маскировать старший бит в UakbCell_H[] т.к. при ошибочных данных он устанавливается в 1. В этом случае сами данные остаются от предыдущего измерения. В том числе установится соответствующая ошибка в _RSErrDop. Т.е. по старшему биту можно узнать какой BMS дает не правильные (или вообще не дает) данные.
Т.е. UakbCell[](B)=((UakbCell_H[]&0x7F)*256+ UakbCell_L[])/100 _TakbCell[32]=0x4C0 - Температура банок. Для получения в градусах необходимо вычесть 50. Т.е 0 –соотв. "-500", 75 – “250” и если не датчик не подключен то число равно 255!!!.
_Q_Cell[32]=0x4E0 - Ток разряда банок. I=(Q_Cell/100)*(UakbCell/100). Т.е. если на банке 3,42В (значение 342), Q_Cell=50 (на 50% открыт транзистор разрядного тока BMS) то ток разряда равен I=50*342/10000=1,71А.
_UAcc_Optim_VL=0x520, _UAcc_Optim_VH=0x521 – Среднее напряжение между измеренным средним напряжением АКБ (_UAcc_med_VH, _UAcc_med_VL) и напряжением АКБ которое не учитывает нагрузку. Если ток нагрузки небольшой то UAcc_Optim_V=_UAcc_med_V. Но если нагрузка большая то возникает просадка напряжения АКБ в пиках синусоиды выходного 220, которая отражается на среднем напряжении АКБ. Чтобы не учитывать эту просадку отключение АКБ по разряду происходит по UAcc_Optim_V. Для более ранних версий отключение происходило по UAcc_med_V, но и само значение этого напряжения вычислялось без учета просадки и соответственно не совпадало (на больших нагрузках) с истинно среднем значением на АКБ. Теперь мы отражаем правильное среднее значение (совпадает с тестером) но отключаемся по полному разряду по UAcc_Optim_V – именно оно теперь сравнивается с порогом _LCD_UAccMin=0x13D. UакбОпт(В) = (UAcc_Optim_VH*256+ UAcc_Optim_VL)/10
_UAcc_med_VS_100L=0x522, _UAcc_med_VS_100H=0x523 – Альтернатива ячейкам_UAcc_med_VH, _UAcc_med_VL. Среднее напряжение АКБ в вольтах*100 (до сотых) - для совместимости с МPPT и BMS данными. В этих ячейках будут точные значения напряжения АКБ если подключены BMS (в этом случае они и отображают значение от всех BMS). Uакб(В) = (UAcc_med_VS_100H*256+ UAcc_med_VS_100L)/100.
_MPPT_toCh=0x524 – Состояние MPPT контроллера(ов). Можно использовать для принудительного перевода MPPT в разные режимы: 0- MPPT_toCh=MPPT_Ch_i - все MPPT в циклическом заряде 1- MPPT_toCh=MPPT_Ch_v - все MPPT в Дозаряде 2- MPPT_toCh=MPPT_Ch_b1 - все MPPT в буферном заряде 1 3- MPPT_toCh=MPPT_Ch_b2 - все MPPT в буферном заряде 2 Все MPPT У\управляемые МАП находятся в одинаковых режимах.
Далее по 16 (максимально возможное значение подключенных параллельных MPPT) _I_Akb_MPPT_L[16]= =0x530, _I_Akb_MPPT_H[16]=0x531 -Ток заряда параллельных MPPT в амперах*16 (например, значение 600 соотв. 600/16=37,5А). Необходимо маскировать старший бит в I_Akb_MPPT_H[] т.к. при ошибочных данных он устанавливается в 1. В этом случае сами данные остаются от предыдущего измерения. В том числе установится соответствующая ошибка в _RSErrDop. Т.е. по старшему биту можно узнать какой MPPT дает не правильные (или вообще не дает) данные.
_Takb_MPPT[16]=0x560 – Температура параллельных MPPT. Для получения в градусах необходимо вычесть 50. Т.е 1 –соотв. "-490", 75 – “250”. Если не датчик не подключен, то число равно 0 (в отличии от BMS).
_TchEco_L=0x582, _TchEco_H=0x583 TchEco=TchEco_H*256+ TchEco_L – счетчик времени в минутах. После перехода в ЭКО режим (flag_NETON_ECO==0) начинается отсчет этого времени. Если в течении 3-х дней (4320 минут) напряжение АКБ не достигало напряжения полного заряда, flag_NETON_ECO устанавливается в F_ECO_GenOff и в случае MPPT Микроарт, последний входит в режим циклического заряда. Если напряжение АКБ не достигло напряжения полного заряда в течении 7-ми дней (10080 минут) запускается заряд от внешней сети 220В (если конечно, последняя присутствует).
_flag_NETON_ECO=0x585 - флаг ЭКО режима или тарифной сети. F_ECO_GenOff=1, - Напряжение упало ниже EE_LCD_UAccMinNetGen, необходимо выйти из принудительной генерации на трансляцию сети и возможно начать зарядку. F_TARIFMIN=2, - Флаг того, что мы вступили в зону минимального тарифа, если конечно мы работаем с тарифами, выходим из принудительной генерации на трансляцию сети и заряд АКБ.
Этот флаг используется, если выбран один из алгоритмов сети "Сеть/ЭнергЭконом"->“Генерация ЭКО” или “Тарифная Сеть”, совместно с режимом "Генерация МАП"->"РежимПодкачкиЭКО". Последний режим уточняет, как поступать в ЭКО режиме: идти на принудительную генерацию или осуществлять подкачку в сеть. Когда наступает режим ЭКО или выход из тарифной зоны flag_NETON_ECO обнуляется. Далее в случае принудительной генерации, МАП из трансляции сети (режим MODE=M_ONNET) переходит на генерацию (режим MODE=M_ON). В подкачке МАП остается на трансляции сети и осуществляет подкачку в сеть. Если ЭКО режим или тарифный закончил свое действие то взводится один из битов F_ECO_GenOff или F_TARIFMIN и МАП либо прекращает подкачку либо выходит из принудительной генерации в режим трансляции сети (MODE=M_ONNET) или возможно в режим заряда АКБ (MODE= M_ONCHARGE).
Для версии ПО >=23.3_d ==== _flagUnet2=0x527 – Показывает состояние первого и второго входа 220В и какой вход активный в данный момент (если включен режим двух входов) только в модели DOMINATOR: Бит0: ActivNet2 =0x01 - активный второй вход – переключаемся на него и поддерживаем все алгоритмы по этому входу. Первый вход всегда в приоритете. Поэтому переключение на второй вход возможен, только если нет сети на первом входе. И аналогично, при появлении сети на первом входе, произойдет переход на него. Бит1: fUnet1_Norm=0x02 - есть сеть на первом входе. Бит2: fUnet2_Norm=0x04 - есть сеть на втором входе.
_I_Akb_MAP_faz1L=0x528, _I_Akb_MAP_faz1H=0x529 - ток фаз по АКБ с точностью 0,1А, при отрицательных токах (при заряде) добавляется верхний бит 0x80 в _I_Akb_MAP_faz1H. В _I_Akb_MAP_faz1 собраны все токи со всех параллельно подключенных МАП. Реальная точность токов текущих версий МАП не превышает 1А и сделана с запасом на будущие модели. If(I_Akb_MAP_faz1H&0x80) – ток заряда Iакб(А) = (I_Akb_MAP_faz1L + (I_Akb_MAP_faz1H&0x7F)*256)/10
Для однофазной системы можно не использовать т.к. есть альтернатива IAcc_med_A_u16.
_I_Akb_MAP_faz2L=0x52A, _I_Akb_MAP_faz2H=0x52B - тоже для фазы2
_I_Akb_MAP_faz3L=0x52C, _I_Akb_MAP_faz3H=0x52D - тоже для фазы3 _Status_RELEdop=0x586 Бит1: S_RELE2=2 - состояние управления реле2
_LCD_UAccChMax_S_Temp=0x588-0x589 - Напряжение окончание заряда c коррекцией по температуре - полное умноженное на 10. _LCD_UAccChBUF_S_Temp=x58A-0x58B - Напряжение поддержания заряда c коррекцией по температуре - полное умноженное на 10. Эти ячейки показывают реальные напряжения по которым работает алгоритм заряда, в отличии от выставленных пользователем в ЖКИ. _Pmax_On=0x58C - случился Pmax, т.е. нагрузка превысила выставленную максимальную мощность сети. Бит0: Pmax_On_Full=1 - Зафиксирована нагрузка выше Pmax Бит1: Pmax_On_UpLoad=2 Находимся в подкачке по Pmax
_PmaxGenDisch=0x58D - случился полный разряд по Pmax, переходим на сеть независимо от выставленной максимальной мощности сети.
Описание Ячеек EEProm: Префикс _ (подчеркивание) означает адрес ячейки, само значение ячейки указывается c префиксом EE_ (чтобы отличать от ячеек RAM).
Ниже НЕ описаны ячейки, которые используются МАП-ом для внутренних нужд (настройки, коррекции, критические пороги напряжений и токов и т.д.) или которые использовались для моделей снятых с производства.!!! Изменение не описанных ячеек может привести к непредсказуемой работе. Кроме того: !!! Данные по адресам с 0x10 по 0x27 отвечают за настройки МАП. Изменение этих ячеек может привести к непредсказуемым последствиям или в лучшем случае не правильному отображению параметров. Эти ячейки можно прочитать и сохранить, чтобы восстановить, например, при не удачном перепрограммировании прошивки. !!! Данные по адресам с 0x28 по 0x37 используются как резерв для ПО компьютера в том числе программой Dial. Изменение этих ячеек может привести к неправильной работе внешних программ совместно с МАП. Только на Чтение: _Device=0x00 код устройства, =3 для МАП SIN (другие коды соответствуют другим изделиям фирмы Микроарт). _VerPow=0x01 - версия текущей модели Pow. Начиная с версии ПО 16, старший бит (8-й) 1 – означает гибрид, 7-й бит зарезервирован. Младшие 6 бит версия силовой платы. _VerPO=0x02 - версия ПO для данного устройства, старшие 3бита - значение после точки: Ver ПО = (EE_VerPO&0x1F).(EE_VerPO>>5) На Чтение и Запись: _POW=0x05 - Мощность устройства. Значения от 0 до11 последовательно соответствуют мощностям: 1,3; 1,5; 2; 3; 4,5; 6; 9; 12; 15; 18; 24; 36 кВт.
_UACC=0x06 - Рабочее напряжение МАП. Значения от 0 до 3 последовательно соответствуют напряжениям: 12В, 24В, 48В и 96В.
_DevOpt=0x07 - Версия процессора - 1 для текущей версии.
_RAM_END_L=0x08, _RAM_END_H=0x09 – адрес конечной ячейки RAM Adr_end= RAM_END_H*256+ RAM_END_L
_Language=0x0A – 0 – Русский язык меню, 1-английский
_VerPlatPic=0x0C – версия платы с процессором Ver Plat Pic = EE_VerPlatPic _VerPlatNet=0x0D – версия сетевой платы Ver Plat NET = (EE_VerPlatNET&7)+6, 4-й бит отвечает за тип сетевой платы: 0 – low, 1 – Hi.
_SyncDiz_Plat=0x24 enum EnSyncDiz_Plat { Если установлен первый бит - обычная трехфазка.
Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|