-> Hier kostenlos registrieren
Pointerprogrammierung in Simatic S7
TAR2
//Addressregister sichern : Der Inhalt von AR2 wird in den Akku transferiert
T #AR2
//Der Inhalt von Akku1 wird in die Lokalvariable transferiert,das heißt der ursprüngliche //Inhalt von AR2 ist jetzt in der lokalvariablen
L P##Data
//Datenquelle… ( DB741.DBX16.0 ) wird da die Anfangsadresse vom entsprechenden DB’s //geladen…???
LAR1
//LAR1 lädt das Adreßregister AR1 mit dem Inhalt von AKKU 1
//Wie ist das AR1 an den Inhalt von Akku1 gekommen…???
L B [AR1,P#2.0]
//Speicherbereich…Hier handelt es sich um die bereichsübergreifende Adressierung…weil //der Speicherbereich mit B è Byte vor den eckigen Klammern angegeben wurde…
//Wenn ich im AR1 auf die Stelle Zeige…woher bekommt das System die Information das //dort 84h für DB drin steht???
//Bei DB und anderen Speicherbereichen ist es vielleicht noch einfacher…weil wenn Byte 0 //und 1 den wert 0 haben werden die Daten nicht in einem DB gespeichert…aber wir haben ja //auch Merker,Eingänge usw…woher bekommt man die Info???
// Mit welcher Information werden die 6Byte versorgt und wann???
L B#16#84
//84h = Datenbaustein…Hier handelt es sich um den Speicherbereich in der CPU…
<>I
Sollte gleich sein…ansonsten wird der Baustein verlassen…
SAVE
//SAVE speichert das VKE im BIE-Bit. Das Erstabfragebit /ER wird dabei nicht //zurückgesetzt.
//Aus diesem Grund wird bei einer UND-Verknüpfung im nächsten Netzwerk der Zustand des //BIE-Bits mitverknüpft.
//
//Die Verwendung von SAVE und eine nachfolgende Abfrage des BIE-Bits im gleichen //Baustein oder in unterlagerten Bausteinen wird nicht empfohlen, da das BIE-Bit durch //zahlreiche dazwischen liegende Operationen verändert werden kann. Sinnvoll ist der Einsatz //der Operation SAVE vor Verlassen eines Baustein, da damit der ENO-Ausgang (=BIE-Bit) //auf den Wert des VKE-Bits gesetzt wird und Sie daran eine Fehlerbehandlung des Bausteins //anschließen können.
BEB
//Wenn VKE = 1, dann unterbricht BEB (Bausteinende bedingt) den Programmablauf im //aktuellen Baustein und springt zu dem Baustein, der den aktuellen Baustein aufgerufen hat.
L W [AR1,P#0.0]
//DB Nummer…In meinem Beispiel steht dann dort die Zahl 741 drin…die Nummer des //DB’s…
//Bevor das Pointerformat abgefragt wird muss es ja schon versorgt sein…aber wann und //wie???
T #Datenbaustein
//An der Stelle Byte 0 und 1 steht die Datenbaustein Nummer,so dass diese in die //Lokalvariable Datenbaustein transferiert wird…
AUF DB [#Datenbaustein]
//AUF <Datenbaustein> öffnet einen Datenbaustein als Global-Datenbaustein oder als //Instanz-Datenbaustein. Es können jeweils ein Global-Datenbaustein und ein Instanz-//Datenbaustein gleichzeitig geöffnet sein.
Ab hier versteh ich fast gar nichts mehr??????????????????????????????????????????
L D [AR1,P#2.0]
Dort steht doch der Speicherbereich drin?????????????????????????????????????????
L DW#16#7FFFF
UD
// Verknüpft AKKU 1 mit AKKU 2 als UND
//Das Ergebnis wiederum wird in AKKU1 geschrieben!!!!
LAR1
//LAR1 lädt das Adreßregister AR1 mit dem Inhalt von AKKU 1
Steht dort dann das Verknüpfungsergebnis drin??????????????????????????????????
T #Source
LAR2 P##Data_1
//Datenziel ( Lokalbereich )
Bis hierher??????????????????????????????????????????????????????????????????????
Was passiert eigentlich mit den Bytes 3,4,5 aus dem Pointer Format???????????????????
L DBD [AR1,P#0.0]
T LD [AR2,P#0.0]
L DBD [AR1,P#4.0]
T LD [AR2,P#4.0]
L DBD [AR1,P#8.0]
T LD [AR2,P#8.0]
L DBD [AR1,P#12.0]
T LD [AR2,P#12.0]
L DBD [AR1,P#16.0]
T LD [AR2,P#16.0]
L DBD [AR1,P#20.0]
T LD [AR2,P#20.0]
L DBD [AR1,P#24.0]
T LD [AR2,P#24.0]
Vielen dank fuer eure Unterstuetzung...
rachwe01
TAR2
//Addressregister sichern : Der Inhalt von AR2 wird in den Akku transferiert
T #AR2
//Der Inhalt von Akku1 wird in die Lokalvariable transferiert,das heißt der ursprüngliche //Inhalt von AR2 ist jetzt in der lokalvariablen
L P##Data
//Datenquelle… ( DB741.DBX16.0 ) wird da die Anfangsadresse vom entsprechenden DB’s //geladen…???
LAR1
//LAR1 lädt das Adreßregister AR1 mit dem Inhalt von AKKU 1
//Wie ist das AR1 an den Inhalt von Akku1 gekommen…???
L B [AR1,P#2.0]
//Speicherbereich…Hier handelt es sich um die bereichsübergreifende Adressierung…weil //der Speicherbereich mit B è Byte vor den eckigen Klammern angegeben wurde…
//Wenn ich im AR1 auf die Stelle Zeige…woher bekommt das System die Information das //dort 84h für DB drin steht???
//Bei DB und anderen Speicherbereichen ist es vielleicht noch einfacher…weil wenn Byte 0 //und 1 den wert 0 haben werden die Daten nicht in einem DB gespeichert…aber wir haben ja //auch Merker,Eingänge usw…woher bekommt man die Info???
// Mit welcher Information werden die 6Byte versorgt und wann???
L B#16#84
//84h = Datenbaustein…Hier handelt es sich um den Speicherbereich in der CPU…
<>I
Sollte gleich sein…ansonsten wird der Baustein verlassen…
SAVE
//SAVE speichert das VKE im BIE-Bit. Das Erstabfragebit /ER wird dabei nicht //zurückgesetzt.
//Aus diesem Grund wird bei einer UND-Verknüpfung im nächsten Netzwerk der Zustand des //BIE-Bits mitverknüpft.
//
//Die Verwendung von SAVE und eine nachfolgende Abfrage des BIE-Bits im gleichen //Baustein oder in unterlagerten Bausteinen wird nicht empfohlen, da das BIE-Bit durch //zahlreiche dazwischen liegende Operationen verändert werden kann. Sinnvoll ist der Einsatz //der Operation SAVE vor Verlassen eines Baustein, da damit der ENO-Ausgang (=BIE-Bit) //auf den Wert des VKE-Bits gesetzt wird und Sie daran eine Fehlerbehandlung des Bausteins //anschließen können.
BEB
//Wenn VKE = 1, dann unterbricht BEB (Bausteinende bedingt) den Programmablauf im //aktuellen Baustein und springt zu dem Baustein, der den aktuellen Baustein aufgerufen hat.
L W [AR1,P#0.0]
//DB Nummer…In meinem Beispiel steht dann dort die Zahl 741 drin…die Nummer des //DB’s…
//Bevor das Pointerformat abgefragt wird muss es ja schon versorgt sein…aber wann und //wie???
T #Datenbaustein
//An der Stelle Byte 0 und 1 steht die Datenbaustein Nummer,so dass diese in die //Lokalvariable Datenbaustein transferiert wird…
AUF DB [#Datenbaustein]
//AUF <Datenbaustein> öffnet einen Datenbaustein als Global-Datenbaustein oder als //Instanz-Datenbaustein. Es können jeweils ein Global-Datenbaustein und ein Instanz-//Datenbaustein gleichzeitig geöffnet sein.
Ab hier versteh ich fast gar nichts mehr??????????????????????????????????????????
L D [AR1,P#2.0]
Dort steht doch der Speicherbereich drin?????????????????????????????????????????
L DW#16#7FFFF
UD
// Verknüpft AKKU 1 mit AKKU 2 als UND
//Das Ergebnis wiederum wird in AKKU1 geschrieben!!!!
LAR1
//LAR1 lädt das Adreßregister AR1 mit dem Inhalt von AKKU 1
Steht dort dann das Verknüpfungsergebnis drin??????????????????????????????????
T #Source
LAR2 P##Data_1
//Datenziel ( Lokalbereich )
Bis hierher??????????????????????????????????????????????????????????????????????
Was passiert eigentlich mit den Bytes 3,4,5 aus dem Pointer Format???????????????????
L DBD [AR1,P#0.0]
T LD [AR2,P#0.0]
L DBD [AR1,P#4.0]
T LD [AR2,P#4.0]
L DBD [AR1,P#8.0]
T LD [AR2,P#8.0]
L DBD [AR1,P#12.0]
T LD [AR2,P#12.0]
L DBD [AR1,P#16.0]
T LD [AR2,P#16.0]
L DBD [AR1,P#20.0]
T LD [AR2,P#20.0]
L DBD [AR1,P#24.0]
T LD [AR2,P#24.0]
Vielen dank fuer eure Unterstuetzung...
rachwe01