Daten aus CPU1 in CPU2 laden mittels Ethernet

DjTommyB

Level-1
Beiträge
80
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi!

Hab da mal wieder ne Frage und zwar:

Habe da 2 CPU's (S7-317) und müsste 2 Eingänge von der CPU1 in der CPU2 verwenden. Verbunden sind die 2 mittels Ethernet. Wie mach ich das?

vielen Dank im Vorraus
mfg
Tommy
 
z.b. mit den bausteinen PUT und GET ... da brauchste die kommunikation nur einseitig programmieren

nur zwei bits zu übertragen wird aber nicht funktionieren, kleinste einheit ist ein byte (...wenn ich mich nicht irre zum feiertag :rolleyes:)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wäre auch egal, komplettes EB ist frei....
und sonst schreib ich halt die 2 bits in ein MW oder so, wäre auch nicht das prob.

AAAAAABER

wie mach ich das genau? fg
 
Zuletzt bearbeitet:
nur abholen:

Code:
*
      CALL  FB    14 , DB14
       REQ   :=M10.0                    //anforderung
       ID    :=W#16#2                   //ID der partner-CPU aus Net-Pro
       NDR   :=M10.1                    //auftragsstatus
       ERROR :=M10.2                    //fehler oder status
       STATUS:=MW12                     //statusbeschreibung
       ADDR_1:=P#M 20.0 BYTE 1          //quellbereich
       RD_1  :=P#M 30.0 BYTE 1          //zielbereich

      U     M     10.1                  //auftrag gerade
      FP    M     10.3                  //fertig geworden
      SPBN  new
      R     M     10.0                  //löscht REQ
      SPA   nex
new:  S     M     10.0                  //und aktiviert ihn im übernächsten Zyklus
nex:  NOP   0
 
hmm is es denn schlimm wenn ich das nicht ganz verstehe? fg

mir ist das egal! :ROFLMAO:

es handelt sich beim baustein GET um einen funktionsbaustein, dieser benötigt einen zugeordneten speicherbereich um statische daten über mehrere zyklen speichern zu können, dafür nimmt man einen datenbaustein her, der als instanz zum funktionsbaustein deklariert wird und beim programmieren des aufrufs generiert wird.

bei der verwendung als multiinstanz, wird der speicherbreich, den der IDB des FB in einem eigenen IDB belegen würde dem übergeordneten IDB des aufrufenden FBs zugeordnet, so kann man bei umfangreichen kommunikation, um mal dabei zu bleiben, alle schreib und lese aufträge mit nur einer instanz abarbeiten ergo übersichtlicher - da man in die IDBs sowieso eher selten reinguckt
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hmmm funzt irgendwie nicht....

hier mal mein code (habs jetzt aber von der anderern CPU mit PUT gemacht)

Code:
CALL  "PUT" , DB2
       REQ   :=M1104.0
       ID    :=W#16#1
       DONE  :=M1104.1
       ERROR :=M1104.2
       STATUS:=MW1105
       ADDR_1:=MB1012
       SD_1  :=EB107
 
      U     M   1104.1
      FP    M   1104.3
      SPBN  new
      R     M   1104.0
      SPA   next
new:  S     M   1104.0
next: NOP   0


was mach ich falsch?
 
Code:
*
[COLOR=Red][COLOR=Black]CALL  "PUT" , DB2
       REQ   :=M1104.0
       ID    :=W#16#1
       DONE  :=M1104.1
       ERROR :=M1104.2
       STATUS:=MW1105[/COLOR][B]
       ADDR_1:=MB1012
       SD_1  :=EB107[/B][/COLOR]

wenn du mal auf F1 drückst würdest du nachlesen können, dass du einen ANY übergeben mußt, so wie ich es in meinem beispiel aufruf auch gemacht habe!

also P#M 1012.0 BYTE 1

ebenso würdest du nachlesen können, dass der quellbereich nur aus dem bereich M (Merker) oder D (Datenbausteine) sein darf, du also dein EB107 noch umtransferieren mußt...
 
Bij ein 300CPU kan du nicht von Eingangen lesen , nur von M und D.
Setsen ihre cursor auf die bausteinanruf und druck die F1 taste und die hilfe von dieser FB komt ins bild.

Oeps, zu spat.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hmmm funzt noch immer nicht, hab mal nen screen gemacht...

3427375.jpg
 
Zurück
Oben