zukw - 2015-02-13

Hallo,

Da ich realtiv neu bei CoDeSys und Sequential-Flow-Chart/Ablaufsprache bin, bitte um Entschuldigung, falls meine Frage eine einfache Lösung hat.

Ich möchte in SFC/AS einen Ablauf programmieren, bei dem an mehreren Stellen ein Drehtisch angesteuert werden muss, um das zu bearbeitende Werkstück weiter zu befördern. Im ersten angehängten Bild ist ein einfacher Ablauf mit 4 Schritten, der in den beiden Schritten ST_TURN_1 und ST_TURN_2 den Tisch weiterdreht. Das Weiterdrehen erfolgt prinzipiell so: Wenn einer der ST_TURN_x-Schritte aktiv wird, so soll zuerst eine Zeit gewartet werden (Für Testzwecke 5 Sekunden), dann soll ein Ausgang TURN_TABLE für eine Sekunde TRUE werden, danach soll eine weitere Zeitspanne (für Testzwecke 7 Sekunden) gewartet werden, danach ist die Tisch-Bewegung sicher abgeschlossen. Der kurze Impuls am TURN_TABLE-Ausgang startet also die Drehbewegung, und sie endet automatisch, ohne weiteren Eingriff durch das SPS-Programm.

Da ich bisher keine elegantere Lösung gefunden habe, realisiere ich das mit vier Aktionen in jedem der ST_TURN_X-Schritte:

D T#5s  |  TURN_ACT1
D T#6s  |  TURN_ACT2
N       |  TURN_ACT3  
D T#13s |  TURN_ACT_FINISHED

Die ersten beiden Aktionen TURN_ACT1 und TURN_ACT2 sind leer. Wie die dritte Aktion TURN_AKT3 aussieht, ist im zweiten angehängten Bild enthalten: Im wesentlichen handelt es sich um eine Zuweisung TURN_TABLE := _TURN_ACT1.x and (not _TURN_ACT2.x). TURN_TABLE wird also auf TRUE gesetzt, wenn die Aktion TURN_AKT1 schon begonnen hat (nach 5 Skeunden), aber TURN_AKT2 noch nicht begonnen hat (nach 6 Sekunden). Nach 13 Sekunden schaltet TURN_ACT_FINISHED (eine einfache boolsche Variable) in den nächsten Schritt.

Der Ablauf funktioniert so zwar, für mich wäre es aber logisch, diesen Zeitablauf und die TURN_TABLE-Ansteuerung in einer einzigen, ein wenig komplexeren Aktion zu realisieren. Diese Aktion würde ich in den beiden Schritten ST_TURN_1 und ST_TURN_2 aufrufen. Meine Frage nun: Kann man diesen Tisch-Ansteuerungs-Zeitablauf in einer einzigen Aktion erstellen? Wenn ja, wie? Falls nein, gibt es eine andere Lösung als meine, die etwas übersichtlicher bzw. eleganter ist?

IMG: Auswahl_023.png

IMG: Auswahl_024.png