PLCSIM Kommunikation zwischen 2 CPUs

Limette

Level-2
Beiträge
282
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

mittlerweile ist es ja möglich zwei 2 cpus zu simulieren. Für die Kommunikation werden einige Bausteine angeboten:
http://support.automation.siemens.c...objaction=csview&extranet=standard&viewreg=WW

Leider funktioniert es bei mir nicht.
Code:
1. CPU:

zum lesen:
      U     M     30.0
      =     L     12.0
      BLD   103
      CALL  "GET" , DB301
       REQ   :=L12.0
       ID    :=#_word
       NDR   :=M30.1
       ERROR :=M30.2
       STATUS:=MW33
       ADDR_1:=P#DB100.dbx0.0 Byte 100
       RD_1  :=P#DB100.dbx0.0 Byte 100
      NOP   0

zum schreiben:
      U     M     31.0
      =     L     12.0
      BLD   103
      CALL  FB    15 , DB302
       REQ   :=L12.0
       ID    :=#_word2
       DONE  :=M31.1
       ERROR :=M31.2
       STATUS:=MW35
       ADDR_1:=P#DB100.dbx100.0 Byte 100
       SD_1  :=P#DB100.dbx100.0 Byte 100
      NOP   0

2. CPU

zum lesen:
      U     M     20.0
      =     L     96.0
      BLD   103
      CALL  "GET" , DB300
       REQ   :=L96.0
       ID    :=#_word
       NDR   :=M20.1
       ERROR :=M20.2
       STATUS:=MW23
       ADDR_1:=P#DB100.dbx100.0 Byte 100
       RD_1  :=P#DB100.dbx100.0 Byte 100
      NOP   0

zum schreiben:

      U     M     21.0
      =     L     96.0
      BLD   103
      CALL  "PUT" , DB301
       REQ   :=L96.0
       ID    :=#_word2
       DONE  :=M21.1
       ERROR :=M21.2
       STATUS:=MW25
       ADDR_1:=P#DB100.dbx0.0 Byte 100
       SD_1  :=P#DB100.dbx0.0 Byte 100
      NOP   0
ohne weitere zutun, kommt fehlerstatus 1...
habe ich hier irgendwas falsch gemacht oder liegt der fehler bei den 2 plcsims. hab beide auf tcp/ip und hab sie einfach nach einander geöffnet und geladen.
 
Für die Kommunikation zwischen zwei Plcsim Instanzen musst du wie auf der Siemens Seite beschrieben die SFB und nicht die FB verwenden. Du musst also das Programm für die Simulation etwas abändern, oder um die zweite Variante für die Simulation ergänzen und die anderen Aufrufe solange deaktivieren. Aber die Schnittstelle der Bausteine ist ja weitgehend identisch.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Für die Kommunikation zwischen zwei Plcsim Instanzen musst du wie auf der Siemens Seite beschrieben die SFB und nicht die FB verwenden. Du musst also das Programm für die Simulation etwas abändern, oder um die zweite Variante für die Simulation ergänzen und die anderen Aufrufe solange deaktivieren. Aber die Schnittstelle der Bausteine ist ja weitgehend identisch.

ok danke. werde ich morgen gleich probieren.
 
"PUT" und "GET" werden normalerweise auch nur auf einer CPU ausgeführt. Die Parameter "ID" müßten bei der selben Verbindung eigentlich bei beiden Bausteinen gleich sein.
 
Zuletzt bearbeitet:
kann ich dann Bsend und Breceive nehmen ? brauch sie ja auf beiden seiten jemals einmal, richtig ?
 
Hi,
hab mal das Siemens Testprogramm abgewandelt. Das Siemens Program sendet und empfängt ja nur von einer zu anderen Seite. Ich würde gern auf jeder CPU senden und empfangen können. Leider klappt es nicht. Dacht mir ich kopiere es einfach über Kreuz und verpasse den BESEND u BERECEIVE einfach neue ID und R_ID. Bei der zweiten Verbindung kommt leider. einmal fehler 1 (Verbindung etc klappt nicht) auf der anderen Fehler 3 (R_ID ist nicht bekannt). Habe das Projekt anbei, den kompletten code zu posten wäre zu viel. Wer Lust hat kann ja mal drüberschauen ob er einen Fehler findet. ich finde ihn leider nicht. :)

Testprojekt:
Anhang anzeigen S7_plcsi.zip
 
Du verwendest die ID 5. Zu dieser ID gibt es aber überhaupt keine Verbindung in NetPro.
Eigentlich sollte es funktionieren wenn alle Bausteine die gleiche Verbindungs-ID bekommen, aber die R_ID unterschiedlich sind. Dabei bekommt jedes Send/Receive-Pärchen die gleiche R_ID.
Ansonsten musst du in NetPro noch eine weitere Verbindung mit der ID 5 anlegen.

Ich verstehe allerdings nicht warum du nicht bei deinem Put/Get Beispiel bleibst. Du musst nur auf einer SPS Put und Get aufrufen und das Ding ist gegessen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe mich halt an dem siemens beispiel versucht und habe put/get über den haufen geworfen. dacht so geht es einfach. Ok danke. denke so werde ich es hinbekommen. hab grad das netpro nicht vor mir, wo müsste ich die ID eintragen? Aber mit vier gleichen IDs müsste es ja auch gehen. gebe feedback.
 
Hallo,

ich habe zwei CPU, die in PLCSIM simuliert sind. Leider funktioniert Datenaustausch zwischen CPU1 und CPU2 nicht.
Die folgenden Bausteine SEND_BO(FB207) REC_BO(FB208) sind im Programm eingesetzt.
Ich habe auch SBF 12 und SBF13 ausprobiert. Alles funktioniert in PLCSIM nicht.
Es konnte daran liegen, dass wenn ich NETPRO Konfiguration in PLCSIM zu laden versuche, schon da klappt es nicht.
Habt jemand eine Idee oder ein funktionierendes Beispiel?

Ich habe folgende Software installiert: PLCSIM V5.4 +SP8
PCS7.8.0+SP1
STEP7 V5.5+SP4
 
Wenn die Systemdaten in Plcsim nicht geladen wurden, funktionieren die Verbindungen in keinem Fall. Das wäre also das erste was du beheben musst.
Wenn du die gesamten Systemdaten aus dem Bausteinordner lädst, dann sind dort auch die Verbindungsdaten enthalten. Zumindest wenn vorher in NetPro Verbindungen parametriert wurden und das Ganze dann fehlerfrei übersetzt wurde. Aber eigentlich sollte das Laden über NetPro auch bei Plcsim funktionieren.
 
Zurück
Oben