HelleBarde
Level-1
- Beiträge
- 309
- Reaktionspunkte
- 177
-> Hier kostenlos registrieren
Hi
oh weh, bin ich schon so berühmt
Also danube möchte einen Frequenzumrichter dessen Daten im E liegen in einen UDT wuppen. Ich empfehle einen UDT zu definieren, der enthält, was dieser Umrichter so als Ausgänge zu bieten hat. (Des Umrichters Ausgänge sind der Simatic Eingänge). Und dann schreibe man einen FC, der das Wuppen erledigt. Z.B. so
Den Baustein kann man denne mehrfach im OB1 (oder einem Zyklischen oder einem HardwareInterrupt) verwenden
Wenn man das so eingibt, dann zwingt einen TIA dazu zu %EW10 ein Symbol zu definieren ... dann machen wir das eben
Für die Ausgänge des Programms, die Eingänge des Converters kann man das ganz ähnlich machen. Der oben gewählte Name ist dann vielleicht nicht der kleverste. Und sollten da ein paar Analogwerte herum hängen, dann macht man die mit an die Schnittstelle. Z.B.
Ich gebe ja zu, dass das nicht so voll symbolisch ist, aber es begrenzt den Schaden auf genau diese Funktionen. Das restliche Programm bleibt sauber, "selbst dokumentierend" :razz:
und schnell.
'n schön' Tach auch
HB
AT geht nur mit nicht-optimierten Bausteinen... dies ist nicht zu empfehlen. Warum? Frag HelleBarde... er hat schon viele nützliche Sache Performance und Laufzeit geschrieben...Wird übrigens von big S. auch nicht empfohlen...
oh weh, bin ich schon so berühmt
Also danube möchte einen Frequenzumrichter dessen Daten im E liegen in einen UDT wuppen. Ich empfehle einen UDT zu definieren, der enthält, was dieser Umrichter so als Ausgänge zu bieten hat. (Des Umrichters Ausgänge sind der Simatic Eingänge). Und dann schreibe man einen FC, der das Wuppen erledigt. Z.B. so
Code:
FUNCTION ReadMyConverter : VOID
VAR INPUT[INDENT]in : WORD[/INDENT]
VAR INOUT[INDENT]converter : MyConverter[/INDENT]
BEGIN[INDENT]#converter.on := #in.x0;
#converter.off := #in.x1;
#converter.ccw := #in.x3;
#converter.fast := #in.x4;
...[/INDENT]
END
Den Baustein kann man denne mehrfach im OB1 (oder einem Zyklischen oder einem HardwareInterrupt) verwenden
Code:
[INDENT]ReadMyConverter( in := %EW10, converter := "aDataBlock".containing.some.converters[ 3 ]);
ReadMyConverter( in := %EW14, converter := "aDataBlock".containing.some.converters[ 4 ]);[/INDENT]
Wenn man das so eingibt, dann zwingt einen TIA dazu zu %EW10 ein Symbol zu definieren ... dann machen wir das eben
Für die Ausgänge des Programms, die Eingänge des Converters kann man das ganz ähnlich machen. Der oben gewählte Name ist dann vielleicht nicht der kleverste. Und sollten da ein paar Analogwerte herum hängen, dann macht man die mit an die Schnittstelle. Z.B.
Code:
WriteMyConverterIn( ConverterIn := "aDataBlock".containing.some.converters[ 4 ]; outBools => %AW48, outAnalogValue1 => %AW50, outAnalogValue2 => %AW52 );
Ich gebe ja zu, dass das nicht so voll symbolisch ist, aber es begrenzt den Schaden auf genau diese Funktionen. Das restliche Programm bleibt sauber, "selbst dokumentierend" :razz:
'n schön' Tach auch
HB
Zuletzt bearbeitet: