Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Номера бит ячеек описаны с 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
Бит0: S_RELE1=1 - состояние управления реле1

Бит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 {
бит1: Sync_Plat=1 - подключена плата синхронизации 3-фаз и паралл.
бит2: DopRele=2 - подключены на плате синхронизации внешние реле управления (можно использовать для управления стартером дизеля).
бит3: POwDizRele=4 - подключено управление мощным реле переключения сети на дизель.

Если установлен первый бит - обычная трехфазка.
Если установлены п

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...