Send / Receive

A

Anonymous

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Gibt es eine möglichkeit mehrere Send Receive aufrufe bei einer TCP verbindung zu projektieren um z.B. DB90 bis DB 94 in Steuerung A nach DB 90 bis 94 in Steuerung B zu schreiben. Oder ist es tatsächlich so das durch die Verbindungs ID nur ein Aufruf von einem DB zum anderen funtioniert ????
 
Hallo,

mit den Bausteinen SFB14 und 15 (Get und Put) können pro Auftrag bei projektierten Verbindungen max. 4 DBs oder 4 verschieden DB-Bereiche (Pointer auf DB) übertragen werden. Allerdings nur 160 bzw. 400 Byte (S7-300 bzw. 400).

Gruß
raika
 
Send/Receive

Hallo RaiKa,
RaiKa schrieb:
pro Auftrag max. 4 DBs oder 4 verschieden DB-Bereiche (Pointer auf DB)
Du schreibst von von max. 4 DB's pro Auftrag. Wie kann ich die 4 DB's mit einem einzigen Pointer an den SFB übergeben ??? Für Deine Erklärung wäre ich Dir sehr dankbar, da ich halt in der Programmierung noch etwas dumm und unbedarft bin (nun die Referenten in der VHS konnten mir das auch nicht so richtig erklären, aber der Kurs kostet ja auch nur ein paar €uro, die vom Arbeitsamt auch noch übernommen werden). Mannoman, sind die Referenten in der VHS bescheuert, aber Du kannst mir als kompetenter Fachmann aus der IT-Branche das mal so richtig einfach erklären.
Gruß
Gast ???
 
Hallo,

Gast schrieb:
Hallo,

Gibt es eine möglichkeit mehrere Send Receive aufrufe bei einer TCP verbindung zu projektieren um z.B. DB90 bis DB 94 in Steuerung A nach DB 90 bis 94 in Steuerung B zu schreiben. Oder ist es tatsächlich so das durch die Verbindungs ID nur ein Aufruf von einem DB zum anderen funtioniert ????

Wenn Du die SEND RECV-FCs verwenden willst, so könntest Du für die einzelnen Datenbereich hintereinander übertragen.
Auf der Senderseite müsstest Du dazu den Datenbereich (das Sendefach) immer entsprechend anpassen. Der Empfänger würde aber immer in das gleiche Empfangsfach die Daten bekommen. Da könntest Du ja im ersten Byte des Datenstroms reinschreiben, welcher DB die Daten bekommen soll und sie dann entsprechend umkopieren.

Gast schrieb:
Du schreibst von von max. 4 DB's pro Auftrag. Wie kann ich die 4 DB's mit einem einzigen Pointer an den SFB übergeben ???

Hier der Aufruf eines der SFBs:

Code:
      CALL  "GET" , DB14
       REQ   :=
       ID    :=
       NDR   :=
       ERROR :=
       STATUS:=
       ADDR_1:=
       ADDR_2:=
       ADDR_3:=
       ADDR_4:=
       RD_1  :=
       RD_2  :=
       RD_3  :=
       RD_4  :=
Unter ADDR_1 bis ADDR_4 können 4 Datenbereiche angegeben werden.
Ebenso under RD_x
Schau mal in die Onlinehilfe. Da ist der Aufruf und so ziemlich gut beschrieben wie ich finde.

Allerdings wird für diese Art der Kommunikation eine sogenannte S7-Verbindung benötigt. Das ist ein Kommunikationsweg, der nur zwischen SIMATIC S7-Geräten zur Verfügung steht.

Noch Fragen?

Gruß ulkula
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gast schrieb:
Hallo,

Gibt es eine möglichkeit mehrere Send Receive aufrufe bei einer TCP verbindung zu projektieren um z.B. DB90 bis DB 94 in Steuerung A nach DB 90 bis 94 in Steuerung B zu schreiben. Oder ist es tatsächlich so das durch die Verbindungs ID nur ein Aufruf von einem DB zum anderen funtioniert ????

Hallo,

statt einer TCP-Verbindung würde ich eine "ISO-On-TCP"-Verbindung (RFC1006) oder UDP verwenden. Hierbei wird jeder SEND-Aufruf in einem einzigen Paket übertragen. Dann kannst Du über eine Verbindung jeden DB mit einem eigenen Aufruf senden und musst nicht im TCP-Datenstrom nach deinen einzelnen DB's suchen. Du müsstest dann nur eine Kennung in dein Datenpaket setzten, die die DB-Nummer enthält, damit Du die einzelnen Pakete am Ziel wieder zuordenen kannst.
 
Zurück
Oben