ETechniker2011
Level-1
- Beiträge
- 26
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo Zusammen,
ich hätte eine Frage zur Pointeradressierung bzw. Erstellung und freue mich
über Jeden hilfreichen Beitrag.
Es geht um folgendes:
Bei einem bestehenden SPS Projekt gibt es mehrere Ventile, Stopper, Motoren,
die immer das Gleiche machen, deshalb gibt es für diese Aktionen jeweils
einen FC. In diesem FC werden die Ansteuerungen bzw. die Fehlermeldungen
und die HMI Auswertungen vollzogen. Kommt jetzt z.B. ein neuer Motor hinzu,
nehme ich den FC, leg einen neuen DB Bereich an und fertig. Mit diesem DB Bereich
hab ich dann die erstellten Fehlermeldungen usw...
Im unten stehenden Programmablauf seht ihr die Struktur. Am Anfang des FC´s
wird der Pointer für den DB Zugriff erstellt, dann folgt die Programmierung
(Ansteuerung, Fehlermeldungen, HMI, ..,..) dann am Ende werden diese Daten wieder
auf den DB geschrieben, allerdings versteh ich das nicht ganz...
Hier der Code: --> // Meine Kommentare
Variablendekleration
temp: temp_ar1 DWORD
temp_ar2 DWORD
temp_any ANY (10 Byte)
Hilsm UDT (10 Byte)
TAR1 #temp_ar1 // Adressregister 1 in AKKU 1
TAR2 #temp_ar2 // Adressregister 2 in AKKU 2
L P##eAnyHilfsm // DB1.DBX0.0 BYTE 10
LAR1 // Diese 10 Byte im Adressregister 1
LAR2 P##temp_any // #temp_any in Adressregister 2
L W [AR1,P#0.0] // Lade erste 2 Byte von DB1
T W [AR2,P#0.0] // Transfierier in Adressregister 2
L D [AR1,P#2.0] // Lade nächste 4 Bytes von DB1
T D [AR2,P#2.0] // Transfierier in Adressregister 2
L D [AR1,P#6.0] // Lade letzte 4 Bytes von DB1
T D [AR2,P#6.0] // Transfierier in Adressregister 2
CALL "BLKMOV"
SRCBLK :=#temp_any // Schreibe temp_any auf Hilfsm
RET_VAL:=#temp_int
DSTBLK :=#Hilfsm
LAR2 #temp_ar2 // Lade Adressregister 2
****** Bearbeitung *******
CALL "BLKMOV"
SRCBLK :=#Hilfsm
RET_VAL:=#temp_int // Schreibe Hilsm auf temp_any
DSTBLK :=#temp_any
LAR1 #temp_ar1 //
LAR2 #temp_ar2 //
ich hätte eine Frage zur Pointeradressierung bzw. Erstellung und freue mich
über Jeden hilfreichen Beitrag.
Es geht um folgendes:
Bei einem bestehenden SPS Projekt gibt es mehrere Ventile, Stopper, Motoren,
die immer das Gleiche machen, deshalb gibt es für diese Aktionen jeweils
einen FC. In diesem FC werden die Ansteuerungen bzw. die Fehlermeldungen
und die HMI Auswertungen vollzogen. Kommt jetzt z.B. ein neuer Motor hinzu,
nehme ich den FC, leg einen neuen DB Bereich an und fertig. Mit diesem DB Bereich
hab ich dann die erstellten Fehlermeldungen usw...
Im unten stehenden Programmablauf seht ihr die Struktur. Am Anfang des FC´s
wird der Pointer für den DB Zugriff erstellt, dann folgt die Programmierung
(Ansteuerung, Fehlermeldungen, HMI, ..,..) dann am Ende werden diese Daten wieder
auf den DB geschrieben, allerdings versteh ich das nicht ganz...
Hier der Code: --> // Meine Kommentare
Variablendekleration
temp: temp_ar1 DWORD
temp_ar2 DWORD
temp_any ANY (10 Byte)
Hilsm UDT (10 Byte)
TAR1 #temp_ar1 // Adressregister 1 in AKKU 1
TAR2 #temp_ar2 // Adressregister 2 in AKKU 2
L P##eAnyHilfsm // DB1.DBX0.0 BYTE 10
LAR1 // Diese 10 Byte im Adressregister 1
LAR2 P##temp_any // #temp_any in Adressregister 2
L W [AR1,P#0.0] // Lade erste 2 Byte von DB1
T W [AR2,P#0.0] // Transfierier in Adressregister 2
L D [AR1,P#2.0] // Lade nächste 4 Bytes von DB1
T D [AR2,P#2.0] // Transfierier in Adressregister 2
L D [AR1,P#6.0] // Lade letzte 4 Bytes von DB1
T D [AR2,P#6.0] // Transfierier in Adressregister 2
CALL "BLKMOV"
SRCBLK :=#temp_any // Schreibe temp_any auf Hilfsm
RET_VAL:=#temp_int
DSTBLK :=#Hilfsm
LAR2 #temp_ar2 // Lade Adressregister 2
****** Bearbeitung *******
CALL "BLKMOV"
SRCBLK :=#Hilfsm
RET_VAL:=#temp_int // Schreibe Hilsm auf temp_any
DSTBLK :=#temp_any
LAR1 #temp_ar1 //
LAR2 #temp_ar2 //