AWL Anfängerfrage

ML1982

Level-2
Beiträge
138
Reaktionspunkte
18
Zuviel Werbung?
-> Hier kostenlos registrieren
Leider bin ich SCL verwöhnt, und komme mit AWL nicht mehr so recht klar.
Warum geht das nicht:

VAR
ActualEntry : INT := 0;
MaximumEntrie : INT := 128;
Buffer : ARRAY[0..128] OF STRUCT
wt_nummer : INT := 0;

TPwt_zur_wartung : BOOL := 0; //vom TouchPanel gesetzt
END_STRUCT;
END_VAR


U #Buffer[ActualEntry].TPwt_zur_wartung // das wird nicht kompiliert
U #Buffer[0].TPwt_zur_wartung // das wird kompiliert
 
Zuviel Werbung?
-> Hier kostenlos registrieren
so, ich habe jetzt fast alles hinbekommen, aber folgendes fehlt noch:

Also im AR1 steht die Adresse, wodie aktuelle Zeit hin soll, aber wie ist die

L P##Buffer //Anfangsadresse des Buffers
LAR1


L #ActualEntry
L 20 // größe eines Eintrages im Buffer
*D
SLD 3 //die ersten der Bit sind für die BitAdresse
+AR1


CALL "READ_CLK"
RET_VAL:=#dummy_int
CDT := [AR1,P#0.0]
 
Du kannst an den Ausgang "CDT" nur eine Variable dran schreiben, keinen Pointer!

Sprich du musst dir den Wert aus der Clock in ner Variable ablegen

CALL "READ_CLK"
RET_VAL:=#dummy_int
CDT:=#Dummy_Zeit // Format DATE_AND_TIME

und dann über:

L DBD X // ersten 4 Byte von Date_and_Time-Format
T DBD[AR1,P#0.0]

L DBD X+4 // zweiten 4 Byte von Date_And_Time-Format
T DBD[AR1,P#4.0] // mit Offset von 4 Byte damits an der richtigen Stelle landet, kann sein das du hier eventuel auf P#3.7 gehen musst ... manchmal spackt das damit auch ein wenig ...

Dürfte funktionieren ... bin mir aber nicht 100%ig sicher ... hab mir auf die Art und Weise auf jeden fall auch schon viele Werte hin und her kopiert, ohne Probleme (jedoch nicht mit Date_and_Time als Format).
 
Hallo.
Ich glaube, das ich hier nicht ganz richtig bin. Aber vielleicht kann mir hier geholfen werden.
Ich habe das Problem als Anfänger, das ich die Klammerregelungen nicht ganz verstehe.
Folgendes: Eine Lampe soll leuchten, wenn immer eine ungerade Anzahl der Eingänge e1, e2 und e3 betätigt sind.
Als Schaltbild habe ich folgendes: u e1 un e2 un e3 o u e2 un e1 un e3 o e3 un e1 un e2 o e1 u e2 u e3 = a1

Nun sollen hier die Kontakt mit Klammern so abgeändert werden ,das am Ende statt 12 nur noch 10 Kontakte benötigt werden.
Das Schlaucht mich sehr. Distributives oder Morgansche oder was auch immer für Gesetze.

Danke für Euro Hilfe.

Schönen Abend

Rainer :confused:
 
Als Schaltbild habe ich folgendes: u e1 un e2 un e3 o u e2 un e1 un e3 o e3 un e1 un e2 o e1 u e2 u e3 = a1

Nun sollen hier die Kontakt mit Klammern so abgeändert werden ,das am Ende statt 12 nur noch 10 Kontakte benötigt werden.

@190B
der Rainer braucht doch eine Änderung seines Schaltbilds mit 10 Kontakten !
 
Zuletzt bearbeitet:
Darf man denn vorher die Kontakte innerhalb der Oder-Verknüpfungen ein wenig vertauschen? (Was die Logik ja nicht verändert)
Dann würde ich das ein klein wenig umordnen und KOP/FUP-gerecht schreiben:

Code:
      [COLOR=#ff0000]U     E      1.0[/COLOR]
      UN    E      2.0
      UN    E      3.0
      O     
     [COLOR=#0000ff] UN    E      1.0[/COLOR]
      U     E      2.0
      UN    E      3.0
      O     
      [COLOR=#0000ff]UN    E      1.0[/COLOR]
      UN    E      2.0
      U     E      3.0
      O     
      [COLOR=#ff0000]U     E      1.0[/COLOR]
      U     E      2.0
      U     E      3.0
      =     A      1.0

Das kann man dann um 2 Kontakte vereinfachen:

Code:
      [COLOR=#ff0000]U     E      1.0[/COLOR]
      U(    
      UN    E      2.0
      UN    E      3.0
      O     
      U     E      2.0
      U     E      3.0
      )     
      O     
     [COLOR=#0000ff] UN    E      1.0[/COLOR]
      U(    
      U     E      2.0
      UN    E      3.0
      O     
      UN    E      2.0
      U     E      3.0
      )     
      =     A      1.0
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ralle,
mit dem geforderten Ausklammern usw. habe ich folgende Lösung mit 10 Kontakten gefunden (gibt aber derer 3, je nachdem, was ausgeklammert wird):
Code:
o( 
u e1 
o(
u  e2 
u  e3
) 
o( 
un e2 
un e3
)
) 
o(
un e1 
o(
u  e2 
un e3
) 
o(
un e2 
u  e3
)
) 
= a1
 
Hallo Ralle,
mit dem geforderten Ausklammern usw. habe ich folgende Lösung mit 10 Kontakten gefunden (gibt aber derer 3, je nachdem, was ausgeklammert wird):
Code:
o( 
u e1 
o(
u  e2 
u  e3
) 
o( 
un e2 
un e3
)
) 
o(
un e1 
o(
u  e2 
un e3
) 
o(
un e2 
u  e3
)
) 
= a1

Ja, es gibt mehrere Möglichkeiten!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo an alle, die mir eine Lösung mitgeteilt haben.

erst mal vielen Dank. Ich werde jetzt erst mal darüber brüten:idea: und mir gedannken machen, wie das mit der Klammerei genau funktioniert.
Das ist das große Handycap.

Aber wie gesagt, erstmal danke.

Gruß

Rainer;)
 
Hallo an alle, die mir eine Lösung mitgeteilt haben.

erst mal vielen Dank. Ich werde jetzt erst mal darüber brüten:idea: und mir gedannken machen, wie das mit der Klammerei genau funktioniert.
Das ist das große Handycap.

Aber wie gesagt, erstmal danke.

Gruß

Rainer;)

Sieh dir, den Code, den ich dir für zwei Netzwerke gepostet habe, mal in KOP oder FUP an. Da sieh man sehr schön, was man mit den Klammern erreicht. Im Grunde ist es ähnlich, wie beim Ausklammern aus einer mathematischen Formel.
 
Zurück
Oben