Eltek FlatPack2 комплексный экран ver2.2

Разработан комплексный экран состояний работы cистем электропитания постоянным током Flatpack2

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

Немного информации по устройству:

Специально разработанная система, для того чтобы соответствовать требованиям высокой плотности мощности и более компактным размерам системных решений.

Flatpack2 2U Integrated это компактная система питания постоянного тока включающая в состав блок контроля и управления (Smartpack), контакторы отключения нагрузки и батарей (LVLD,LVBD). Система может включать до 4 выпрямительных модулей Flatpack2.

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

Система поддерживает широкий диапазон входных напряжений (от 85 до 290VAC) и выдает плавный стартовый синусоидальный ток в момент включения питания.

 

 

 

 

Данные о работе устройства будем брать из xml файла:

По адресу http://IP/data/siteheader.xml мы получаем общий статус и состояние FlatPack2

Следующего содержания:

<SystemConfig>
	<DesiAmpere val="false"/>
	<Temperature_Type val="C"/>
	<NomVoltType val="48"/>			общий номинал сборки батарей, 12,24,48 и т.д.
	<SystemPolarity val="positive"/>	полярность
	<NumberOfBattCells val="24"/>
</SystemConfig>

<Battery>					раздел по батарейкам
	<Status val="Normal"/>			статус по авариям Major Minor Normal
	<Voltage val="54.07"/>			текущее напряжение всей группы батарей
	<Mode val="FLOAT"/>
	<Temperature val="-"/> 			температура батарейного отсека
	<Temp_Comp_Enable val="false"/> 
	<Current val="1"/>			ток +заряда -разряда
	<OnBattery val="false"/>		false - работа от сети, true - работа от батарей
	<Total_Current_Limit val="true"/>
	<String_Current_Limit val="true"/>
	
	<Remaining_Capacity>			расход
		<Minutes val="650"/>		оставшееся время работы от батарей
		<AmpHours val="65"/>		оставшаяся ёмкость батарей
	</Remaining_Capacity>
</Battery>

<Rectifier>					выпрямитель
	<Current val="7"/>			ток потребления
	<Temperature val="26"/>			температура
	<Temperature_Type val="C"/>
	<EffMan_Enable val="0"/>
</Rectifier>

<DC_Bus>					нагрузка
	<Current val="6"/>			ток потребления нагрузкой
</DC_Bus>

<AC_Feed>					состояние по фазам
	<Phase ind="1">
		<Voltage val="217"/>
	</Phase>
	<Phase ind="2">
		<Voltage val="0"/>
	</Phase>
	<Phase ind="3">
		<Voltage val="0"/>
	</Phase>
</AC_Feed>

<Energy_Site>
	<System_Status val="GREEN"/>		общий статус, состояния, green, red, yellow
	<SiteName val="Boktor"/>		посёлок размещения
	<Access_Level val="ADMIN"/>		уровень доступа текущего пользователя
	<UserName val="97"/>
	<UserNumber val="1"/>
	
	<SysTime>
		<Date val="2021-07-08"/>
		<Time val="11:38"/>
	</SysTime>
</Energy_Site>

</root>

 

 По адресу http://IP//data/batt_summary.xml мы получаем всю информацию по батарейкам

<root>
	<Summary>					суммарная инфа
		<Status val="Normal"/>
		<Voltage val="54.07"/>			напряжение на всей группе батарей
		<Current val="1"/>			ток потребления батарейками +зарядка -разрядка в сторону нагрузки
		<Temperature val="-"/>			термодатчик батарейного отсека
		<Temperature_Type val="C"/>
		<Life val="0"/>				всегда равно нулю
		<LVD_Status val="Normal"/>
		<LVD_Name val="LVBD "/>
		<Breaker_Status val="Disabled"/>
		<Mode val="Float"/>
	</Summary>
	
	<Symmetry_Monitor_Status>
		<Mode val="Discharge Mode"/>
		<Status val="Disabled"/>
		<Enable val="Disabled"/>
		<Type val="Center Point Measurement"/>
	</Symmetry_Monitor_Status>

	<Lifetime>					лайфтайм работы батарей
		<Quality val="-"> </Quality>
		<Tot_Capacity>				итогошняя ёмкость батареи
			<AmpHours val="65"/>
		</Tot_Capacity>

		<Remaining_Capacity>			остатки
			<Minutes val="650"/>		остаток времени работы от батарей
			<AmpHours val="65"/>		отстаток общей ёмкости батарей
		</Remaining_Capacity>

		<Discharged_Capacity>
			<AmpHours val="0"/>		ампераж разряда
		</Discharged_Capacity>
	
		<Delta_StringCurrent>
			<Current val="-"/>
		</Delta_StringCurrent>
	</Lifetime>
</root>

 

Метода получения данных проста, раз в минуту отправляем запрос:

 alarm[0]

var map = ds_map_create();
ds_map_add(map, "Host", _ip);
ds_map_add(map, "Connection", "keep-alive");
ds_map_add(map, "Authorization", "Basic " + get_password(_ip) );
ds_map_add(map, "Content-Type", "text/html");
ds_map_add(map, "Accept-Encoding", "gzip,deflate");
ds_map_add(map, "Accept-Language", "en-GB,en-US;q=0.8,en;q=0.6");
var data="";
var htp = "http://" + _ip + "/data/siteheader.xml";
request_siteheader = http_request(htp, "GET", map, data);
trace("послано GET siteheader  \n", htp);
trace_ds_map(map, "map=")
request_counter++;

 

асинхрон HTTP, получаем ответ и обрабатываем данные

		r_str = ds_map_find_value(async_load, "result");
		trace(r_str);		
		
		if string_pos("Your Authentication failed", r_str) then
		{
			trace("треба аутентифихацию");			
			//get_authorize(rtps_ip);
			return;	
		};
		if string_pos("404 Not Found", r_str) then
		{
			trace("404 Not Found");				
			return;	
		};
		
		request_counter=0;
		shema.set_request_counter(request_counter);
		//-----------------------------------------------------------------------
		var _Sysconf	= string_get_tag_block(r_str, "SystemConfig");
		var _Battery	= string_get_tag_block(r_str, "Battery");
		var _Rectifier	= string_get_tag_block(r_str, "Rectifier");
		var _DC_Bus		= string_get_tag_block(r_str, "DC_Bus");
		var _AC_Feed	= string_get_tag_block(r_str, "AC_Feed");
		var _Energy_Site= string_get_tag_block(r_str, "Energy_Site");
		//-----------------------------------------------------------------------
		//trace("--------- SystemConfig ------------", _Sysconf);
		//trace("--------- Battery ------------", _Battery);
		//trace("--------- Rectifier ------------", _Rectifier);
		//trace("--------- DC_Bus ------------", _DC_Bus);
		//trace("--------- AC_Feed ------------", _AC_Feed);
		//trace("--------- Energy_Site ------------", _Energy_Site);
		//-----------------------------------------------------------------------
		if !is_undefined(_Sysconf) then  //в старых версиях там нет такого раздела
		{
			trace("NomVoltType=",		get_tag(_Sysconf, "NomVoltType val"));	//48 напряжение номинальное на которое работает вся система
			trace("SystemPolarity=",	get_tag(_Sysconf, "SystemPolarity val"));
			trace("NumberOfBattCells=", get_tag(_Sysconf, "NumberOfBattCells val"));
		}
		//-----------------------------------------------------------------------
		trace("Status=",		get_tag(_Battery, "Status val"));		//?везде и всегда Normal
		trace("Voltage=",		get_tag(_Battery, "Voltage val"));		//напряжение на батарейкее текущее
		trace("Mode=",			get_tag(_Battery, "Mode val"));			//FLOAT непонятки
		trace("Temperature=",	get_tag(_Battery, "Temperature val"));	//температура батареек
		trace("Current=",		get_tag(_Battery, "Current val"));		//ток нагрузки на батарейку, минусовое значит разряд
		trace("OnBattery=",		get_tag(_Battery, "OnBattery val"));	//true - работаем от батарейки
		trace("Minutes=",		get_tag(_Battery, "Minutes val"));		//оставшаяся ёмкость в минутах
		trace("AmpHours=",		get_tag(_Battery, "AmpHours val"));		//оставшаяся ёмкость в амперчасах
		//-----------------------------------------------------------------------
		trace("Current=",		get_tag(_Rectifier, "Current val"));	//потребление выпрямителя в целом, при отс электричества там 0
		trace("Temperature=",	get_tag(_Rectifier, "Temperature val"));//температура выпрямителя
		//-----------------------------------------------------------------------
		trace("Current=",		get_tag(_DC_Bus, "Current val"));		//нагрузка на выпрямитель которая на нём висит типа, потребители +7даже при отс электричества
		//-----------------------------------------------------------------------
		trace("Phase1=",		get_tagn(_AC_Feed, "Voltage val", 1));	//фаза 1
		trace("Phase2=",		get_tagn(_AC_Feed, "Voltage val", 2));	//фаза 2
		trace("Phase3=",		get_tagn(_AC_Feed, "Voltage val", 3));	//фаза 3
		//-----------------------------------------------------------------------
		shema.set_bat_voltage		(real((get_tag(_Battery, "Voltage val"))));	//напряжение на батарейкее текущее
		shema.set_bat_temperature   (get_tag(_Battery, "Temperature val"));					//температура батареек
		shema.set_bat_current		(real((get_tag(_Battery, "Current val"))));	//ток нагрузки на батарейку, минусовое значит разряд
		shema.set_bat_onBattery	    (string_pos("true",(get_tag(_Battery, "OnBattery val"))) >=1 ? true : false); //true питалоово идет из батареек
		
		//-------------------------------------------------------------------------------
		//намудрилово из-за того что по протоколу SSL здесь нету инфы об этом, а в обычной есть		
		//оставшаяся ёмкость в минутах
		var t = get_tag(_Battery, "Minutes val");
		if !is_undefined(t) then  shema.set_bat_remaining_min (string_digits(t));
		//оставшаяся ёмкость в амперчасах
		t = get_tag(_Battery, "AmpHours val");
		if !is_undefined(t) then  shema.set_bat_remaining_Ah(t);
		//-------------------------------------------------------------------------------
		
		phase1 = get_tagn(_AC_Feed, "Voltage val", 1); 
		phase2 = get_tagn(_AC_Feed, "Voltage val", 2); 
		phase3 = get_tagn(_AC_Feed, "Voltage val", 3);		
		shema.set_phase(phase1, phase2, phase3);		
		
		shema.set_rec_current		(real(string_digits(get_tag(_Rectifier, "Current val"))));	//потребление выпрямителя в целом от АС (при отсутствие фаз там 0)
		shema.set_rec_temperature	(get_tag(_Rectifier, "Temperature val"));					//температура выпрямителя
		shema.set_rec_load_current	(real(string_digits(get_tag(_DC_Bus, "Current val"))));	//ток нагрузки потребителей на выпрямитель

 ну а дальше уже дело "техники", отобразить всё это в удобоваримом для нас виде.