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

Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 30 von 30

Thema: AWL in SCL umprogrammieren

  1. #21
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.021
    Danke
    235
    Erhielt 858 Danke für 612 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zeig doch als erstes mal wie dein aktueller Code denn jetzt ausschaut.
    Wenn am Blockmove immer noch "P#DB1000.DBX0.0 BYTE 1556" steht, würde ich dir dringend empfehlen dem Programm DB eine Structur zur geben.
    Dann sollte am SFC20 es ungefähr so ausschauen "ProgDB".Aktuell --> "ProgDB".Nr1 , oder so was in der Richtung, aber Hauptsache Symbolisch.
    Anschließend lässt es sich leichter weiterarbeiten.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  2. #22
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.190
    Danke
    377
    Erhielt 773 Danke für 624 Beiträge

    Standard

    Wenn in beiden DBs eh' die gleiche Struktur besteht, kann man auch einfach direkt zuweisen (also ohne SFC20):
    Code:
    "ProgDB".Nr1 := "ProgDB".Aktuell;

  3. #23
    Registriert seit
    05.03.2012
    Beiträge
    34
    Danke
    7
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Schonmal Danke für eure Ideen.

    Hier der Code.
    Die DBs´s haben die gleiche Struktur. Deswegen versuche ich es mal mit der einfachen Zuweisung. Ob das mit den IN_OUT so klappt weiß ich noch nicht. Was meint Ihr dazu? Ich kann das erst testen wenn ich die Anlage einschalten kann (leider noch keine CPU da). Bin noch in der Vorbereitungsphase des Programmes.

    Dekl.png


    IF #Prog_Nr = #aktuelle_Prog_Nr THEN
    ;
    ELSE
    #neue_Prog_Nr_plus := #Prog_Nr + #Prog_Nr_Plus;
    #aktuelle_Prog_Nr_plus := #aktuelle_Prog_Nr + #Prog_Nr_Plus;
    #Akt_Prog := #Akt_Daten + #aktuelle_Prog_Nr_plus; //Aktuelle Daten in Programm DB speichern
    #Akt_Daten := #Neu_Prog + #Akt_Daten; //Neuen Programm DB in Aktuelle Daten laden

    #aktuelle_Prog_Nr := #Prog_Nr; //neue Programmnummer in aktuelle Programmnumer schreiben

    END_IF;
    Geändert von Platinum (07.10.2016 um 07:44 Uhr)

  4. #24
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.082
    Danke
    387
    Erhielt 2.252 Danke für 1.891 Beiträge

    Standard

    Wenn ich das recht verstehe dann hast du in deinem Programm einen ganzen Haufen von DB's mit gleichem Aufbau, die je nach Anwahl in den DB1000 hineinkopiert werden sollen bzw. der Inhalt des DB1000 in diese hineinkopiert werden. Ist das so richtig ?
    Meine Frage wäre jetzt, warum das, wenn es mit den 300er bisher funktioniert hat, mit den 1500er nicht mehr funktioniert. Was ist hier anders ? Hast du jetzt optimierte DB's (vorher ja auf jeden Fall nicht) ? Wenn ja - warum sind diese DB's nun unbedingt optimiert ?

    Gruß
    Larry

  5. #25
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    9.404
    Danke
    799
    Erhielt 2.766 Danke für 2.234 Beiträge

    Standard

    Platinum will AWL-Code in SCL umwandeln.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #26
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.082
    Danke
    387
    Erhielt 2.252 Danke für 1.891 Beiträge

    Standard

    @Harald:
    Ich habe mich auf die Beiträge #19 und #20 in diesem Thema bezogen.
    Wobei die Antwort auf diese Frage dann auch unmittelbar zu der SCL-Realisierung führen wird. Er müßte ja jetzt aktuell einen ANY-Pointer zusammengebastelt haben für den variablen DB. Das würde sich ja in SCL nicht ändern. Danach wäre dann der Blockmove prinzipiell auch wieder so einsetztbar ...

  7. #27
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.021
    Danke
    235
    Erhielt 858 Danke für 612 Beiträge

    Standard

    Zitat Zitat von Platinum Beitrag anzeigen
    Dekl.png


    IF #Prog_Nr = #aktuelle_Prog_Nr THEN
    ;
    ELSE
    #neue_Prog_Nr_plus := #Prog_Nr + #Prog_Nr_Plus;
    #aktuelle_Prog_Nr_plus := #aktuelle_Prog_Nr + #Prog_Nr_Plus;
    #Akt_Prog := #Akt_Daten + #aktuelle_Prog_Nr_plus; //Aktuelle Daten in Programm DB speichern
    #Akt_Daten := #Neu_Prog + #Akt_Daten; //Neuen Programm DB in Aktuelle Daten laden

    #aktuelle_Prog_Nr := #Prog_Nr; //neue Programmnummer in aktuelle Programmnumer schreiben

    END_IF;
    Das soll dein aktueller SCL-Code von deiner 300ter sein?
    Nie und nimmer läuft das Ding.

    Zitat Zitat von Platinum Beitrag anzeigen
    Ich kann das erst testen wenn ich die Anlage einschalten kann (leider noch keine CPU da). Bin noch in der Vorbereitungsphase des Programmes.
    Das kann man doch auch im Simulator testen
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  8. #28
    Registriert seit
    05.03.2012
    Beiträge
    34
    Danke
    7
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,

    nein der Code läuft so nicht in der 300er. Das ist jetzt neu aufgezogen von mir. In der 300er habe ich den AWl Code bisher immer genutzt. Läuft so in der 1500er auch.
    Ich möchte in SCL etwas fit werden und daher so nach und nach (je nach Zeit) unsere Standardbausteine anpassen.

    Was ich beispielsweise mehrfach gelesen habe ist, das die 1200er kein AWL mehr kann. Ich habe bisher keine 1200er gehabt und kann dazu leider nichts agen. Ist das denn so? Denn unsere Standardbausteine sind zu 90% noch in AWL.
    Deswegen wäre es daher ja schon sinnvoll das alles mal anzupacken und generell mal auf einen neuen Stand bringen, der in den neuen Tia CPU´s laufen (und zwar in allen).

    Ich könnte bei dem aktuellen Projekt den AWL Code nehmen, möchte aber gerne die SCL Variante mal ans laufen bekommen

    Gruß Willi

  9. #29
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.082
    Danke
    387
    Erhielt 2.252 Danke für 1.891 Beiträge

    Standard

    Ich kenne deinen AWL-Code nun jetzt nicht, nehme aber an, dass er in etwa so aussieht :
    Es wird ein ANY-Pointer erstellt, der auf den Gegen-DB zeigt mit dem entsprechenden Datenbereich als Angabe. Dieser ANY wird dann dem SFC BlockMove als Quelle bzw. als Ziel (je nach Übertragungsrichtung) übergeben. Der DB1000 ist möglicherweise als Fest-Parameter übergeben.
    Genau so mußt du das nun auch in SCL lösen :
    - du legst dir einen ANY-Pointer als Variable an
    - du erzeugst dir eine AT-Sicht auf diesen ANY, die dessen Einzel-Bestandteile auflösst.
    - Nun weisst du dieser AT-Sicht die entsprechenden Daten aus deiner Berechnung bzw. aus deinem Wissen zu
    - Jetzt kannst du den so erzeugten ANY-Pointer an den SFC Blockmove übergeben.

    Vielleicht fängst du das einfach mal so an und stellst dann (bei Problemen) deinen SCL-Code mit Deklarationen hier ein und wir reden dann darüber ...

    Gruß
    Larry

  10. #30
    Registriert seit
    29.03.2004
    Beiträge
    5.077
    Danke
    128
    Erhielt 1.474 Danke für 1.086 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Genau so mußt du das nun auch in SCL lösen :
    - du legst dir einen ANY-Pointer als Variable an
    - du erzeugst dir eine AT-Sicht auf diesen ANY, die dessen Einzel-Bestandteile auflösst.
    - Nun weisst du dieser AT-Sicht die entsprechenden Daten aus deiner Berechnung bzw. aus deinem Wissen zu
    - Jetzt kannst du den so erzeugten ANY-Pointer an den SFC Blockmove übergeben.
    Ich würde ja eher die Aufgabenstellung analysieren, und versuchen es möglichst ohne ANY und ohne AT-Sichten zu programmieren. Bei beidem gibt es doch wieder Einschränkungen bezügl. optimierte/ nicht optimierte Bausteine. Und es kommt mit großer Wahrscheinlichkeit besser les- und wartbarer Code heraus.
    Die Genialität einer Konstruktion liegt in ihrer Einfachheit – Kompliziert bauen kann jeder.

    (Sergei Pawlowitsch Koroljow, sowjetischer Konstrukteur von Raketen und Weltraumpionier)

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 20.06.2014, 03:21
  2. B&R: Bibliotheken umprogrammieren
    Von SAB2002 im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 02.01.2014, 19:18
  3. SCL vs. AWL
    Von epy im Forum Simatic
    Antworten: 20
    Letzter Beitrag: 02.09.2010, 20:04
  4. C++ in ST umprogrammieren
    Von COOLT im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 22.07.2009, 14:28
  5. Antworten: 11
    Letzter Beitrag: 28.07.2008, 12:06

Lesezeichen

Berechtigungen

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