TIA Problem mit Put/Get Verbindung S7-1200 & 2x S5

021aet04

Level-2
Beiträge
187
Reaktionspunkte
28
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo SPS-Forum,

ich bin gerade dabei für ein RBG (Regalbediengerät) einen Ersatz für die Datenlichtschrankenverbindung zu programmieren.

Ich habe schon in einem Thread (https://www.sps-forum.de/threads/schnittstellenconverter-für-s5-20ma-stromschnittstelle.109337/) nach Ersatz für die Datenlichtschranke gefragt. Es geht um dieses "Projekt".

Es wurden 2Stk. S5-Bridge Module von Process Informatik und eine S7-1200 bestellt. Das sind die Komponenten, die ich verwende.

Ich habe aktuell ein Testsystem in der Werkstatt aufgebaut. Eine Skizze mit dem Aufbau habe ich angehängt, dort steht auch das "Programm", das ich auf den Steuerungen habe. Die beiden S5-Steuerungen habe ich wegen den Onboard Ein/Ausgängen genommen, damit ich leichter Testen kann. Original sind leistungsfähigere S5-Steuerungen verbaut.

Die beiden S5 lesen nur das EW32 ein und schreibt in das Sendefach des Datenbausteins, gleichzeitig wird das Empfangsfach des Datenbausteins gelesen und auf AW32 geschrieben. Programm steht in der PDF mit dem Aufbau.

Die Datenbausteine sind so wie sie in den realen Steuerungen auch vorhanden sind.

In der PDF RBG_WLAN ist das Programm der S7. Die beiden Bausteine werden in OB1 aufgerufen, sonst macht die SPS nichts.

Die S7 liest das Sendefach der S5-Steuerung aus und schreibt es ins Empfangsfach der anderen Steuerung.

In der Hardware Konfiguration habe ich für die S5-Bridge Module jeweils eine S7-300 mit PN-Schnittstelle angelegt, damit ich diese für PUT/GET verwenden kann.

Die Datenverbindung steht, ich bekomme keine Fehler von PUT bzw. GET, außer ich stecke ein Modul ab oder ich provoziere einen anderen Fehler.

Ich möchte das EW der einen Steuerung auf das AW der anderen Steuerung schreiben, das funkioniert aber nicht.
Es wird das EW der Steuerung auf das AW der gleichen Steuerung geschrieben.


Ich habe das Programm schon kontrolliert, finde aber keinen Fehler. Kann mir bitte einer einen Hinweis geben woran es liegen kann?

Ich verwende TIA V16.
Die Hardware steht auch im PDF Aufbau, hier aber noch einmal.
6SE5 95-8MA02 direkt mit S7 215-1AG40-0XB0 und über WLAN eine 6SE5 95-8MB02.

Edit: Der Merker M2.0 ist nur zum Testen. Damit kann ich einen Fehler provozieren. Im späteren Programm kommt der weg,

Danke im Voraus
Hannes
 

Anhänge

  • Aufbau.pdf
    28,9 KB · Aufrufe: 45
  • RBG_WLAN.pdf
    268,5 KB · Aufrufe: 36
Welche Verbindungs-ID geht zu welcher Steuerung? Passt das zusammen? Mach sonst davon auch nochmal einen Screenshot.

Die Dummy-Station musst du nicht anlegen, normal lässt sich eine unspezifizierte Verbindung anlegen. Aber wenn die S5-Bridge mit der Verbindungsressource klarkommt die daraus resultiert, ist es auch Ok wenn es funktioniert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Verbindungs-ID 100:
Verbindungs-CPU (S7-1200 mit IP 200.0.0.1) <=> WLAN_Aussen (S7-314C-2PN/DP mit IP 200.0.0.10)

Verbindungs-CPU 101:
Verbindungs-CPU (S7-1200 mit IP 200.0.0.1) <=> WLAN_Innen (S7-314C-2PN/DP mit IP 200.0.0.11)

Die S7-314 habe ich in der Hardware Konfiguration angelegt, das sind eigentlich die S5-Bridge Module (IP-Adressen passen).



Beim Verbindungsdatenbaustein ist mir auch etwas aufgefallen.

Ich habe einen PLC-Datentyp "Verbindung" erstellt mit den 32Words.

Im Verbindungsdatenbaustein habe ich diesen Datentyp 2x verwendet. Einmal als STV2RBG und einmal RBG2STV. Diese habe ich in den jeweiligen FBs mit den PUT/GET Bausteinen verschalten.


STV2RBG Word 5 (6) und RBG2STV Word 25 (26) sind gleich, je nachdem welchen Eingang ich an der Steuerung mit IP 200.0.0.11 beschalte
STV2RBG Word 25 (26) und RBG2STV Word 5 (6) sind gleich, je nachdem welchen Eingang ich an der Steuerung mit IP 200.0.0.10 beschalte

Word 5/6 bzw. 25/26 ist abhängig vom Eingang, je nachdem ob EW32 oder EW33.
 
Ich möchte das EW der einen Steuerung auf das AW der anderen Steuerung schreiben, das funkioniert aber nicht.
Es wird das EW der Steuerung auf das AW der gleichen Steuerung geschrieben.
  • In Deinem Programm ist weder ein Lesen von einem EW noch ein Schreiben zu einem AW zu finden??? Und wenn doch, dann wäre es gaaanz schlechter Programmerstil, mit PUT direkt in AW einer Remote CPU zu schreiben.
  • WORDs läßt man üblicherweise auf geraden Adressen beginnen. In DB kann man WORDs gar nicht auf ungerade Adressen deklarieren.
  • Deine PUT- und GET-Datenbereiche in den CPU überlappen sich, so daß teilweise in das Sendefach der Ziel-CPU geschrieben wird.
Male Dir mal auf einem Zettel auf was Du machst, dann siehst Du was Du anders machen musst.
Dein Programm macht:
Code:
              CPU STV, ID W#16#100               S7-1200               CPU RBG, ID W#16#101

             P#DB81.DBX49.0 WORD 32    GET 16#100  FB1  PUT 16#101   P#DB5.DBX9.0 WORD 32
Sendefach      DB81.DBB49 .. 112      -------------> ------------->    DB5.DBB9 .. 72       Empfangsfach

             P#DB81.DBX9.0 WORD 32     PUT 16#100  FB2  GET 16#101   P#DB5.DBX49.0 WORD 32
Empfangsfach   DB81.DBB9 .. 72        <------------- <-------------    DB5.DBB49 .. 112        Sendefach

Empfehlung für besser:
Code:
             P#DB81.DBX200.0 BYTE 64   GET 16#100  FB1  PUT 16#101   P#DB5.DBX100.0 BYTE 64
Sendefach      DB81.DBB200 .. 263     -------------> ------------->    DB5.DBB100 .. 163    Empfangsfach

             P#DB81.DBX100.0 BYTE 64   PUT 16#100  FB2  GET 16#101   P#DB5.DBX200.0 BYTE 64
Empfangsfach   DB81.DBB100 .. 163     <------------- <-------------    DB5.DBB200 .. 263       Sendefach
(Lücken zwischen Empfangsfach und Sendefach mit Reserve-Bytes auffüllen)

die lokalen Adressen in der S7-1200 für SD_1 und RD_1 habe ich nicht geprüft

Harald
 
Hinweis: die IP-Adressen so zu Belegen ist nicht Statthaft!

Also Überlegen welche Klasse verwendet werden soll und die entsprechenden Adressen einsetzen.

Klasse A: 10.X.X.X
Klasse B: 172.n.X.X
Klasse C: 192.168.n.X

(n= nur eine Nummer innerhalb eines Netzes)

Gruß


A.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bitte auch auf Kollisionen mit Firmen-/Büronetzwerk achten.

Bei den Angaben für die Klassen handelt es sich um frei belegbare Adressen.
Bei 200.x.x.x wären es feste Adressen die angemeldet sein sollten.

Gruß

A.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Man muß nicht mehr die IP-Adressen entsprechend der Netzklassen verwenden, ABER man sollte nur private IP-Adressen verwenden.

Im Endeffekt habe ich mich auf nichts anderes bezogen.
Ob man diese nun freie oder Private nennt ist meiner meinung nach Wortspielerei.
Die privaten Adressbereiche und deren Nutzbarkeit ergeben eigentlich fast automatisch
eien Klassifizierung.
Mir ist durchaus bekannt, das der Klasse A Bereich gerne in Klasse C zerlegt wird,
was durchaus zulässig ist z.B.: 10.168.1.x mit Subnet Mask 255.255.255.0

Gruß

A.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die ganzen Antworten, leider ist nichts brauchbares dabei.

@PN/DP
Hast du dir die beiden PDFs angeschaut? Im PDF "Aufbau" stehen die Programme der S5 drinnen. auch wenn es nicht viel ist. Das ist nur zum Testen in der Werkstatt. Die Anlage, für die ich das Programmiere ist im Betrieb. Sollte die Datenlichtschranke kaputtgehen wird die WLAN Verbindung (so wie ich es programmiere) eingebaut. Ich bin mir nicht ganz sicher, ich glaube aber das 2Stk S5-115 CPU 945 verbaut sind. Diese kommunizieren über die Sinec-Schnittstelle per DLS. Im Programm will ich nichts ändern, deswegen verwende ich die S7-1200 und lese die DBs aus und schreibe es in die Gegen SPS. Dadurch gibt es den DB5 und den DB81 und deren Aufbau mit DW9 und DW49. Warum sich die Datenbereiche überschneiden verstehe ich auch nicht ganz. Im Handbuch der S5 steht, dass die DB in Words organisiert sind. In der S7 habe ich auch Words verwendet.

Ich greife auch nicht auf die EW bzw AW per PUT/GET zu. Mein Programm in der S5 ist so:
Code:
A DB5
L EW32
T DW49

L DW9
T AW32
In der anderen Steuerung habe ich statt DB5 den DB81 verwendet. So wie es in der realen Anlage auch ist (mit den DBs). Das steht genau so in der PDF "Aufbau" drinnen.

Die DBs und dazugehörigen Datenwörter habe ich aus dem SPS Programm der Anlage. Wenn ich am Montag dazu komme, kann ich den jeweiligen Abschnitt fotografieren.

Am Sende/Empfangsfach kann und will ich nichts ändern. Das ist der Grund warum ich es so mache.

@Rest
Warum ihr euch über die IP Adressen so aufregt verstehe ich auch nicht. Es werden im Endeffekt max. 3 bzw. 4 (mit Programmierlaptop) Komponenten sein. Die Verbindungs-CPU, und die beiden S5-Bridge Module. Es kommt nichts dazu oder weg. Es wird nicht in ein Firmennetzwerk oder sonst etwas eingebunden. Die Anlage ist und bleibt Standalone.

@Michitronik
PUT/GET ist aktiviert. Die Verbindung funktioniert. Die Ausgänge werden nur an der falschen SPS geschalten. Wenn ich die Verbinung unterbreche (z.B. Versorgung der S5-Bridge abstecke) ändert sich auch der Ausgang nicht mehr.



Es sollte eigentlich so sein (zumindest mein Plan):
S5 CPU 1 liest EW ein und schreibt es in das DW49
S7 liest DW49 von S5 CPU 1 aus und schreibt es in das DW9 von S5 CPU 2
S5 CPU 2 liest DW9 aus und schreibt es in das AW.

Das gleiche sollte in umgekehrter Richtung funktionieren EW von S5 CPU 2 => AW von S5 CPU 1


Das passiert aber nicht. Das EW von S5 CPU 1 wird in AW von S5 CPU 1 geschrieben, EW von S5 CPU 2 wird in AW von S5 CPU 2 geschrieben.


Ich hoffe, dass es jetzt verständlicher war.

MfG und schönes Wochenende
Hannes
 
Ich habe mal über diesen Adapter Werte aus einer S5 gelesen, was eigentlich ganz gut funktioniert hat. Den Ur-Alt Winkelcodierer durch einen Inkrementalgeber zu ersetzen hat zwar nicht funktioniert, aber vielleicht helfen dir meine Bausteine ja weiter.

Ich suche dir gleich mal das Programm raus, wie kann ich dir das am besten schicken?
 
Mal vielleicht ganz simpel gedacht. Ist in der S7-1200 PUT/GET aktiviert?
Das muss nur aktiviert werden, wenn AUF die 1200er mit Put/Get zugegriffen werden soll. Hier greift die 1200 aber auf eine andere Steuerung mit Put/Get zu, darum ist das nicht notwendig. Außerdem hat er ja geschrieben, die Kommunikation funktioniert grundsätzlich.

Teste das doch einfach in zwei Einzelschritten. Also Kommunikation zur S5 Nr. 1: Funktioniert das Schreiben, kommen die gelesenen Werte passend an. Dann Kommunikation zur S5 Nr. 2 in gleicher Weise testen. Und dann die gelesenen Werte von 1 in den zu schreibenden Bereich von 2 kopieren und umgekehrt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die ganzen Antworten, leider ist nichts brauchbares dabei.

@PN/DP
Hast du dir die beiden PDFs angeschaut? Im PDF "Aufbau" stehen die Programme der S5 drinnen.
Die S5-Programme habe ich wohl übersehen, weil ich sie nicht in einem PDF "Aufbau" erwartet habe.

Ich greife auch nicht auf die EW bzw AW per PUT/GET zu. Mein Programm in der S5 ist so:
Code:
A DB5
L EW32
T DW49

L DW9
T AW32
Ah, OK.

Im Programm will ich nichts ändern, deswegen verwende ich die S7-1200 und lese die DBs aus und schreibe es in die Gegen SPS. Dadurch gibt es den DB5 und den DB81 und deren Aufbau mit DW9 und DW49. Warum sich die Datenbereiche überschneiden verstehe ich auch nicht ganz. Im Handbuch der S5 steht, dass die DB in Words organisiert sind. In der S7 habe ich auch Words verwendet.
In der S5 werden die DW-Adressen wordweise gezählt und adressiert, in S7 werden sie byteweise gezählt und adressiert:
S5 = S7
DW0 DBW0
DW1 DBW2
DW2 DBW4
...
DW9 DBW18

Ich kenne die S5-Bridge nicht und weiß nicht, wie die die S7-Pointer in S5-Pointer übersetzt. Ich vermute, bei PUT/GET in der S7-1200 muß die S7-Adressierung angegeben werden.
Probiere einfach mal aus:
P#DB5.DBX9.0 WORD 32 -----> P#DB5.DBX18.0 WORD 32
P#DB5.DBX49.0 WORD 32 ----> P#DB5.DBX98.0 WORD 32
P#DB81.DBX9.0 WORD 32 ----> P#DB81.DBX18.0 WORD 32
P#DB81.DBX49.0 WORD 32 ---> P#DB81.DBX98.0 WORD 32

Harald
 
.. Warum sich die Datenbereiche überschneiden verstehe ich auch nicht ganz. Im Handbuch der S5 steht, dass die DB in Words organisiert sind. In der S7 habe ich auch Words verwendet.
..
Hannes, warum überträgst du überhaupt 32 Words? In den jeweiligen Empfangs-DB werden dann auch 32 Words geschrieben. Ist das so gewollt? Diese 32 Words überschreiben teilweise den Sendebereich im selben DB. Harald hat das in #4 eindeutig dar gestellt. Teste doch zunächst einfach mal mit 1 WORD Datenlänge, um zu sehen dass die Übertragung mit dem EW32/AW32 funktioniert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
FB1_GET.pngSettings.pngVernetzung.png

Das ganze liegt zwar schon wieder etwas länger zurück, aber auf diese Weise hat das Daten "Abholen" über den IBHLInk S5++ funktioniert. Wichtig war auch die Konfiguration auf dem Adapter selbst, hast du diese kontrolliert und/oder kannst du davon mal einen Screenshot einstellen?
 
Danke für die Antworten. Ich werde es zuerst mit 1 Word testen. Das mit der S5/S7 Word/Byte Zählweise werde ich auch testen.

@Onkel Dagobert
Das mit den 32Words/64Bytes ist so gewollt. Die Konfiguration der Schnittstelle bzw. Größe des Sendefaches habe ich als Bilder hochgeladen (S5 Programm vom RBG und STV). Das sind die originalen Programme vom RBG und STV.

Mir ist aufgefallen, als ich die Fotos gemacht habe, dass beim RBG das Sendefach DW49 ist und beim STV ist das Sendefach DW9. Das spielt beim jetzigen Testaufbau aber keine Rolle.

Den Aufbau vom Sende- und Empfangsfach der S5-115 (beim RBG und beim STV sind S5-115 CPU944B verbaut) habe ich aus der Anleitung.

Der Aufbau vom Sendefach bzw. Emfangsfach ist (laut Handbuch):
Byte 1 => Länge des Datenpaketes (1..64Byte)
Byte 2 => Zielnummer (Quellnummer)
Byte 3... Byte 66 => Daten (max. 64Byte)

Byte 1/Byte 2 ist bei mir eben das DW9 bzw. DW49. Deswegen habe ich diese beiden auch in meinem Testsystem genommen.

Ich weiß noch nicht wie ich es machen werde. Ich werde aber vermutlich noch das gesamte Sendefach bzw Empfangsfach lesen (33Words). Damit habe ich auch die Information über Länge des Datenpaketes bzw die Zielnummer (für z.B. Diagnose, spätere Projekte,...).


@JanP
Danke für den Ausschnitt des Programmes. Im Prinzip habe ich es genau so gemacht. Nur eben mit einem Adressbereich.
Programm brauchst du mir zurzeit nicht schicken, danke fürs Angebot. Der Bildausschnitt reicht aktuell. Bei Bedarf melde ich mich noch einmal.


Was ich dann auch machen kann (beim Testsystem) im DB die Bytes durchnummerieren (z.B. Byte 1 = 1, Byte 2 = 2,...) so kann ich es genau diagnostizieren, wo der Fehler ist.


Ich muss jetzt noch wegen einem anderen Projekt schauen. Weiß noch nicht wann ich wieder dazukomme. Wird aber nicht allzu lange dauern.

MfG
Hannes
 

Anhänge

  • RBG_Schnittstelle_Konfiguration.jpg
    RBG_Schnittstelle_Konfiguration.jpg
    6,5 MB · Aufrufe: 14
  • RBG_Sendefach_Konfiguration.jpg
    RBG_Sendefach_Konfiguration.jpg
    6,8 MB · Aufrufe: 14
  • STV_Schnittstelle_Konfiguration.jpg
    STV_Schnittstelle_Konfiguration.jpg
    7,5 MB · Aufrufe: 11
  • STV_Sendefach_Konfiguration.jpg
    STV_Sendefach_Konfiguration.jpg
    6,6 MB · Aufrufe: 14
Zuletzt bearbeitet:
S5-BRIDGE ist das selbe wie ein S5-LAN++ nur mit zusätzlichem WLAN. Also eine BRIDGE zwischen LAN, WIFI und TTY-Schnittstelle der S5.
Der Zugriff auf DBs in der S5 ist kein 1zu1-Zugriff wie in der S7. Wie schon PN/DP schrieb, S5 ist Wort-Maschine und S7-Byte. Somit muss
bei Zugriffen auf Datenbausteine von der S7 aus die Adressangaben verdoppelt werden.
Zugriffe auf M, T, Z, E, A ist immer das selbe, nur die DBs sind die Ausnahme.
 
Zurück
Oben