Struktur SCL Anwenderprogramm

KarlOtto

Level-1
Beiträge
29
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin Allerseits,

Ich habe von berufswegen viel mit STEP7 zutun. Ich habe auch bereits Anwenderprogramme selbst verfasst, die erfolgreich im Einsatz sind. Meine Sprachkenntnisse umfassen aber nur FUP, KOP und AWL. Nun möchte ich ein bereits existierendes Programm einer (Schulungs)Anlage in SCL verfassen um mich weiter zu bilden. Bei der erstamligen Verfassung hab ich das Programm in die Funktionen Fehlerzustände, Zähler und Zeiten, Handbetrieb, Automatikbetrieb, Kommunikation und Ausgänge gegliedert. Das würde ich gerne beibehalten. Meine Frage ist, wie "schiebe" ich Informationen möglichst direkt zwischen den Funktionen hin und her, z.B., dass der Schritt 3 des Automatikbetriebes aktiv ist oder eine Schutzhaube geöffnet wurde?

Meine Idee ist der Funktion des Automatikbetriebes (Schrittkette) eine Ausgangsvariable mit dem Namen Schritt_Nr (INT) zu geben und diese dann mittels temp. Variable vom OB (1) der Funktion der Ausgänge zu übergeben. Der Handbetrieb hätte dann eine Ausgangsvariable names Aktions_Nr (INT). Die temp. Variablen Schritt_Nr und Aktions_Nr (vom OB1) wären dann Eingangsvariablen der Funktion der Ausgänge und je nach tatsächlicher Nummer werden die entsprechenden Ausgänge geschaltet (CASE oder WHILE).
Wie macht man das eigentlich oder wie würdet ihr das machen?
Im alten Programm hatte jede Funktion mehrere Ausgangsvariablen (eine für jeden Schritt bzw. Aktion), denen im OB Merker zugewiesen wurden.
 
im grunde genauso, vorab mußt du wiesen, das scl in diesem falle nur als mächtiges werkzeug zur erstellung von fc/fb anzusehen sein sollte, nicht aber als eigenständige programmiersprache, da das resultat aus scl ein in fup/kop/awl verwendbares (von aussen betrachtet) reguläres gebilde darstellt, welches eingänge und ausgänge aufweisen kann. auf interaktionen die ohne ausgangs/eingangsvariablen arbeiten sollte man zwischen den bausteine welche mit scl generiert wurden, meiner bescheidenen meinung nach klar verzichten, da schnittstellen-definitionen hier nicht nachvollziehbar und nur sehr schwer zurückverfolgbar sind.

im grunde empfehle ich dir die funktionen 1:1 nachzubilden, sie wie gehabt im ob1 zu verschalten und durch merker(-bytes) zu verknüpfen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Verstehen tue ich deine Frage nicht ganz.
Es gibt hier zur Zeit einen Theart, der Schrittketten in SCL beschreibt.

In SCL, ein AWL oder FUP Programm abzubilden, ist nicht das, wofür es SCL gibt.

Wie du das mit den "tatsächlicher Nummer" meinst.


bike
 
Ich benutze SCL, wo man mit KOP/FUP/AWL nicht so leicht weiterkommt: Schleifen und indirekte Adressierung. Auch Schrittketten kann man, wie ich finde, sehr leserlich in SCL erstellen.
Aber Bitverknüpfungen, steuern von Ausgängen usw., dass kann man doch viel besser mit KOP/FUP/AWL Programmieren.
 
@ bike: die Funktion für den Automatikbetrieb sollte so aussehen (dacht ich, wobei Schritt_Nr eine Ausgangsvariable vom Datentyp INT ist) und anregung war genau der Thred, ja. Da es echt (meiner Meinung nach) übersichtlicher und besser nachzuvollziehen ist:

.
.
.
IF Schritt_Nr = 1 AND bedingung_4 THEN
Schritt_Nr := 2
ELSIF Schritt_Nr = 2 AND bedingung_5 THEN
Schritt_Nr := 3
.
.
.
END_IF

Da die Ausgänge auch im Hanbetrieb angesteuert werden können, wollte ich für die Ausgänge eine eigene Funktion vorsehen:

.
.
.
WHILE Schitt_Nr = 1 OR Aktions_Nr = 2 DO
A0.0 := TRUE ;
END_WHILE
.
.
.

@ Rubb : Ok, dann werde ich das so beibehalten
@ Delta : Adresspointer hab ich bis jetzt nur in AWL verwendet und ich finde es echt umständlich, ja. Danke für den Tipp

Gut, dann werde ich mich mal versuchen. Wenns klappt, dann hab ich wieder was gelernt. Wenn nicht, werdet ihr von mir hören. Danke für die Anregungen und Tipps!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Möglich ist es, also man kann das schon tun und habe ich schon gesehen. Da wurde in einer SCL-Quelle div. FB's/FC's erzeugt und auch der OB1 in dem die entsprechenden Aufrufe generiert wurden. Das nur vorab.
Aber ich schließe mich den Vorrednern an. Es ist ein tolles Werkzeug, dass man nutzen kann um komplexe Problemstellung in einem Baustein unterzubringen.
Die bool'sche Logik sieht in SCL einfach auch etwas komplizierter aus als in z.B. FUP.

Die while-Schleife an der Stelle ist ganz böse, da sieht man wieder das SCL auch schwer verwirrt.
So lange die Bedienung erfüllt ist geht es da nicht aus der schleife-> Zykluszeit geht unnötig hoch.
Warum kein einfaches "ODER", "IF" oder "SELECT CASE"?
 
Zuletzt bearbeitet:
Zurück
Oben