HMI Sakristei (Läuten, Heizung, Licht)
HMI Programm
Das HMI in der Sakristei vom Typ Kinco GL100E dient als zusätzliches zentrales Steuerelement.
Das Programm für Kinco D-Tools steht hier über den Download Button bereit. Erstellt ist es in Programmversion 4.4.0.2
Eine Anleitung zur Bedienung des auf dem HMI aufgespielten Programms kann in folgenden Artikel eingesehen werden:
Überblick Steuerungstechnik und Nutzeranleitung PMK
FensterIDs und Kernelemente des Programms
Zugehörige Komponenten und ihre Variablenadressen
Ereignis- und Alarmmeldungen des HMI
Makros des HMIs
Für bestimmte Rechenaufgaben, wie beispielsweise der Errechnung einer benötigten Vorheizzeit, oder dem Aufteilen von BCD Zeitvariablen der LOGO!s in einzelne Eingabefelder für Stunden und Minuten am HMI, werden kleine C Programme genutzt.
Deren Definition findet ihr nachfolgend.
Übersicht der in den Makros verwendeten Variablen
0_heiz_alle_Zeiten_senden
#include "macrotypedef.h"
#include "math.h"
int MacroEntry()
{
OUT_WEin_No1_BCD_to_SPS = IN_WEin_No1_Std * 100 + IN_WEin_No1_Min; //Wochenuhr Nocken1(B035) Einzeit Senden
OUT_WAus_No1_BCD_to_SPS = IN_WAus_No1_Std * 100 + IN_WAus_No1_Min; //Wochenuhr Nocken1 B035) Auszeit Senden
OUT_WEin_No2_BCD_to_SPS = IN_WEin_No2_Std * 100 + IN_WEin_No2_Min; //Wochenuhr Nocken2(B035) Einzeit Senden
OUT_WAus_No2_BCD_to_SPS = IN_WAus_No2_Std * 100 + IN_WAus_No2_Min; //Wochenuhr Nocken2 B035) Auszeit Senden
OUT_J1Ein_BCD_to_SPS = IN_J1Ein_Monat * 100 + IN_J1Ein_Tag;//Jahresuhr(B028) Startdatum Senden
OUT_J1Aus_BCD_to_SPS = IN_J1Aus_Monat * 100 + IN_J1Aus_Tag;//Jahresuhr(B028) Enddatum Senden
OUT_J2Ein_BCD_to_SPS = IN_J2Ein_Monat * 100 + IN_J2Ein_Tag;//Jahresuhr(B029) Startdatum Senden
OUT_J2Aus_BCD_to_SPS = IN_J2Aus_Monat * 100 + IN_J2Aus_Tag;//Jahresuhr(B029) Enddatum Senden
return 0;
}
1_heiz_alle_Zeiten_holen
#include "macrotypedef.h"
#include "math.h"
int MacroEntry()
{
IN_J1Ein_Monat=OUT_J1Ein_BCD_to_SPS/100;
IN_J1Ein_Tag=OUT_J1Ein_BCD_to_SPS%100;
IN_J1Aus_Monat=OUT_J1Aus_BCD_to_SPS/100;
IN_J1Aus_Tag=OUT_J1Aus_BCD_to_SPS%100;
IN_J2Ein_Monat=OUT_J2Ein_BCD_to_SPS/100;
IN_J2Ein_Tag=OUT_J2Ein_BCD_to_SPS%100;
IN_J2Aus_Monat=OUT_J2Aus_BCD_to_SPS/100;
IN_J2Aus_Tag=OUT_J2Aus_BCD_to_SPS%100;
IN_WEin_No1_Std = OUT_WEin_No1_BCD_to_SPS / 100 ;
IN_WEin_No1_Min = OUT_WEin_No1_BCD_to_SPS%100 ;
IN_WEin_No2_Std = OUT_WEin_No2_BCD_to_SPS / 100 ;
IN_WEin_No2_Min = OUT_WEin_No2_BCD_to_SPS%100 ;
IN_WAus_No1_Std = OUT_WAus_No1_BCD_to_SPS / 100 ;
IN_WAus_No1_Min = OUT_WAus_No1_BCD_to_SPS%100 ;
IN_WAus_No2_Std = OUT_WAus_No2_BCD_to_SPS / 100 ;
IN_WAus_No2_Min = OUT_WAus_No2_BCD_to_SPS%100 ;
return 0;
}
2_laeute_alle_Zeiten_senden
#include "macrotypedef.h"
#include "math.h"
int MacroEntry()
{
IN_J_EIN_MO=PLC_J_Ein/100; //Jahresuhr (B071) Ein Monat Holen und in HMI Variable schreiben
IN_J_EIN_Tag=PLC_J_Ein%100; //Jahresuhr (B071) Ein Tag Holen und in HMI Variable schreiben
IN_J_AUS_MO=PLC_J_Aus/100; //Jahresuhr (B071) Aus Monat Holen und in HMI Variable schreiben
IN_J_AUS_Tag=PLC_J_Aus%100; //Jahresuhr (B071) Aus Tag Holen und in HMI Variable schreiben
IN_W_No1_Ein_Std=PLC_Woche_No1_Ein/100; //Wochenuhr (B072) Nocken1 Ein Std holen und in HMI Variable schreiben
IN_W_No1_Ein_Min=PLC_Woche_No1_Ein%100; //Wochenuhr (B072) Nocken1 Ein Min holen und in HMI Variable schreiben
IN_W_No1_Aus_Std=PLC_Woche_No1_Aus/100; //Wochenuhr (B072) Nocken1 Aus Std holen und in HMI Variable schreiben
IN_W_No1_Aus_Min=PLC_Woche_No1_Aus%100; //Wochenuhr (B072) Nocken1 Aus Min holen und in HMI Variable schreiben
IN_W_No2_Ein_Std=PLC_Woche_No2_Ein/100; //Wochenuhr (B072) Nocken2 Ein Std holen und in HMI Variable schreiben
IN_W_No2_Ein_Min=PLC_Woche_No2_Ein%100; //Wochenuhr (B072) Nocken2 Ein Min holen und in HMI Variable schreiben
IN_W_No2_Aus_Std=PLC_Woche_No2_Aus/100; //Wochenuhr (B072) Nocken2 Aus Std holen und in HMI Variable schreiben
IN_W_No2_Aus_Min=PLC_Woche_No2_Aus%100; //Wochenuhr (B072) Nocken2 Aus Min holen und in HMI Variable schreiben
return 0;
}
3_laeute_alle_Zeiten_senden
#include "macrotypedef.h"
#include "math.h"
int MacroEntry()
{
PLC_J_Ein=IN_J_EIN_MO*100+IN_J_EIN_Tag; //Jahresuhr (B071) StartDatum senden
PLC_J_Aus=IN_J_AUS_MO*100+IN_J_AUS_Tag; //Jahresuhr (B071) EndDatum senden
PLC_Woche_No1_Ein=IN_W_No1_Ein_Std*100+IN_W_No1_Ein_Min; //Wochenuhr (B072) Nocken1 EinZeit senden
PLC_Woche_No1_Aus=IN_W_No1_Aus_Std*100+IN_W_No1_Aus_Min; //Wochenuhr (B072) Nocken1 AusZeit senden
PLC_Woche_No2_Ein=IN_W_No2_Ein_Std*100+IN_W_No2_Ein_Min; //Wochenuhr (B072) Nocken2 EinZeit senden
PLC_Woche_No2_Aus=IN_W_No2_Aus_Std*100+IN_W_No2_Aus_Min; //Wochenuhr (B072) Nocken2 AusZeit senden
return 0;
}
4_licht_auszeit_setzen
#include "macrotypedef.h"
#include "math.h"
int MacroEntry()
{
//PLC No1 EIN holen und in Variable des HMI schreiben
ZWS_W_No1_Ein_Std = EIN_PLC / 100 ;
ZWS_W_No1_Ein_Min = EIN_PLC%100;
//Zeiten wieder zurück PLC schreiben
EIN_PLC=ZWS_W_No1_Ein_Std*100+ZWS_W_No1_Ein_Min;
//Stunden gleich für 2ten Puls Minuten +1
ZWS_W_No1_Aus_Std=ZWS_W_No1_Ein_Std;
ZWS_W_No1_Aus_Min=ZWS_W_No1_Ein_Min+1;
//AUS zur PLC Schreiben
AUS_PLC=ZWS_W_No1_Aus_Std*100+ZWS_W_No1_Aus_Min;
return 0;
}
5_vorheizzeit_errechnen
#include "macrotypedef.h"
#include "math.h"
int MacroEntry()
{
Ist_Temp=PLC_IST;
SollTemp=PLC_SOLL;
Vorheizzeit=SollTemp-Ist_Temp;
Vorheizzeit=Vorheizzeit/1.3;
return 0;
}
6_uhrzeit_sync_hmi_to_plc_kschiff
#include "macrotypedef.h"
#include "math.h"
int MacroEntry()
{
plc_kschiff_StundeMinute = HMI_Stunde * 100 + HMI_Minute;
plc_kschiff_MonatTag = HMI_Monat * 100 + HMI_Tag;
plc_kschiff_sekjahr = HMI_Jahr;
return 0;
}
7_uhrzeit_sync_hmi_to_plc_turm
#include "macrotypedef.h"
#include "math.h"
int MacroEntry()
{
plc_turm_StundeMinute = HMI_Stunde * 100 + HMI_Minute;
plc_turm_MonatTag = HMI_Monat * 100 + HMI_Tag;
plc_turm_sekjahr = HMI_Jahr;
return 0;
}
8_uhrzeit_sync_hmi_to_plc_empore
#include "macrotypedef.h"
#include "math.h"
int MacroEntry()
{
plc_empore_StundeMinute = HMI_Stunde * 100 + HMI_Minute;
plc_empore_MonatTag = HMI_Monat * 100 + HMI_Tag;
plc_empore_sekjahr = HMI_Jahr;
return 0;
}
9_licht_zeiten_holen
#include "macrotypedef.h"
#include "math.h"
int MacroEntry()
{
//PLC No1 EIN holen und in Variable des HMI schreiben
ZWS_W_No1_Ein_Std = EIN_PLC / 100 ;
ZWS_W_No1_Ein_Min = EIN_PLC%100;
//PLC No1 AUS holen und in Variable des HMI schreiben
ZWS_W_No1_Aus_Std = AUS_PLC / 100 ;
ZWS_W_No1_Aus_Min = AUS_PLC%100;
return 0;
}
10_licht_zeiten_senden
#include "macrotypedef.h"
#include "math.h"
int MacroEntry()
{
//No1 AUS und EIN zur PLC Schreiben
AUS_PLC=ZWS_W_No1_Aus_Std*100+ZWS_W_No1_Aus_Min;
EIN_PLC=ZWS_W_No1_Ein_Std*100+ZWS_W_No1_Ein_Min;
return 0;
}
11_energiezaehler_reset
#include "macrotypedef.h"
#include "math.h"
int MacroEntry()
{
z_stand_speicher = em3_kwh_gesamt;
return 0;
}
12_energiezaehler_berechnen
#include "macrotypedef.h"
#include "math.h"
int MacroEntry()
{
ergebniss = em3_kwh_gesamt - z_stand_speicher;
return 0;
}