ich habe einen dieser neuen ABB Aktoren mit Stromerkennung im Einsatz und möchte die kWh Berechnen
Eigentlicher Code: Zeile 1 bis 32. Der Rest ist Demo oder Test.
Programm wird als Makro seinen Weg in die Enertex.lib finden und dann einfach über einen Aufruf
kWh(GA,Name)
einzubauen sein. Hier aber mal zum Vestehen...
[highlight=epc]
[EibPC]
//------------------------------------------------------------------------------
//
// Ein Integrator für einen 2 Byte Zähler.
// Es handelt sich hierbei um ABB Aktoren mit Stromerkennung (Typen SA/S x.16.5S)
// Der mA Wert wird in eine Variable kWh gespeichert, welche vom Typ f32 ist.
//
// Annahme: Der Aktor gibt dies alles über GA='1/2/3'u16 aus (Leseanforderung muss
// möglich sein). Alle 15 Min schickt der EibPC eine Leseanforderung an
// diese Adresse.
//------------------------------------------------------------------------------
// Sekundenzähler
t=0f32
if cycle(0,1) then t=t+1f32 endif
// Integrationsintervall
t0=0f32
// Steuervariable
Int=AUS
// Stromwert
Strom=0u16
// Zähler
kWh=0f32
// Der Integrator
// kwH=Strom*Delta_Zeit
// mit Delta_Zeit=t-t0
// Dimension kWh: I(A)/1000*220V* Delta_Zeit s/3600 *1/1000= I*Delta_Zeit*6.111111111111111e-8
if event('1/2/3'u16) then Int=EIN;kWh=kWh+convert(Strom,0f32)*(t-t0)*6.111111111111111e-8f32 endif
// Speichern der Werte
if Int then t0=t;Int=AUS;Strom='1/2/3'u16 endif
// Alle 15 min in jedem Fall den Zähler auslesen
if cycle(15,0) then read('1/2/3'u16) endif
//--------------------------------------------------------------------------------
// Verarbeitung für weitere Zwecke, z.B. Rauschreiben auf KNX Anzeige
if change(kWh) then write('2/2/3'c14,convert(kWh,$$c14)) endif
// Test Scenarios
if t==1f32 then write('1/2/3'u16,20000u16) endif
if t==11f32 then write('1/2/3'u16,10000u16) endif
if t==21f32 then write('1/2/3'u16,30000u16) endif
if t==26f32 then write('1/2/3'u16,000u16) endif
h='2/2/3'c14
[/highlight]
Kommentar