Eduard Schleich
Level-2
- Beiträge
- 60
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
TIA Versionen: V17, V18
System: S7-1500
Hallo zusammen,
Hintergrund ist dass ich von einem Denso-Roboter die Ein-/Ausgänge in einen DB schreiben will. Das lesen der Roboterausgänge, also
Eingänge an der SPS, erfolgt über DPRD_DAT unter Angabe der Hardwareadresse.
Innerhalb des FB werden die Standardsignale gesteuert und im Static des FB innerhalb einer STRUCT(SendStd) gespeichert. (Aufbau siehe erster Code)
In dieser STRUCT sind nach Byte 72 noch weitere Daten angelegt. Die ganze Struct ist 32 Byte groß.
(Entspricht dem Gesamtbereich des Roboters der 32 Byte für Ein- und Ausgänge hat)
Ist es einfacher wenn ich die STRUCT nur auf die Daten die ich kopieren möchte beschränke?
Ich möchte die ersten 5 Byte dieser Static STRUCT in einen globalen DB in eine STRUCT kopieren. Diese STRUCT beginnt ab Byte 288 und ist auch
insgesamt 32 Byte lang. Die nachfolgenden Bytes ab 293 sind freie Eingänge am Roboter und werden innerhalb des SPS Programms in den DB geschrieben.
Mit DPWR_DAT wird der gesamte Inhalt der DB STRUCT (32 Byte) dann an den Roboter gesendet.
Beide STRUCT sind identisch aufgebaut.
Wichtig ist noch:
Der Ziel-DB wird dem FB als Input-Variable (INT) übergeben da der Baustein instanziert einsetzbar sein soll.
Der zu kopierende Bereich:
Mein Zielbereich:
Das ist der Lesevorgang den ein Kollege für eine Sinumerik-Steuerung geschrieben hat. (Funktioniert auch hier)
Das kopieren in den DB und schreiben an den Roboter ging an der Sinumerik so: (Funktioniert an der 1500er nicht)
Wenn ich in SCL z.B. Blkmov einsetze, wie kann ich denn den Staticbereich als SRC nutzen? Wenn ich den STRUCT Namen einsetzte gibt es einen Fehler.
Wie kann ich das denn mit FUP oder SCL umsetzen. AWL würde auch gehen, da bin ich aber nicht ganz so fit.
Grüße
Edi
System: S7-1500
Hallo zusammen,
Hintergrund ist dass ich von einem Denso-Roboter die Ein-/Ausgänge in einen DB schreiben will. Das lesen der Roboterausgänge, also
Eingänge an der SPS, erfolgt über DPRD_DAT unter Angabe der Hardwareadresse.
Innerhalb des FB werden die Standardsignale gesteuert und im Static des FB innerhalb einer STRUCT(SendStd) gespeichert. (Aufbau siehe erster Code)
In dieser STRUCT sind nach Byte 72 noch weitere Daten angelegt. Die ganze Struct ist 32 Byte groß.
(Entspricht dem Gesamtbereich des Roboters der 32 Byte für Ein- und Ausgänge hat)
Ist es einfacher wenn ich die STRUCT nur auf die Daten die ich kopieren möchte beschränke?
Ich möchte die ersten 5 Byte dieser Static STRUCT in einen globalen DB in eine STRUCT kopieren. Diese STRUCT beginnt ab Byte 288 und ist auch
insgesamt 32 Byte lang. Die nachfolgenden Bytes ab 293 sind freie Eingänge am Roboter und werden innerhalb des SPS Programms in den DB geschrieben.
Mit DPWR_DAT wird der gesamte Inhalt der DB STRUCT (32 Byte) dann an den Roboter gesendet.
Beide STRUCT sind identisch aufgebaut.
Wichtig ist noch:
Der Ziel-DB wird dem FB als Input-Variable (INT) übergeben da der Baustein instanziert einsetzbar sein soll.
Der zu kopierende Bereich:
Code:
SendStd Struct
IO512_Schrittstop Bool 68.0
IO513_Reserviert Bool 68.1
IO514_Sofort_Stopp Bool 68.2
IO515_Taktsignal Bool 68.3
IO516_Interr_Uebers Bool 68.4
IO517_Reserviert Bool 68.5
IO518_Reserviert Bool 68.6
IO519_Impar_Befehl Bool 68.7
IO520_Datenbereich_1 Byte 69.0
IO528_Datenbereich_2 Word 70.0
IO544_Befehlsbereich_0 Bool 72.0
IO545_Befehlsbereich_1 Bool 72.1
IO546_Befehlsbereich_2 Bool 72.2
IO547_Befehlsbereich_3 Bool 72.3
IO548_Reserviert Bool 72.4
IO549_Reserviert Bool 72.5
IO550_Reserviert Bool 72.6
IO551_Reserviert Bool 72.7
Mein Zielbereich:
Code:
SEND_Standard Struct
IO512_Schrittstop Bool 288.0
IO513_Reserviert Bool 288.1
IO514_Sofort_Stopp Bool 288.2
IO515_Taktsignal Bool 288.3
IO516_Interr_Uebers Bool 288.4
IO517_Reserviert Bool 288.5
IO518_Reserviert Bool 288.6
IO519_Impar_Befehl Bool 288.7
IO520_Datenbereich_1 Byte 289.0
IO528_Datenbereich_2 Word 290.0
IO544_Befehlsbereich_0 Bool 292.0
IO545_Befehlsbereich_1 Bool 292.1
IO546_Befehlsbereich_2 Bool 292.2
IO547_Befehlsbereich_3 Bool 292.3
IO548_Reserviert Bool 292.4
IO549_Reserviert Bool 292.5
IO550_Reserviert Bool 292.6
IO551_Reserviert Bool 292.7
Das ist der Lesevorgang den ein Kollege für eine Sinumerik-Steuerung geschrieben hat. (Funktioniert auch hier)
Das kopieren in den DB und schreiben an den Roboter ging an der Sinumerik so: (Funktioniert an der 1500er nicht)
Wenn ich in SCL z.B. Blkmov einsetze, wie kann ich denn den Staticbereich als SRC nutzen? Wenn ich den STRUCT Namen einsetzte gibt es einen Fehler.
Wie kann ich das denn mit FUP oder SCL umsetzen. AWL würde auch gehen, da bin ich aber nicht ganz so fit.
Grüße
Edi