Was hast Du für Steuerungen zur Verfügung? Wie viele Verbindungen können sie?Hallo zusammen,
ich muss eine Put& Get Verbindung zwischen einer Hauptsteuerung und 9 Untersteuerungen realisieren.
Hoffentlich nicht lesen UND schreiben in EINEM Datenblock.Diese sollen jeweils 3 Blöcke aus den Datenbausteinen schreiben und lesen.
Was ist de SD-Bereich. Welchen Eingang (von einem Baustein? Wenn ja von welchen?) meinst Du?Meine Idee dahinter war, dass ich die Adresse und den SD-Bereich entsprechen am Eingang parametriere.
Was für Probleme macht er denn?Leider macht mir der Datentyp Remote Probleme, ich habe schon lange gesucht aber nicht die konkrete Lösung gefunden.
Unklar. Bin mir bei PUT/GET nicht sicher. Aber geht nicht ein UDT?Vielleicht hat jemand eine einfache Lösung wie ich den Datentyp per SCL beschreiben kann.
Doch, in meine DB sind die ersten 315 Variablen vom Typ Word vorgsehen zum lesen und die nächsten 315 zum schreiben.Hoffentlich nicht lesen UND schreiben in EINEM Datenblock.
Mit einem UDT habe ich bisher noch nicht getestet, ob es funktioniert.Unklar. Bin mir bei PUT/GET nicht sicher. Aber geht nicht ein UDT?
Na, das ist ja DOCH getrenntes lesen/schreiben.Doch, in meine DB sind die ersten 315 Variablen vom Typ Word vorgsehen zum lesen und die nächsten 315 zum schreiben.
Bisher hat das bei direkter
Adressierung immer wunderbar funktioniert.
Also sowohl am ADDR_1 (remote CPU) als auch am SD_1 (lokale CPU) muss ja ein Pointer dran. Aber wie gesagt: in TIA habe ich noch nicht vier "gepointert". Deswegen kann ich da keine sicheren Wahrheiten zu aussprechen.Anhang anzeigen 76590
Hier meine ich den SD-Eingang.
Du musst ja nicht unbedingt die DB-Nummer ändern. Mach Dir doch einen Pointer, den Du an den PUT verschaltest und vorher mehrere Pointer, die Du dem "Übergabepointer" passend zuweist.Mit einem UDT habe ich bisher noch nicht getestet, ob es funktioniert.
Vielleicht denke ich auch etwas zu kompliziert, wie ich mit dem UDT den Remote bilden kann.
P#DB181.DBX0.0 BYTE 210
Ich möchte hier die DB Nummer verändern, sodass ich nicht für jeden DB eine neue PUT/Get Verbindung programmieren muss.
Ich habe schon etwas probiert, bin aber nicht auf einen Nenner gekommen, von ANY kommt man nicht auf Remote.Du musst ja nicht unbedingt die DB-Nummer ändern. Mach Dir doch einen Pointer, den Du an den PUT verschaltest und vorher mehrere Pointer, die Du dem "Übergabepointer" passend zuweist.
Wie äußerst sich das denn? Generell müsste es mit dem ANY funktionieren... Leider macht mir der Datentyp Remote Probleme ...
Du mußt auch nicht für jeden Aufruf eine neue S7-Verbindung projektieren.P#DB181.DBX0.0 BYTE 210
Ich möchte hier die DB Nummer verändern, sodass ich nicht für jeden DB eine neue PUT/Get Verbindung programmieren muss.
Wie genau weiße ich das Any dem Remote zu?Wie äußerst sich das denn? Generell müsste es mit dem ANY funktionieren.
Ist der DB optimiert, das müßte dann aber im Klartext beim Übersetzen angemault werden.
Ich glaube, die Größe der Datenblöcke war noch begrenzt, möglicherweise CPU-abhängig.
PUT: Daten in eine remote CPU schreiben (S7-1200, S7-1500)
Zeiger auf diejenigen Bereiche in der Partner-CPU, in die geschrieben werden soll.
Wenn der REMOTE-Zeiger auf einen DB zugreift, ist der DB immer zu spezifizieren.
Beispiel: P#DB10.DBX5.0 Byte 10.
Bei der Übertragung von Datenstrukturen (z. B. Struct, Array) muss an den Parametern ADDR_i der folgende Datentyp verwendet werden:
Hinweis: Sie können Programme, die die Anweisung "PUT" enthalten, von S7-300-, S7-400- und S7-1200-CPUs also auf S7-1500-CPUs ab Firmware-Version V2.8.2 übertragen.
- Bei S7-1200-CPUs aller Firmware-Versionen und bei S7-1500-CPUs ab Firmware-Version V2.8.2: BYTE, CHAR, WORD, INT, DWORD, DINT oder REAL
- Bei S7-1500-CPUs mit Firmware-Version < V2.8.2: CHAR
PUT: Daten in eine remote CPU schreiben (S7-1200, S7-1500)
Zeiger auf diejenigen Bereiche in der eigenen CPU, die die zu versendenden Daten enthalten.
Zulässig sind nur die Datentypen BOOL (nicht erlaubt: Bitfeld), BYTE, CHAR, WORD, INT, DWORD, DINT, REAL.
Für S7-1500-CPUs mit Firmware-Version < V2.8.2 gilt: Bei der Übertragung von Datenstrukturen (z. B. Struct, Array) muss an den Parametern SD_i der Datentyp CHAR verwendet werden.
Hinweis: Sie können Programme, die die Anweisung "PUT" enthalten, von S7-300-, S7-400- und S7-1200-CPUs also auf S7-1500-CPUs ab Firmware-Version V2.8.2 übertragen.
Einfach "P#DB181.DBX0.0 BYTE 210" an den Bausteinparameter antragen, geht nicht? Ein REMOTE ist ja auch nichts anderes ein ANY, nur bezogen auf die remote CPU. Wenn das nicht geht, müsstest du gnädigerweise mal näher erläutern, was passiert. Wird irgend etwas rot, gelb oder grün? Also, ich meine auf dem Bildschirm, nicht davor. Kommen beim Übersetzen Fehlermeldungen? Oder werden ganz einfach die Daten nicht übertragen?Wie genau weiße ich das Any dem Remote zu? ..
Hat Firmware 3.0Welche Firmware hat denn deine Mega-CPU?
Gott sei Dank!Siemens hat damit das Gewichse an dieser Stelle wirkungsvoll unterbunden.
Danke nicht mir, danke SiemensGott sei Dank!
Gott sei Dank!
Danke nicht mir, danke Siemens!
.. Diese sollen jeweils 3 Blöcke aus den Datenbausteinen schreiben und lesen...
War auch eher an die Sache an sich als an dich gerichtetDanke nicht mir, danke Siemens!
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?