FC112 – V00/00.00.00 vom 06.06.2009
Durch die flexiblen, universellen Einsatzmöglichkeiten der SPS-Steuerungen, sowie der aktuellen SPS-Systeme, ist es mögliche viele Baugruppen die an die SPS angeschlossen wurden, diese von einen SPS-Programm nach zu bilden. Dazu gehört auch eine Zeitschaltuhr, bzw. Wochenzeitschaltuhren.
Die Funktionalitäten einer Wochenzeitschaltuhr in einer SPS, bieten flexible Lösungen zur Anlagensteuerung, z.B. von:
- Heizungen die vor Arbeitsbeginn anfahren
- Dem zeitgesteuerten freigeben für das Füllen von Wasserspeichern
- Dem Energiemanagement
- Dem klassischen Einsatzgebiet der Lichtsteuerungen,
………… um nur ein paar zu nennen.
Mit der Softwarelösung der Wochenzeitschaltuhr in einer SPS bieten sich einige Vorteile, wie z.B.:
- Hohe Anzahl von Steuerausgänge
- Hohe Anzahl von projektierbaren Zeiten
- Besseren Manipulationsschutz
- Gute integration in das Anlagensystem
- Sehr gute/vielseitige Visualisierungsmöglichkeiten
- Geringere Kosten
Allgemeines
In den FC112-Baustein wurde von uns die Wochenzeitschaltuhr programmiert, welcher für den kompletten Funktionsumfang, werden noch die Datenbausteine DB111/DB112 benötigt.
Der FC112 wird entsprechend beschaltet, und benötigt nur wenige Signale/Daten, da die meisten Signale/Daten für die Funktionen bereits in dem Datenbaustein selbst enthalten sind. Diese werden vom FC112 entsprechend ausgewertet, und geprüft. Sollten Fehler erkannt werden, wird eine Störung mit weiteren Informationen angezeigt.
Der DB111 enthält die Zeiteinstellung. Die Anzahl der Zeitfunktionen hängt von der Leistungsfähigkeit der SPS-CPU ab. Wenn die SPS Datenbausteine von 16384 Byte verarbeiten kann, können bis zu 1024 Zeitfunktionen angelegt werden. Die Ausgabe der Zeitsignale erfolgt über den DB112, der auch als Schnittstelle dient, und die benötigten Signale/Daten vom FC112 enthält.
Für das SPS-System ist eine schnelle Reaktionszeit wichtig, welches durch den Umfang des Programmcodes beeinflusst wird, sowie von den enthaltenen Schleifen. Damit die SPS-Zykluszeit nicht all zu sehr durch die Wochenzeitschaltuhr erhöht wird, wurde festgesetzt, daß pro Ausführung des FC112 ein Zeitdatensatz bearbeitet wird. Daher ist zu beachten, dass die minimale Zeitspanne der einzelnen Schaltzeitdauer die Anzahl der Datensätze * die max. Zykluszeit nicht unterschreitet. Dies gilt auch für die Genauigkeit der Zeitsignale, beim ein-/ausschalten.
FC112 Beschaltung INPUT
Die folgende Aufstellung gibt einen Überblick über die Beschaltung:
- db_zeit_vorg DB-Block DB(111) mit den Zeitvorgaben
- db_zeit_sig_dat Block DB(112) mit Zeitsignale/-daten der Funktion
- bii_1_zeit_uebern BOOL 1=Zeitvorgabe neu übernehmen aus dem DB(112)
- dii_wochentag DINT aktueller Wochentag (01..07 = mo..so / 0=ohne auswertung)
- dii_uhrzeit DINT Aktuelle Uhrzeit (hh:mm:ss:mmm)
FC112 Beschaltung OUTPUT
Die folgende Aufstellung gibt einen Überblick über die Beschaltung:
- bio_1_stor BOOL 1=Störung vorhanden
- dio_stor_nr DINT Störungsnummer,für eine weitere Unterscheidung der Störung
- dio_stor_dat_nr DINT Datensatznummer mit der Störung
- dio_dat_sat_anz DINT Anzahl der Datensätze/Zeitfunktionen
FC112 Beschaltung IN-/OUTPUT
Die folgende Aufstellung gibt einen Überblick über die Beschaltung:
diio_visu_dat_nr DINT VISU- Datensatznr. die angezeigt werden soll
Beschreibung zur Beschaltung
Zu der Beschaltung des FC112-Bausteins folgen weitere Informationen:
db_zeit_vorg / DB-Block
Hier wird der DB mit den Zeitvorgaben angeschaltet. In den DB111 sind die entsprechenden Strukturen mit den Ein-/Ausschaltzeiten, und einer kurzen Beschreibung enthalten. Der DB111 wurde mit dem FC112 entwickelt, um eine leichte und schnelle Bearbeitung der Daten zu gewährleisten. Weitere Informationen zum DB111 finden Sie weiter unten.
db_zeit_sig_dat / DB-Block
Hier wird der DB112 angeschaltet, den der FC112 für die internen Signale-/Datenzwischenspeicherung benötigt. In den Datenbausteinen sind noch weitere Signale/Daten enthaltenen, die für das weitere SPS-Anwenderprogramm oder die Visualisierung von Bedeutung sind. Am Ende des DB’s befindet sich ein ARRAY, in dem die Bit’s von den Zeitfunktionen organisiert werden. Weitere Informationen zum DB112 finden Sie weiter unten.
bii_1_zeit_uebern / BOOL
Wenn hier eine VKE-1 anliegt, werden die Zeitvorgaben, die im DB112 eingetragen sind, in den DB111 übernommen. Die entsprechende Datensatznummer, in der die Zeiteingabe gespeichert werden soll, wird mit dem FC-Parameter ´diio_visu_dat_nr` angegeben.
dii_wochentag / DINT
Die Wochenzeitschaltuhr kann auch als Tageszeitschaltuhr verwendet werden, in dem hier der Wert L#0 angeschaltet wird. Sollten die vollen Funktionalitäten des FC-Bausteins benötigt werden, ist hier der Wochentag als Zahl zu übergeben. Für die Ermittlung des aktuellen Wochentages, gibt es bereits entsprechende Programmteile, die verwendet werden können, wie z.B. FC 7/DT_DAY (aus dem KOP/FUP Editor Bibliothek), der aus aus dem Format DATE_AND_TIME den Wochentag errechnet. Hier eine Aufstellung der Zuordnung Wert/Wochentag:
- L#00 = FC als Tageszeitschaltuhr
- L#01 = Montag
- L#02 = Dienstag
- L#03 = Mittwoch
- L#04 = Donnerstag
- L#05 = Freitag
- L#06 = Samstag
- L#07 = Sonntag
dii_uhrzeit / DINT
Die aktuelle Uhrzeit wird als 9 stellige Zahl übergeben, in der sich die Stunde, Minute, Sekunde und Millisekunde an der entsprechenden Ziffernposition befinden (hh:mm:ss:mmm). Hier ein Beispiel:
L#234514987
- Stunde: 23
- Minute: 45
- Sekunde: 14
- Millisek.: 987
In den Grundfunktionalitäten, die im OB1 umgesetzt wurden, sind bereits die aktuellen Zeiten in verschiedenen Formen enthaltenen. Der DB99.DBD54 enthält die aktuelle Uhrzeit, die an den FC angeschaltet werden könnte.
bio_1_stor / BOOL
Wenn eine Störung erkannt wurde, die z.B. durch die FC-Beschaltung oder einen unlogischen Datensatzeintrag im DB111 seine könnte, wird eine true/1 ausgegeben. Eine Aufschlüsselung bzw. weitere Informationen sind in weiteren Ausgabewerten enthaltenen.
dio_stor_nr / DINT
Zu jeder Störungsnummer ist ein spezieller Fehler zugeordnet. Hierzu die entsprechende Aufstellung:
- L#0 = Keine Störung vorhanden
- L#112000801 = Aktueller Wochentag Wert zu klein
- L#112000802 = Aktueller Wochentag Wert zu groß
- L#112000803 = Aktuelle Uhrzeit – Wert für Stunde zu klein
- L#112000804 = Aktuelle Uhrzeit – Wert für Stunde zu groß
- L#112000805 = Aktuelle Uhrzeit – Wert für Minute zu klein
- L#112000806 = Aktuelle Uhrzeit – Wert für Minute zu groß
- L#112111701 = DB mit Zeitvorgaben minimale Größe nicht vorhanden
- L#112111702 = DB Größe der Zeitvorgaben nicht korrekt
- L#112112701 = DB mit Zeitdaten minimale Größe nicht vorhanden
- L#112112702 = DB Größe der Zeitdaten nicht korrekt
- L#112111501 = Datensatz Zeit ein – Vorgabe Wochentag
- L#112111502 = Datensatz Zeit ein – Vorgabe Stunde zu klein
- L#112111503 = Datensatz Zeit ein – Vorgabe Stunde zu groß
- L#112111504 = Datensatz Zeit ein – Vorgabe Minute zu klein
- L#112111505 = Datensatz Zeit ein – Vorgabe Minute zu groß
- L#112111511 = Datensatz Zeit aus – Vorgabe Wochentag
- L#112111512 = Datensatz Zeit aus – Vorgabe Stunde zu klein
- L#112111513 = Datensatz Zeit aus – Vorgabe Stunde zu groß
- L#112111514 = Datensatz Zeit aus – Vorgabe Minute zu klein
- L#112111515 = Datensatz Zeit aus – Vorgabe Minute zu groß
dio_stor_dat_nr / DINT
Bei Störungen die in den Zeitvorgaben liegen, wird hier die entsprechende Datensatznummer vom DB111 angegeben.
Daher ist es sinnvoll in dem Symbolnamen die Datensatznummer anzugeben (z.B. zeit0000, zeit0001, usw.)
dio_dat_sat_anz / DINT
Anzahl der Datensätze/Zeitfunktionen die im DB111 angelegt/enthalten sind.
diio_visu_dat_nr / DINT
Als Schnittstelle für das Anwenderprogramm zum anzeigen/bearbeiten der Zeitvorgaben im DB111 dient diese Beschaltung. Hier wird die Datensatznummer von der Zeitangabe angegeben, die angezeigt bzw. bearbeitet werden soll. Der FC speichert die Daten aus dem DB111 in den DB112 entsprechend um. Bei der Übernahme der neuen Zeitdaten in den DB112, werden die Werte im Datensatz vom DB111 abgelegt, auf dem der Wert ‘diio_visu_dat_nr’ zeigt.
Beschreibung zum DB111, für die Zeit
Der einzelne Datensatz, der als Struktur angelegt ist, beträgt 16 Byte. Darin enthalten sind zwei weitere Strukturen:
- Einschaltzeitpunkt / ‘ein’
- Ausschaltzeitpunkt / ‘aus’
Für jeden Zeitschaltpunkt ist die Angabe für den Wochentag, Stunde und Minute enthalten. Jede Angabe wird vom Programm überprüft, und ggf. bei unkorrektem Eintrag als eine Störung angezeigt. Hier eine Aufstellung der zulässigen Angaben:
Zur besseren Eingabe vom Programmierer, wird der Wochentag in ASCII-Zeichen angegeben, wobei nur kleine Buchstaben zulässig sind.
- ‘mo’ = Montag
- ‘di’ = Dienstag
- ‘mi’ = Mittwoch
- ‘do’ = Donnerstag
- ‘fr’ = Freitag
- ’sa’ = Samstag
- ’so’ = Sonntag
- ‘–’ = ohne Wochentage, Auswertung als Tageszeitschaltuhr
Stunde
Die Angabe ist als 24 Stundenwert umgesetzt. Entsprechend ist der gültige Eintrag 0..23.
Minute
Der gültige ist Eintrag 0..59.
Datensatznummer
Wir empfehlen die Systematik des Symbolnamens fortzuführen, weil diese die Zuordnung zum Schaltzeitsignal ist, sowie bei Störungen im Datensatz über die Outputvariable ‘dio_stor_dat_nr’ eine entsprechend einfache Zuordnung gewährleistet wird. Alternativ dazu kann die Vorgabestruktur in ein ARRAY (ARRAY[0..#]) eingebunden werden, wodurch die Möglichkeit zum Verändern des Kommentars genommen wird.
Im DB111 beginnt der Symbolname mit ‘zeit_’ gefolgt von einer 4-stelligen Zahl, die der Datensatznummer entspricht. Diese sollte lückenlos aufsteigend sein.
Beschreibung zum DB112, die Schnittstelle für die Anwendung
Der DB112 ist die Schnittstelle für weitere SPS-Programmteile, sowie Signal-/Datenspeicher für die Funktionsausführung des FC112. Dazu sind Strukturen enthalten, für die verschiedenen Funktionalitäten:
- Signal-/Datenspeichern für den FC112
- Daten für VISU zum anzeigen/einstellen des angewählten Datensatz
- Schaltzeitsignal der entsprechenden Datensätze
Signal-/Datenspeicher des FC112
In der Struktur ‘dat_kopf’ sind die Daten für die FC-Ausführung enthalten. Zusätzlich gibt es die Struktur ‘input’, die im FC112 nicht verwendet werden, sondern allein für den Programmierer gedacht sind, um diese Variable an den FC zu beschalten, damit diese nicht extra angelegt werden muß:
Daten für VISU
Die Schnittstelle für die VISU zur Anzeige/Einstellung sind in drei Strukturen unterteilt die wie folgt aussehen:
- Aktuelle Zeitdaten
- Datensatz/Schaltzeiten für die Auswertung
- Neue Einstellungen der Schaltzeituhr
Aktuelle Zeitdaten
Hier werden die Daten abgelegt, die vom FC zur Auswertung verwendet werden.
Datensatz/Schaltzeiten für die Auswertung
In dieser Struktur wird ein Datensatz der Wochenzeitschaltuhr angezeigt, wie dieser in der Vorgabe DB(111) hinterlegt ist. Für die Darstellung des Wochentags im Bediengerät wurde der String mit dem Wochentagskürzel in eine Integer umgewandelt, für eine bessere Verarbeitung. Die Daten die angezeigt werden, gelten für den Datensatz, der mit dem Übergabeparameter ‘diio_visu_dat_nr’ übergeben wird.
Neue Einstellungen der Schaltzeituhr
Bei der Entwicklung der Funktion wurde darauf geachtet, dass die Vorgaben editierbar sind. Dazu wurde eine Struktur vorgesehen, in dem die neuen Werte für die Übernahme enthaltenen sind. Solange der FC-Eingang ‘bii_1_zeit_uebern’ auf true/1 ist, werden die neuen Zeitdaten in den Vorgaben auf die Datensatznummer DB(111) umgespeichert, welcher mit dem Übergabeparameter ‘diio_visu_dat_nr’ übergeben wird.
Schaltzeitsignal
Für die Schaltsignale der Wochenschaltzeituhr ist am Ende des DB’s eine Array enthalten, welcher vom Wert 0 bis X geht.
Das Array muss die gleiche Anzahl von Bit’s enthalten, wie die, die in der Vorgabe DB(111) an den Datensätzen enthalten sind. Für die bessere Übersicht ist deshalb im Vorgabe DB(111) die Datensatznummer im Symbolnamen einzutragen, beginnend von 0. Die Zuordnung Datensatznr./Schaltsignal ist eins zu eins. Als Beispiel: Die DB-Vorgabe ‘zeit_0001′ entspricht den Schaltsignalen ‘zeit_sig[1]‘.











