Hallo,
also ich hoffe Dein Anliegen richtig verstanden zu haben:
Wir haben oft das Problem, daß der Kunde Zeitwerte (Ein-,Ausschalt- Verzögerungsdauer usw.) verändert haben will, d.h. in herkömmlicher Programmierung muss der Softi ran und den Wert anpassen.
Das kann mitunter nervig werden, darum habe ich einen DB folgendermassen deklariert:
Code:
DATA_BLOCK "DB100_TIMER"
TITLE =Zeitwerte
VERSION : 0.1
STRUCT
T : ARRAY [0 .. 255 ] OF STRUCT
ZEITWERT : S5TIME ;
END_STRUCT ;
END_STRUCT ;
Die 255 des Arrays entspricht der Anzahl der möglichen Timer der SPS
(in o.g. Bsp. eine 315 L2-DP).
Am HMI Gerät wurde ein Bild erstellt mit einem Eingabefeld und einer Smybolischen Auswahlliste. Dem Eingabefeld ist eine nicht steuerungsgebundene INT-Variable (MUX-TIMER genannt) zugeweisen welche zeitgleich die Indexvariable der Auswahlliste ist. Diese wird über die Option 'Lineare Umrechnung' (Wertebreich Bediengerät 0-255 / Wertebereich Steuerung 0-510) "zurechtgebogen".
Zusätzlich gibt es ein Eingabefeld in welchem der Zeitwert für die gewählte Timernummer vorgegeben/abgelsen werden kann (referenziert auf den DB100, DBW = MUX-TIMER).
Nun kann man am HMI-Gerät den Timer wählen z.B. 5, das Datenwort im DB100 wird Dank 'linearer Umrechnung' auf DBW10 referenziert)
Im SPS-Code nun anstatt
Code:
L S5T#1s
U E1.0
SV T5
L DB100.DBW10
U E1.0
SV T5
Der Textliste weist Du am HMI-Gerät nur Txte zu die der Bediener tatsächlich "sichtbar" als veränderbar erkennen soll, durch das INT-Eingabefeld kannst Du aber trotzdem für alle vorhandenen Timer Zeitwerte im DB100 hinterlegen. Analog geht das natürlich auch für Zähler.
Schönen Tag noch