Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 7 von 7

Thema: Struktur SCL Anwenderprogramm

  1. #1
    Registriert seit
    23.12.2011
    Beiträge
    29
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    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.
    Zitieren Zitieren Struktur SCL Anwenderprogramm  

  2. #2
    Registriert seit
    27.09.2010
    Beiträge
    516
    Danke
    36
    Erhielt 63 Danke für 56 Beiträge

    Standard

    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.

  3. #3
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    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

  4. #4
    Registriert seit
    21.07.2008
    Beiträge
    1.066
    Danke
    51
    Erhielt 140 Danke für 136 Beiträge

    Standard

    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.

  5. #5
    KarlOtto ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    23.12.2011
    Beiträge
    29
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @ 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!

  6. #6
    Registriert seit
    09.06.2008
    Beiträge
    138
    Danke
    16
    Erhielt 13 Danke für 13 Beiträge

    Standard

    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"?
    Geändert von ich988 (06.03.2012 um 18:07 Uhr)

  7. #7
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.568
    Danke
    63
    Erhielt 258 Danke für 218 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von KarlOtto Beitrag anzeigen
    IF Schritt_Nr = 1 AND bedingung_4 THEN
    Schritt_Nr := 2
    ELSIF Schritt_Nr = 2 AND bedingung_5 THEN
    Schritt_Nr := 3
    Genau das macht man in SCL mit dem "CASE"-Befehl.

    Code:
    CASE Schritt_Nr OF
    1: IF bedingung_4 THEN
         Schritt_Nr :=2; // <- Das Semikolon nicht vergessen!
       END_IF
    2: usw...
    
    END_CASE;
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

Ähnliche Themen

  1. Siemens CPU 312ifm Anwenderprogramm löschen
    Von Drage19 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 24.02.2012, 10:50
  2. Antworten: 2
    Letzter Beitrag: 05.02.2012, 20:14
  3. Pointer auf Struktur (SCL)?
    Von momo99 im Forum Simatic
    Antworten: 26
    Letzter Beitrag: 25.03.2009, 10:23
  4. Was zuerst? WinCC flexible oder S7 Anwenderprogramm
    Von DerPraktikant im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 28.11.2008, 07:11
  5. ST-300 Warmstart aus dem Anwenderprogramm
    Von Andreas im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 25.08.2008, 10:00

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •