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

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

Thema: Brauche Hilfe bei AWL-Programm

  1. #1
    Registriert seit
    30.07.2010
    Beiträge
    25
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    habe einige Probleme bei der Umsetzung meiner Überlegung.Ich möchte,dass die Zustände von Tastern in einem Merkerwort abgelegt werden und mit den vorherigen Zuständen verglichen werden --> falls ungleich --> dann sollen beide Wörter ODER verknüpft werden,damit ich den aktuellen Zustand habe.

    Folgendes Programm habe ich geschrieben:
    Die Kommentare sind so verfasst,wie ich es gern hätte,nicht wie es das Programm umsetzt.
    Entschuldige mich im Vorraus, ich weiss nicht wie ich mein Programmcode hier rein lade,habe es deshalb kopiert.

    Bitte um genaue Erläuterung der Fehlermeldungen

    PROGRAM PLC_PRG
    VAR
    Taster0: BOOL;
    Taster1: BOOL;
    Taster2: BOOL;
    MWT: WORD; (*Merkerwort Taster*)
    MWS: WORD; (*Merkerwort Speicher*)
    comm: MBM_COMMUNICATE; (*Fertiger Kommunikationsbaustein von Modbus TCP/IP*)
    WriteCoils:ARRAY[0..MB_MAXDATABOOLVALUE] OF BOOL; (*Data-Array*)
    END_VAR

    LD Taster0 (*Lade Taster0 und ...*)
    ST MWT.0 (*...speicher den Zustand an die Stelle .0 des Merkerwortes Taster*)
    LD Taster1 (*------ ||-------*)
    ST MWT.1 (*------ ||-------*)
    LD Taster2 (*------ ||-------*)
    ST MWT.2 (*------ ||-------*)

    LD MWT (*Lade das Merkerwort Taster und ...*)
    EQ MWS (*...vergleiche es mit Merkerwort Speicher*)
    JMPC ENDE (*Wenn MWT = MWS, dann springe zu "ENDE"*)

    LD MWT (*Lade das Merkerwort Taster*)
    LD MWS (*Lade das Merkerwort Speicher*)
    OR (*Verknüpfe beide Wörter ODER und ...*)
    ST MWS (*...und speicher das Ergebnis wieder im MWS*)

    LD MWS.0 (*Lade den Zustand der Stelle ".0" und ...*)
    ST WriteCoils[0] (*...speicher ihn in den "Data-Array"*)
    LD MWS.1 (*------ ||-------*)
    ST WriteCoils[1] (*------ ||-------*)
    LD MWS.2 (*------ ||-------*)
    ST WriteCoils[2] (*------ ||-------*)
    S comm.xStrobe (*Setze den Eingang xStrobe des Bausteins "comm"*)
    (*xStrobe = Eine pos. Flanke startet den Baustein*)
    ENDE:
    ANDN comm.xBusy (*Wenn der Ausgang comm.xBusy = FALSE dann...*)
    R comm.xStrobe (*...setze den Eingang xStrobe des Bausteins "comm" zurück*)
    (*xBusy = TRUE : Baustein ist noch beschäftigt*)

    Fehlermeldungen:
    Warnung 1500:PLC_PRG(12) : Diese Expression enthält keine Zuweisung.Es wird ein Code generiert.
    Fehler 4022:PLC_PRG(16) :Operand erwartet
    Fehler 4032:PLC_PRG(18 ) :1 Operanden sind zu wenige für 'OR'.Es werden min. 2 erwartet.
    Fehler 4200:PLC_PRG(27) :'LD' erwartet

    Ich hoffe ihr steigt da durch...brauche dringend hilfe
    LG
    Zitieren Zitieren Brauche Hilfe bei AWL-Programm  

  2. #2
    shiznit ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.07.2010
    Beiträge
    25
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Nehme auch gerne Vorschläge in ST entgegen

  3. #3
    Registriert seit
    12.05.2010
    Ort
    Dortmund
    Beiträge
    889
    Danke
    57
    Erhielt 121 Danke für 89 Beiträge

    Standard

    hallo
    du must das OR zwischen die LD Anweisungen schreiben

    Alt:
    LD MWT (*Lade das Merkerwort Taster*)
    LD MWS (*Lade das Merkerwort Speicher*)
    OR (*Verknüpfe beide Wörter ODER und ...*)
    ST MWS (*...und speicher das Ergebnis wieder im MWS*)

    Neu:
    LD MWT (*Lade das Merkerwort Taster*)
    OR (*Verknüpfe beide Wörter ODER und ...*)
    LD MWS (*Lade das Merkerwort Speicher*)
    ST MWS (*...und speicher das Ergebnis wieder im MWS*)

  4. #4
    shiznit ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.07.2010
    Beiträge
    25
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Habe ich gemacht.
    Neue Fehlermeldungen:

    Zeile/Netzwerk 15: Operand erwartet WARUM?
    16: 1 Operanden sind zu wenige für 'OR'.Es werden min. 2 erwartet. WARUM?
    27: 'LD' erwartet WOFÜR?

  5. #5
    shiznit ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.07.2010
    Beiträge
    25
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Bitte,Bitte........hier sind doch so viele Cracks und meine Überlegung kann doch nicht so schwer sein sie umzusetzten. (außer für mich).Bin nämlich ein blutiger Anfänger

  6. #6
    shiznit ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.07.2010
    Beiträge
    25
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Habe aus einem Datenblatt,dass man Wörter nicht mit dem Befehl 'EQ' vergleichen kann bzw gar keine Vergleiche durchführen kann.Nur INT,DINT und REAL.
    Stimmt das? und wie würde man das denn sonst machen?

  7. #7
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    750
    Danke
    27
    Erhielt 165 Danke für 143 Beiträge

    Standard

    Alt:
    LD MWT (*Lade das Merkerwort Taster*)
    LD MWS (*Lade das Merkerwort Speicher*)
    OR (*Verknüpfe beide Wörter ODER und ...*)
    ST MWS (*...und speicher das Ergebnis wieder im MWS*)

    Neu:
    LD MWT (*Lade das Merkerwort Taster*)
    OR (*Verknüpfe beide Wörter ODER und ...*)
    LD MWS (*Lade das Merkerwort Speicher*)
    ST MWS (*...und speicher das Ergebnis wieder im MWS*)

    Ganz neu:
    LD MWT (*Lade das Merkerwort Taster*)
    OR MWS (*Lade das Merkerwort Speicher*)
    ST MWS (*...und speicher das Ergebnis wieder im MWS*)

  8. #8
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    750
    Danke
    27
    Erhielt 165 Danke für 143 Beiträge

    Standard

    Zitat Zitat von shiznit Beitrag anzeigen
    Habe aus einem Datenblatt,dass man Wörter nicht mit dem Befehl 'EQ' vergleichen kann bzw gar keine Vergleiche durchführen kann.Nur INT,DINT und REAL.
    Stimmt das? und wie würde man das denn sonst machen?
    Mag sein, dass das bei Möller so ist. Dann nimm doch INT statt WORD für "MWT/MWS". Könnte natürlich sein, dass dabei wieder kein bitweiser Zugriff mit "MWT.x" möglich ist. Dann gibt es immer noch die Typumwandlung "WORD_TO_INT".

  9. #9
    Registriert seit
    12.05.2010
    Ort
    Dortmund
    Beiträge
    889
    Danke
    57
    Erhielt 121 Danke für 89 Beiträge

    Standard

    hallo shiznit,
    wie weit bist du...
    wenn du noch fehler hast, hänge doch einmal einen screenshot des Programms mit an..so kann man auch von hier aus dir helfen

  10. #10
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Alt: ... - Neu: ... - Ganz neu: ... - Richtig neu:
    Code:
    LD MWT (*Lade das Merkerwort Taster*)
    ST MWS (*...und speicher es im MWS*)
    Das "sperrige" OR ist logisch falsch - das Loslassen der Taster würde dann nicht an den Slave übertragen und die Aktoren würden eingeschaltet bleiben. Jede Taste könnte nur einmal gedrückt werden, danach bleibt das zugehörige Bit in MWS und WriteCoils auf TRUE und es gäbe bei den Aktoren keine Änderung mehr.

    @shiznit
    Wenn Du für die Fortsetzung Deines Problems schon ein neues Thema aufmachst, dann erwähne bitte wenigstens das vorherige Thema, wo Du beschrieben hast, was Du eigentlich realisieren willst. In dem vorherigen Thema ist Dir übrigens dreimal erklärt und gezeigt worden, daß Du den aktuellen Zustand des Merkwortes UNVERÄNDERT in das Merkwort_alt übernehmen sollst. Nichts mit OR oder so ...


    Zitat Zitat von shiznit Beitrag anzeigen
    Habe aus einem Datenblatt,dass man Wörter nicht mit dem Befehl 'EQ' vergleichen kann bzw gar keine Vergleiche durchführen kann.Nur INT,DINT und REAL.
    Stimmt das?
    WORDs kann man nicht auf GRÖSSER oder KLEINER vergleichen, aber auf GLEICH und UNGLEICH darf man vergleichen.
    Gibt es in Deinem (Moeller-)Programmiersystem keine Onlinehilfe zu AWL? Üblicherweise ruft man die Hilfe zu einem Befehl mit F1 oder Shift-F1 auf.
    Man muß keine zu kurz gehaltenen Datenblätter lesen.


    Zitat Zitat von shiznit Beitrag anzeigen
    Entschuldige mich im Vorraus, ich weiss nicht wie ich mein Programmcode hier rein lade,habe es deshalb kopiert.
    Um Programmcode gut lesbar in einen Beitrag einzufügen gibt es die [CODE]-Tags, die erzeugt man im Beitragseditor mit dem #-Button "Code einfügen". Also:
    [CODE]
    Programmcode ...
    [/CODE]

    Zitat Zitat von shiznit Beitrag anzeigen
    Fehler 4200:PLC_PRG(27) :'LD' erwartet
    Neu:
    Code:
    ENDE:
    LDN comm.xBusy (*Wenn der Ausgang comm.xBusy = FALSE dann...*)
    R comm.xStrobe (*...setze den Eingang xStrobe des Bausteins "comm" zurück*)
    (*xBusy = TRUE : Baustein ist noch beschäftigt*)
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

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

    shiznit (26.04.2011)

Ähnliche Themen

  1. Brauche Hilfe bei einem Programm!!!
    Von Jumpinjack im Forum Simatic
    Antworten: 52
    Letzter Beitrag: 17.11.2010, 19:23
  2. Brauche Hilfe bei einem Programm
    Von Arnold999 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 11.06.2010, 10:51
  3. Brauche Hilfe bei einem S5 Programm
    Von Mellymaus23 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 12.09.2009, 16:43
  4. SPS Programm als FUP brauche HILFE!!!
    Von Pawel im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 24.09.2008, 15:35
  5. Brauche Hilfe zu einem geschriebenen Programm!
    Von Anonymous im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 11.03.2005, 00:07

Lesezeichen

Berechtigungen

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