Vernetzung von mehreren Stationen

A

Anonymous

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich bin Anfänger mit Grundkenntnissen und versuche derzeit zwei Simatic S7-Steuerungen (314 mit CP 343-1 IT und 315 2 DP mit CP 343-1 IT) mit mäßigem Erfolg miteinander zu verbinden. Die Simatic-Softwareversion ist V. 5.2.
Ich denke, dass die Vernetzung der Hardware in Netpro fehlerfrei funktioniert. Habe die ISO-Transportverbindung gewählt und keine Fehlermeldung beim "Übersetzen" erhalten. Mein Problem ist anscheinend die korrekte Programmierung der AG_Send und AG_Recv Bausteine in Verbindung mit dem Anwenderprogramm.

Ich nutze die o.g. zwei Stationen und möchte nach Belegung von zwei an der "ersten" CPU 314 angeschlossenen Senoren (E 1.1 und E 7.6) einen Ausgang der "zweiten" CPU 315 2 DP (A 0.0) ansteuern.

Ich würde daher den kleinen Programmcode für o.g. Anwenderprogramm (als Beipiel) und die erforderlichen Daten für die Programmierung der beiden Bausteine (AG_Send und AG_Recv) benötigen und ein Hinweis, was auf beiden Steuerungen noch zur Funktion notwendig ist und geladen sein muss.


Vorab für jegliche Hilfe besten Dank


MfG

Christian
 
Hier ein Beispiel für den Sendeaufruf:
Code:
CALL  "AG_SEND"
       ACT   :=TRUE 
       ID    :=4   
       LADDR :=W#16#100
       SEND  :=P#DB1.DBX0.0 BYTE 220
       LEN   :=216
       DONE  :=M1.0
       ERROR :=M1.2
       STATUS:=MW2
Parameterbeschreibung:
ACT: Trigger zum senden (sollte über ein Merkebit getriggert werden)
ID: Das ist die Verbindungs-ID von deiner projektierten Verbindung im NetPro
LADDR : Hardwareadresse deines Ethernet-CP (im NetPro deine Verbindung anklicken->Objekteigenschaften...dort findest Du auch die ID
SEND : Pointer auf den Sendepuffer mit Maximallänge
LEN: aktuelle Datenlänge, die gesendet werden soll
Der Rest sind Rückgabewerte, die jedoch erst beim nächsten Aufruf des AG_SEND mit ACT:= FALSE gefüllt werden.

Der AG_RECV-Aufruf funktioniert genauso, nur das dort der Pointer auf den Empfangspuffer angegeben wird.

Natürlich müssen die Bausteine FC 5 und FC 6 aus der Bibliothek SimaticNetCP in das Projekt eingefügt werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die Hilfe,

ich benötige jedoch zum Verständnis und Testen ein kleines Beispiel für das Anwenderprogramm.

Beschaltung von Ausgang A 0.0 auf CPU 315 2 DP wenn E 1.1 (Schließer)und E 7.6 (Schließer) auf CPU 314 geschaltet sind. Muss ich nur die Bausteine FC 5 (AG_Send) und FC 6 (AG_Recv) in den OB's beider Steuerungen laden oder muss ich auch das Anwenderprogramm im OB beider Stationen laden? Die Daten LADDR und ID habe ich in Erfahrung gebracht, doch weis ich nicht, wie die anderen Anschlüsse von FC 5 und FC 6 zu belegen sind und ob ich Daten in anzulegenden Bausteinen zwischenspeichern muss.

Für jegliche Hilfe wäre ich sehr dankbar

MfG

Christian
 
Anonymous schrieb:
Danke für die Hilfe,

ich benötige jedoch zum Verständnis und Testen ein kleines Beispiel für das Anwenderprogramm.

Beschaltung von Ausgang A 0.0 auf CPU 315 2 DP wenn E 1.1 (Schließer)und E 7.6 (Schließer) auf CPU 314 geschaltet sind. Muss ich nur die Bausteine FC 5 (AG_Send) und FC 6 (AG_Recv) in den OB's beider Steuerungen laden oder muss ich auch das Anwenderprogramm im OB beider Stationen laden? Die Daten LADDR und ID habe ich in Erfahrung gebracht, doch weis ich nicht, wie die anderen Anschlüsse von FC 5 und FC 6 zu belegen sind und ob ich Daten in anzulegenden Bausteinen zwischenspeichern muss.
Für jegliche Hilfe wäre ich sehr dankbar
MfG
Christian

Wenn Du nur Daten in eine Richtung senden willst (CPU-314 -> CPU-315)
dann benötigst Du im Projekt der 314 den Baustein AG_SEND und im Projekt der 315 den Baustein AG_RECV.

Du legst eine DB mit einem Datenwort (WORD) an. Das ist dein Sendepuffer.

Beispiel für OB1 der Sendestation:
Code:
      U     E      1.1
      U     E      7.6
      =     M      1.0
Wenn deine Sensoren beide true liefern, dann schreibst Du eine 1 in deinen Sendepuffer und sendest ein! Datenpaket zur Gegenstelle.
Code:
U    M1.0
UN M2.0
SPB SEND
SPA END

SEND: UN M2.0
            S M2.0

CALL  "AG_SEND"                   
       ACT   :=M2.0      
       ID    :=3                       
       LADDR :=W#16#100             
       SEND  :=P#DB1.DBX0.0 BYTE 2  // das ist ein Pointer auf dein WORD
       LEN   :=2
       DONE  :=A8.1
       ERROR :=A8.2
       STATUS:=MW3

SPA END

END: NOP 0

Die Gegenstelle(315) empfängt das Datenpaket mit der Funktion AG_RECV und schreibt es in einen DB. Hier wertest Du das WORD aus und wenn eine 1 drinnsteht, dann setzt Du den A0.0

Wenn M1.0 wieder zurückgesetzt wird, dann schreibst Du eine 0 in dein WORD im DB1 und sendest ein Paket.
Auf der Gegenstelle wertest Du wieser das WORD aus und setzt den Ausgang A0.0 wieder zurück.

Gegenstelle empfängt Daten:
Code:
      CALL  "AG_RECV"        //Funktionsbaustein FC6 (Empfaengt Daten)
       ID    :=3
       LADDR :=W#16#100
       RECV  :=DB1.DBW0 // WORD wird in DB1 offset 0 geschrieben
       NDR   :=A8.1
       ERROR :=A8.2
       STATUS:=MW1
       LEN   :=MW2

      L     DB1.DBW    0
      L     1
      ==I   
      S     A      0.0

Wenn Du Details zu den Aufrufparametern benötigst, dann schau auch einmal in das Siemens-Handbuch SIMATIC NET
NCM S7 für Industrial Ethernet
 
Zurück
Oben