Step 7 Profinet CP343-1 und Beckhoff EL6631

pjoker22

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich stehe vor einem Problem bei dem ich seit längerem nicht voran komme.

Ich kenne mich mit S7 noch nicht so gut aus...
Zum Thema:

Ich muss eine Profinetkommunikation zwischen Siemens und Beckhoff realisieren.
Zu Testzwecken habe ich eine CPU314 2DP und einen CP 343-1 Advanced, sowie auf Beckhoffseite eine EL6631.

Die Beckhoffseite habe ich konfiguriert.

Bei der CP343-1 kommt, sobald ich die GSD Datei der EL6631 eingefügt und alles konfiguriert habe, ein SF wenn ich online gehe.

Programmtechnisch habe ich noch nichts gemacht, habe aber in einem alten Programm gesehen, dass die Bausteine SFC14 und 15 verwendet wurden.
Die ganzen Handbücher haben auch nichts ergeben, ob ich vorab DBs oder andere Bausteine erstellen muss?

Ich sitze da jetzt schon echt lange dran und hoffe, dass ihr mir helfen könnt...

Gruß

pjoker22
 
Zuletzt bearbeitet:
SFC14/SFC15 funktionieren nicht mit CP343-1, weil die EA-Adressen der Profinet-IO-Teilnehmer nicht im Adressraum der CPU liegen sondern im Adressraum des CP. Du brauchst FC11 PNIO_SEND und FC12 PNIO_RECV

Viele Informationen und Beispielprogramme siehe den Link in meiner Signatur, besonders diese beiden Beispielprojekte:

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hast du eine EL6631 als Profinet Controller und die CP343-1 ist ein Profinet Device? Oder hast du eine EL6631-0010 als Profinet Device und die CP343-1 ist der Profinet Controller?
 
Erst einmal vielen Dank euch!
@PN/DP: D.h. wenn ich eine CPU mit PN hätte würden die SFC Bausteine funktionieren?

@Glasesba: Oh sorry, ich habe eine EL6631-0010. Also Beckhoff als Device und die CP 343-1 Advanced soll als Controller dienen.

Muss man das noch irgendwie speziell deklarieren, dass der CP als Controller dient?

Des Weiteren habe ich immer noch den Fehler des Sammelfehlers sobald ich die GSD der EL in die HW Konfig einfüge und verbinde...
Muss ich vorher spezielle DBs oder anderes anlagen?

Was ich vegessen habe: ich nutze V5.5
Gruß

Pascal
 
Zuerst würde ich prüfen ob auf beiden Seiten
- Die gleiche Version projektiert ist (z.B. als EL6631-0010 V2.31)
- Die gleichen Module konfiguriert sind

Wie wird der Profinet-Gerätename vergeben, fest von TwinCAT oder vom Profinet Controller? Im ersten Fall prüfen ob in Twincat und in Step 7 der gleiche Name konfiguriert ist, im zweiten Fall muss der EL66311-0010 der Gerätename zugewiesen werden (entweder über die Topologie oder manuell).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wenn ich eine CPU mit PN hätte würden die SFC Bausteine funktionieren?
SFC14/SFC15 würden da funktionieren, wenn das Profinet-IO-System bzw. das Profinet-Device an der PN-Schnittstelle der CPU betrieben wird und wenn eine Konsistenz > 4 Byte eingestellt ist. Auf 1/2/4 Bytes kann/muß man mit "L PEB/PEW/PED..." oder "L EB/EW/ED..." bzw "T PAB/PAW/PAD..." oder "T AB/AW/AD..." zugreifen.
Außerdem soll man die SFCs nur verwenden wenn die E/A-Adressen außerhalb des Prozessabbildes liegen oder außerhalb des eingestellten PA aktualisiert werden müssen. Wenn sie innerhalb des OB1-Prozessabbildes liegen, dann kümmert sich schon das Betriebssystem der CPU um die Aktualisierung. Es wäre unnötige Programmlaufzeitverschwendung, wenn man zusätzlich nochmal mit SFC14/SFC15 auf die Peripherie zugreift. mehr Details siehe die Bausteinhilfe zu SFC14/SFC15

Muss man das noch irgendwie speziell deklarieren, dass der CP als Controller dient?
Einfach an dem CP343-1 Rechtsmausklick > Profinet IO-System einfügen
Dann in die Eigenschaften des CP gehen in den Reiter PROFINET und den Hilfe-Button anklicken

Harald
 
Besten Dank!
Ich bekomme zumindest keinen Fehler mehr wenn ich die HW Konfig lade. Woran es jetzt lag ist mir noch ein Rätsel...Ich habe an beiden Seiten die HW nochmal neu projektiert und dann ging es.

Jetzt habe ich aber das nächste Problem:
Ich habe die Beispielprojekte für die FC11 und FC12 geöffnet und das Programm in mein Projekt kopiert. Jetzt kommt jedoch, sobald ich Online gehe die Fehlermeldung: " Mindestens ein aufgerufener Baustein fehlt"
Ein neu einfügen der Bausteine FC11 und FC12 mit neuer Zuweisung hat ebenfalls nicht funktioniert.
Zuvor kam der Fehler " AS-Typ Baustein...."
Ich kann mir jetzt auch nicht erklären, warum der Baustein fehlen soll?


Pasca
 
Jetzt kommt jedoch, sobald ich Online gehe die Fehlermeldung: " Mindestens ein aufgerufener Baustein fehlt"
Komisch, direkt beim Online gehen habe ich noch nie so eine Meldung erhalten, höchstens erst wenn ich einen Baustein öffne, der einen nicht vorhandenen Baustein aufruft (dann den Baustein nach unten durchblättern bis der rot markierte Aufruf des nicht vorhandenen Bausteins kommt). Wo genau erhältst Du die Meldung? Gibt es da auch einen Hinweis, welcher Baustein fehlt? Falls der nicht vorhandene Baustein aufgerufen werden sollte, dann muß auch ein detaillierter Eintrag im Diagnosepuffer der CPU stehen. Schau da mal nach.

Hast Du FC11 und FC12 auch in die CPU geladen?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Okay...Hier mal die Schritte die ich gemacht habe:
- OBs, DBs, etc alles vom FAQ_Profinet in mein Projekt kopiert.
- Adressbereiche überprüft (passen)
-HW Konfig, gespeichert, in Baugruppe geladen und online gegangen> CPU geht in STOP
-Meldung: Soll Baustein geschlossen werden um editieren etc...>JA
-Probiert Projekt zu laden
-Meldung: Die Systemdaten können nicht auf die Baugruppe CPU 314...der Station Simatic 300 geladen warden. D225 ( Der DP- Systemdatenbaustein enthält ungültige Parameter)
-SDB 2000 kann nicht geladen werden.


Den anderen Fehler mit dem aufgerufenen Baustein war zunächst ein Anwenderfehler meinerseits...Der geringen Erfahrung geschuldet...
 
So ein kleines Update:

Die Fehler sind alle weg. Warum auch immer...Ich habe nichts anders gemacht als gestern.
Das bedeutet:
Alle Baugruppen sind im RUN.

Jedoch bekomme ich keine Daten gesendet.
Folgende Einstellungen habe ich vorgenommen:

Code:
      CALL  "PNIO_SEND"
       CPLADDR   :=W#16#100             // address of CP343-1
       MODE      :=B#16#0               //mode PROFINET IO controller
      [COLOR=#ff0000] LEN       :=2     [/COLOR]               //max whole area of output in IO devices
       IOCS      :=P#DB12.DBX0.0 BYTE 3 // for each byte send data one bit
       DONE      :=#tmp_send_done
       ERROR     :=#tmp_send_error
       STATUS    :=#tmp_send_status
       CHECK_IOCS:=#tmp_send_check_iocs
       SEND      :=P#DB30.DBX0.0 BYTE 2 //max whole area of output in IO devices

      CALL  "PNIO_RECV"
       CPLADDR   :=W#16#100             //address of CP343-1
       MODE      :=B#16#0               //mode: IO controller
      [COLOR=#ff0000] LEN       :=2   [/COLOR]                 //max whole area of input in IO devices
       IOPS      :=P#DB12.DBX10.0 BYTE 2    //for each byte sent data one bit
       NDR       :=#tmp_recv_ndr
       ERROR     :=#tmp_recv_error
       STATUS    :=#tmp_recv_status
       CHECK_IOPS:=#tmp_recv_check_iocs
       ADD_INFO  :=MW28
    [COLOR=#ff0000]   RECV      :=DB31.DBW0[/COLOR]            //max whole area of input in IO devices

Rot markiert sind meine Änderungen.
Ich habe in den DB30 die ersten 2 Byte beschrieben um sehen zu können, ob etwas gesendet wird.
Meine Beckhoff sendet wohl permanent
In der HW Konfig habe ich für die EL6631 1 Word Eingang sowie 1 Word Ausgang deklariert ( beide Adresse 272...273)
Wenn ich jetzt online gehe warden jedoch keine Daten gesendet. Weder auf Beckhoffseite noch S7 kann ich irgendwelche Änderungen sehen...

Im Anhang mal mein Projekt.


EDIT: Muss ich die DBs noch mit den Ein/Ausgängen irgendwie verknüpfen? Oder machen das die FCs? Denn: Ich deklariere ja nur die Adresse des CPs 256, die geht ja nur bis 271, und nicht die der Beckhoff (272 bis 273). Müssen die noch anders verknüpft werden?

Gruß

Pascal
 

Anhänge

  • S7_pro5.zip
    370,6 KB · Aufrufe: 7
Zuletzt bearbeitet:
Okay Problem gelöst.
Ich habe einen Satz in der Beschreibung der FCs übersehen, in dem steht, dass die Adresse der PN Devices bei 0 beginnen muss...:?

Vielen Dank für eure Hilfe!

Gruß

Pascal
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mist...
Jetzt hab ich doch nochmal eine Frage:
Wieso lassen sich die Daten beim FC12 Recv nur mit Pointer ansprechen?

Wenn ich P#DB31.DBX0.0 Byte 2 angebe geht es, bei DB31.DBW0 kommt immer der Fehler 8184.
Oder fehlt dort noch eine Angabe?
Ich meine irgendwo schon einmal etwas dazu gelesen zu haben, kann es aber nicht mehr finden...

EDIT: Liegt wohl am Typ ANY? Aber: Warum kann ich kein Word direct abspeichern? Bekomme von der Beckhoff 1Word Eingang und würde den eigentlich gerne auch wieder als WORD abspeichern ohne jetzt 2 Byte miteinander zu verbinden...
Gibt es dazu eine Alternative?
 
Zuletzt bearbeitet:
Wenn ich P#DB31.DBX0.0 Byte 2 angebe geht es, bei DB31.DBW0 kommt immer der Fehler 8184.
F1 - Hilfe zum FC12 PNIO_RECV > Erläuterung der Formalparameter
Parameter: RECV [...] Datentyp: ANY (als VARTYPE ist nur BYTE zugelassen)

Packe um Dein DBW0 im DB31 eine Struktur und gib die Struktur am Eingang RECV an, dann wird der ANY-Pointer automatisch zu "P#DB31.DBX0.0 Byte 2" gewandelt:
"DB31":
Code:
+0.0 MyPNDevice_Inputs : STRUCT
+0.0   Statuswort_1 : Word
=2.0 END_STRUCT
+2.0 ...
Code:
CALL "PNIO_RECV"
 ...
 RECV:="DB31".MyPNDevice_Inputs //P#DB31.DBX0.0 Byte 2

Eigentlich sollte man Speicherbereiche für ANY immer symbolisch angeben, dann wandelt der Programmeditor die Angabe automatisch in einen passenden ANY. Wenn der Bereich eine STRUCT ist dann wird der Datentyp und die Länge immer als BYTE angegeben.
Wenn Du den/die Speicherbereiche für PNIO_RECV und PNIO_SEND schön strukturierst und symbolisch an die FCs übergibst, dann geht das automatisch richtig, z.B.:
Code:
DATA_BLOCK "PNIO_IO"
  STRUCT
    Inputs : STRUCT           //Eingänge für PNIO_RECV
      Device_1 : STRUCT
        StatusWort_1 : WORD ;
      END_STRUCT ;
      Device_2 : STRUCT
        StatusWort_1 : WORD ;
        StatusWort_2 : WORD ;
      END_STRUCT ;
      Device_3 : STRUCT
        Byte_1 : BYTE ;
        Byte_2 : BYTE ;
      END_STRUCT ;
    END_STRUCT ;

    Outputs : STRUCT          //Ausgänge für PNIO_SEND
      Device_1 : STRUCT
        SteuerWort_1 : WORD ;
      END_STRUCT ;
      Device_2 : STRUCT
        SteuerWort_1 : WORD ;
        SteuerWort_2 : WORD ;
      END_STRUCT ;
      Device_3 : STRUCT
        Datenbytes : ARRAY  [1 .. 10 ] OF BYTE ;
      END_STRUCT ;
    END_STRUCT ;
  END_STRUCT ;
END_DATA_BLOCK
Code:
CALL "PNIO_RECV"
 ...
 RECV:="PNIO_IO".Inputs

L "PNIO_IO".Inputs.Device_1.StatusWort_1
T DB31.DBW0
...

L DB32.DBW0
T "PNIO_IO".Outputs.Device_1.SteuerWort_1

CALL "PNIO_SEND"
 ...
 SEND:="PNIO_IO".Outputs

Harald
 
Hallo,
ist es so das mit SP323-1 brauchen wir EL6631-0010 - SLAVE, wenn haben wir EL6631-MASTER brauchen wir auch PN/PN koppler?
 
Zuletzt bearbeitet:
Zurück
Oben