Step 7 Hilfe bei AWL Code

johnyrecon

Level-1
Beiträge
38
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin zusammen,

ich habe hier ein Stück AWL Code den ich nicht so richtig verstehen kann.

Code:
// Write Command word, Start/Stop

      S     DBX [AR1,P#35.2]
      S     DBX [AR1,P#35.3]
      S     DBX [AR1,P#35.4]
      S     DBX [AR1,P#35.5]
      R     DBX [AR1,P#34.0]
      R     DBX [AR1,P#34.1]
      S     DBX [AR1,P#34.2]
      R     DBX [AR1,P#34.3]
      R     DBX [AR1,P#34.4]
      R     DBX [AR1,P#34.5]
      R     DBX [AR1,P#34.6]

      [COLOR=#0000ff]U     DBX [AR1,P#35.6]            //Run signal
      U(    
      =     DBX [AR1,P#35.0]
      =     DBX [AR1,P#35.1]
      R     DBX [AR1,P#35.7]            //Reset VLT
      )     

      U(    
      U     DBX [AR1,P#35.7]            //Reset VLT
      U     "1sec"
      U     DBX [AR1,P#0.1]             //Mem 1Sec has been on
      R     DBX [AR1,P#35.7]            //Reset VLT
      R     DBX [AR1,P#0.1]             //Mem 1Sec has been on
      )     

      U(    
      U     DBX [AR1,P#35.7]            //Reset VLT
      U     "1sec"
      S     DBX [AR1,P#0.1]             //Mem 1Sec has been on
      )     

      UN    DBX [AR1,P#35.7]            //Reset VLT
      R     DBX [AR1,P#0.1]             //Mem 1Sec has been on[/COLOR]

      L     DBW [AR1,P#34.0]            //Command word
      T     PAW [AR2,P#0.0]             //VLT Command Word

Es geht mir im Prinzip um den blauen Teil und hier im speziellen um die Aufrufe innerhalb der Klammern wie "= DBX [AR1,P#35.0]" oder "R DBX [AR1,P#35.7]". Die indirekte Addressierung ist kein Problem und eigentlich dachte ich auch mit Klammern klarzukommen. Aber diese Variante mag mir nicht einläuchten.

Wer kann mir auf die Sprünge helfen?


Viele Grüße
 
Meinst Du die "U("-Klammern?
Das sieht in der Tat ungewöhnlich aus, ich vermute da war wohl ein extrem schreibfauler AWL-"Spezialist" am Werk oder er wußte nicht was er tut (oder eher beides ;)) :roll:
Ich würde nicht so programmieren. Ich würde sogar sagen, daß der Code fehlerhaft oder sinnfrei ist, weil die Bedingung für das "R DBX [AR1,P#0.1]" nie erfüllt wird:
Code:
      [COLOR=#0000ff]
      ...
      U(    
      [COLOR="#FF0000"]U     DBX [AR1,P#35.7][/COLOR]            //Reset VLT
      U     "1sec"
      S     DBX [AR1,P#0.1]             //Mem 1Sec has been on
      )     

      [COLOR="#FF0000"]UN    DBX [AR1,P#35.7][/COLOR]            //Reset VLT
      R     DBX [AR1,P#0.1]             //Mem 1Sec has been on[/COLOR]

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In irgendeiner Weise laufen tut es. Jedenfalls ist es so in einer unserer Anlagen aktiv in der Nutzung. Ich verstehe einfach nicht warum die R, S, = Anweisungen innerhalb der Klammern stehen. Nach meinem Verständnis sind das doch eigentlich die Ergebnisse einer UND, ODER-Verknüpfung mit oder ohne Klammern. Hier sieht es so aus, als ob die R, S, = Anweisungen gleichzeitig Bedingung der UND-Verknüpfungen sind.
 
Meinst Du die "U("-Klammern?
Das sieht in der Tat ungewöhnlich aus, ich vermute da war wohl ein extrem schreibfauler AWL-"Spezialist" am Werk oder er wußte nicht was er tut (oder eher beides ;)) :roll:
Ich würde nicht so programmieren. Ich würde sogar sagen, daß der Code fehlerhaft oder sinnfrei ist, weil die Bedingung für das "R DBX [AR1,P#0.1]" nie erfüllt wird:

Dafür wird R DBX [AR1,P#0.1] Ja oben schonmal ausgeführt und die nachfolgende Bedingung durch
R DBX [AR1,P#35.7] //Reset VLT
überbrückt.

Ist das vielleicht eine art Kopierschutz durch Verwirrung?

mfG René
 
Das könnte so gemeint sein, daß zunächst verschiedene Zustände und die Reaktionen programmiert wurden (die Teile innerhalb der "U("-Klammern) und dann noch eine Reaktion passieren sollte, wenn alle Zustände gleichzeitig auftreten. Damit der Programmierer nun nicht alle Zustände nochmal hintippen muß ist er vielleicht auf die Idee gekommen, alle Zustände mit den "U("-Klammern nochmal zu verknüpfen, was in der Tat nur dann am Ende erfüllt ist wenn alle Bedingungen in allen "U("-Klammern erfüllt sind. Jedoch die letzten beiden Bedingungen können nicht gleichzeitig erfüllt sein: "DBX [AR1,P#35.7]" kann nicht gleichzeitig 0 und 1 sein.

Harald
 
Danke für Eure Aussagen ;-)! Dann lasse ich dem Erfinder sein geistiges Eigentum und überlege mir selber etwas :).


Gesendet von iPhone mit Tapatalk
 
Zurück
Oben