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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 30

Thema: AWL in SCL umprogrammieren

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich benötige mal Hilfe bei folgendem AWL Code. Ich möchte diesen gerne in SCL umwandelt und finde leider keine passende Erklärung zu meinen Fragen.
    Hier erst mal der zu ändernde Code:

    Nach einer Änderung der Programmnummer wird der Zähler auf Null gesetzt und die neue und aktuelle Programmnummer angepasst.

    AWL-Code.png

    Meine Fragen dazu wären, wie ich dieses "AUF DB1000 und LAR1" in SCL realisiere und die Schreibweise der Pointer ausführe.

    Ich Danke euch schon mal

    Gruß
    Zitieren Zitieren AWL in SCL umprogrammieren  

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

    Standard

    Als Schleife habe ich gedacht ein For Schleife zu benutzen oder seht Ihr eine andere als sinnvoller?
    Ich bin im Gebiet SCL neu unterwegs und möchte mich da etwas hinter klemmen.

    Was ich noch gesehen habe, was ich oben falsch angegeben hatte, die aktuelle Programmnummer wird erst nach dem fertigen durchlaufen der Schleife angepasst.

  3. #3
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.207
    Danke
    233
    Erhielt 325 Danke für 298 Beiträge

    Standard

    Also der DB1000 und die "#aktuelle_PrgNr_plus_1000" (da gibt es vermutlich mehrere) sind DB's.
    Das wird bei Dir ein Array [0..778] zB aus "OF INT" sein.

    0 - 778 wird bei Dir der Zähler sein.

    Was diese Schleife genau macht kann Dir nur der Programmierer erklären.
    Er kopiert zuerst ein Wort aus dem DB1000 in den DB "#aktuelle_PrgNr_plus_1000" und dann wieder zurück vom DB "#aktuelle_PrgNr_plus_1000" in den DB1000 (was für mich keinen Sinn macht- aber vielleicht hab ich es einfach nur nicht verstanden).

    Das neuerliche

    L #Zaehler
    LAR1
    trägt da auch nicht zur Aufklärung bei, weil das m.E. nach ebenfalls keinen Sinn macht.

    Jedenfalls macht er das bis die Schleife den #Zaehlerwert 6240 erreicht hat, dann springt er nicht mehr zurück zur m042:.

    Die Addition von "16" ist einfach eine Erhöhung des AR1 um eine Wortadresse.

  4. Folgender Benutzer sagt Danke zu borromeus für den nützlichen Beitrag:

    Platinum (06.01.2016)

  5. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    11.851
    Danke
    500
    Erhielt 2.591 Danke für 1.870 Beiträge

    Standard

    Ich würde das gar nicht in einer Schleife machen.
    Es wird 2 Mal umkopiert:

    1. von DB1000 in DB(#aktuelle_PrgNr_plus_1000)
    2. von DB(neue_PrgNr_plus_1000) in DB1000

    Da könnte man auch ganz einfac mit 2x Blockmove (SFC20) hintereinander erledigen.

    Dazu gibt es 2 Möglichkeiten.

    1. Du suchst hier im Forum nach ANY und AT in SCL um dir die Information zu holen, wie man in SCL Any-Pointer zusammenbaut, die brauchst du für Blockmove.
    2. Du nutzt z.B. diesen Baustein und kann da einfach die DB-Nummern, Startadressen und Längen eintragen. (Der Baustein selbst ist in AWl, aber den kannst du ja schön in SCL aufrufen.)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  6. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    Platinum (06.01.2016)

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

    Standard

    Hallo borromeus,

    Danke schon mal für deine Antwort.

    Die Funktion ist so:

    Ich habe einen DB1000 indem meine aktuell im Programm verwendeten Daten stehen (Beispielsweise zu einem Werkzeug mit Code 1 -> Werden die Daten aus dem DB1001 in den DB1000 geschoben und die alten Daten aus dem DB1000 in den DB1001 gesichert, damit ich die beim erneutem stecken der Werkzeuges 1 wieder zurückbekomme.)

    Stecke ich nun ein anderes Werkzeug dran (mit Werkzeuge Code 2, werden Daten aus dem DB1002 in den DB1000 geladen usw.)
    Hier mal der komplette FB zum besseren Verständnis.

    NW1_NW2.png

    NW3.png

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

    Standard

    Hallo Ralle,

    richtig es wird Wordweise umkopiert. Aber ein ganzer DB mit (im Bsp. 778 Wörtern)
    Bsp. Code 1 WAR gesteckt und Code 2 IST gesteckt, dann wäre folgender Ablauf:

    DB1000.DBW0 nach DB1001.DBW0
    DB1002.DBW0 nach DB1000.DBW0
    DB1000.DBW2 nach DB1001.DBW2
    DB1002.DBW2 nach DB1000.DBW2

    .
    .
    .
    .
    .
    usw.

    Wie kann ich das mit Blockmove realisieren?
    Ziel war es eine Baustein zu basteln, wo ich vorne lediglich die Programmnummervorgabe anlege und den DB1000 als aktueller Daten DB.
    Den DB1000 dann als IN_OUT Variable anlege.

  9. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    9.414
    Danke
    799
    Erhielt 2.772 Danke für 2.239 Beiträge

    Standard

    Der Code ist nicht unbedingt hocheffizient geschrieben, aber leicht verständlich. Es sind 2 Kopierfunktionen in die selbe Schleife gepackt, die könnte man auch nacheinander ausführen.

    Die Schleife kopiert die ersten 778 Words von DB1000 zu DB[#aktuelle_PrgNr_plus_1000] und von DB[#neue_PrgNr_plus_1000] zu DB1000.
    Also quasi
    - BLKMOV "P#DB1000.DBX0.0 BYTE 1556" ---> "P#DB[#aktuelle_PrgNr_plus_1000].DBX0.0 BYTE 1556"
    - BLKMOV "P#DB[#neue_PrgNr_plus_1000].DBX0.0 BYTE 1556" ---> "P#DB1000.DBX0.0 BYTE 1556"

    Für welche CPU soll das neue SCL-Programm denn sein?


    PS: zu langsam

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Platinum (06.01.2016)

  11. #8
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    4.737
    Danke
    993
    Erhielt 1.043 Danke für 833 Beiträge

    Standard

    Zitat Zitat von Platinum Beitrag anzeigen
    Als Schleife habe ich gedacht ein For Schleife zu benutzen oder seht Ihr eine andere als sinnvoller?
    Ich bin im Gebiet SCL neu unterwegs und möchte mich da etwas hinter klemmen.
    Ich würde hier überhaupt keine Schleife zum kopieren verwenden sondern den SFC20 Blkmov.
    Damit kannst du große Datenbereiche schneller kopieren.
    Nachteil für den Anfänger ist, dass du für das indirekte Adressieren ANY-Pointer manipulieren musst.
    Da du das aber in SCL machen willst, kannst du hierfür Views (AT) verwenden und somit ein tolles Feature von SCL kennenlernen.

    Gruß
    Dieter

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

    Standard

    Hallo Harald,

    das sieht schon so nach dem aus was ich suche
    Das Programm soll ein Standard werden bei uns und meistens ist die 315er CPU im Einsatz, ab und zu auch die IM151F-CPU (ist Kundenabhängig, in Zukunft wird das TIA Portal uns begleiten)

  13. #10
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    11.851
    Danke
    500
    Erhielt 2.591 Danke für 1.870 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Siehe PN/DP.
    Ich mache das auch in etwas so, allerdings nutze ich dazu den den o.g. Bausteon, der erzeugt aus den IN-Daten die korrekten Any.
    Du legst dann nicht den DB 1000 an, sondern eine 1000 für die DB-Nr, 0 für die Startadresse (falls es bei 0 losgeht) und 1556 für die Länge.
    All diese IN können ja auch Variablen sein, so dass du die DB-Nummer variabel gestalten kannst.
    Das sind im Prinzip dann zwei Aufrufe des FC112 hintereinander und fertig. Natürlich mußt du auch hier dafür sorgen, dass der Code nur ausgeführt wird, wenn du umkopieren willst, aber das muß ja auch vorher schon so implementiert gewesen sein.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Ä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
  •