Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 10 von 10

Thema: Kommunikation S7-1500 mit PN Device

  1. #1
    Registriert seit
    25.01.2012
    Beiträge
    125
    Danke
    28
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe ein Projekt zur Ansteuerung eines Profinet-Slaves bekommen. Das Projekt ist vorher in Step7 entwickelt worden und soll nun für das TIA Portal aufgerüstet werden.

    Das Problem tritt bei der Kommunikation mit dem PROFINET IO-Device auf.
    In Netzwerk 2 des FB32 wird SFC15 (DPWR_DAT) aufgerufen. In Step 7 wurde der RECORD Parameter mittels "zusammengebastelten" Any-Ptr belegt, was auch damals wunderbar funktioniert hat. Allerdings funktioniert das in TIA nicht mehr und er verlangt den Datentyp VARIANT.

    Ich habe mich schon durch unzählige Hilfen gelesen, aber es möchte nicht funktionieren (Fehler: 8092 wird immer zurückgeliefert)
    Soweit ich das verstanden habe kann ich doch dort die Struktur angeben, welche ich übertragen möchte ohne vorher einen Pointer zu erstellen.

    Code:
          CALL  DPWR_DAT
             LADDR   :=264
             RECORD  :="InstDB".Head_1.OutData
             RET_VAL :=#Head_1.Ret_Val_SFC15
    In der BLKMOV Funktion wird neuedings auch VARIANT verlangt. In der Hilfe wird mittels Pointer und der Anfangsadrersse der zu übertragenden Daten gearbeitet. Aber mit den neuen optiomierten FB's ist es mir doch (ohne extra Umstellung der Bausteineigenschaften) eigentlich nicht "erlaubt" mit den absolut Adrerssen zu arbeiten, erwünscht ist das Arbeiten mit den symbolischen Namen.

    Die Hilfe verwirrt mich, warum wird es so verlangt aber selbst in den Hilfen anders durchgeführt??

    Habe das Projekt mal angehängt und im FB den Aufruf in Netzwerk 2 markiert.

    Vielen Dank schon mal im Voraus

    Gruss
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren Kommunikation S7-1500 mit PN Device  

  2. #2
    Registriert seit
    02.04.2013
    Beiträge
    143
    Danke
    7
    Erhielt 22 Danke für 20 Beiträge

    Standard

    Die Fehlermeldung besagt doch: "Am Parameter RECORD wurde ein anderer Datentyp als (Array of) Bitfolge oder Ganzzahl angegeben."

    Du kannst keinen STRUCT übergeben... da liegt das Problem...
    (und ich glaube, bin mir aber grad nicht sicher, mag das TIA nicht, wenn man Sachen aus einem Instanz-Datenbaustein lesen, schreiben will, sofern es nicht im FB selber ist. Aber wie es mit DPWR_DAT im FB aussieht kann ich nicht sagen).
    Aber probier doch einfach statt RECORD:= "InstDB".Head_1.OutData das hier RECORD:=#Head_1.OutData

    Nur der Datentyp wäre noch falsch...
    Geändert von shutdown_TIA12 (21.11.2013 um 10:52 Uhr)

  3. #3
    TimeOUT ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.01.2012
    Beiträge
    125
    Danke
    28
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Okay

    Ich habe noch einen globalen DB erstellt (bereits im hochgeladenen Projekt "DBTest" [DB1])
    Dort verwende ich eine UDT, welcher meine Output-Daten speichert.
    Müsste ich nicht dann mit RECORD= "DBTest".Data das Problem beheben?
    Funktioniert aber leider auch nciht.

  4. #4
    Registriert seit
    02.04.2013
    Beiträge
    143
    Danke
    7
    Erhielt 22 Danke für 20 Beiträge

    Standard

    Übergib doch mal ein Datentyp als (Array of) Bitfolge und teste den Austausch mal so

  5. #5
    TimeOUT ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.01.2012
    Beiträge
    125
    Danke
    28
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo shutdown,

    das ghabe ich in der Zwischenzeit probiert und so funktioniert es auch.
    Allerdings finde ich, dass das nicht so eine schöne Lösung ist, da meine Bytes in der Struktur je nach Funktion einen Namen hatten.
    In einem Array haben sie ja alle den gleichen namen nur unterschiedliche Indizes.
    Wenn es allerdings nicht anders funktioniert, muss es wohl so sein.

    Danke dir

  6. #6
    Registriert seit
    02.04.2013
    Beiträge
    143
    Danke
    7
    Erhielt 22 Danke für 20 Beiträge

    Standard

    Definier dir mal einen Struct mit Bools... Wenn das gehen sollte, dann lass mal in deinem Struct die Dwords weg. Vllt mag er ja nur die nicht

  7. #7
    TimeOUT ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.01.2012
    Beiträge
    125
    Danke
    28
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    habe es jetzt hinbekommen.
    Eine Kleinigkeit wäre da allerdings noch. Ich benutze BLKMOV um die 64 Byte aus dem einem Array im "TestDB" in ein anderes 64-Byte Array im "TestDB" zu kopieren.

    BLKMOV möchte aber keine symbolischen Adressen an den Eingängen übergeben bekommen... sondern nur absolute mittels Pointer...
    Aber spricht das nicht gegen das optimierte Zugriffsprinzip??
    In meinem Fall:

    Code:
          CALL  BLKMOV
             blk_type:=Variant
             SRCBLK  :=P#DB2.DBX256.0 BYTE 64 
             RET_VAL :=#RetVal_SFC20
             DSTBLK  :=P#DB2.DBX64.0 BYTE 64
    Optimaler wäre doch aber:

    Code:
          CALL  BLKMOV
             blk_type:=Variant
             SRCBLK  :="DBTest2".Memory //P#DB2.DBX256.0 BYTE 64 
             RET_VAL :=#RetVal_SFC20
             DSTBLK  :="DBTest2".Head1_InData //P#DB2.DBX64.0 BYTE 64
    oder nicht?
    Zweiteres funktioniert nur wenn DB nicht optimiert ist
    Angenommen der Name/Nummer des DB's wird geändert passt TIA doch die Pointer nicht autom. an!?

    Gruss

  8. #8
    Registriert seit
    02.04.2013
    Beiträge
    143
    Danke
    7
    Erhielt 22 Danke für 20 Beiträge

    Standard

    Capture_kk.PNG


    Code:
          CALL  MOVE_BLK
             value_type:=Byte
             count_type:=UInt
             IN    :="DBTest2".Memory[0]
             COUNT :=10
             OUT   :="DBTest2".Head1_InData[0]
    Wie schaut es mit dieser Anweisung aus?

    Vllt wäre MOVE_BLK_VARIANT eine Alternative. Schau in der Hilfe nach, wie was eingestellt werden muss.

    BLKMOV findest du unter "Verschieben --> Weitere" und dieser arbeitet mit Pointer, also absolut... Da steht auch als Hindweis:
    Hinweis Die Variablen der Anweisung können Sie nur in Datenbausteinen verwenden, bei denen das Attribut "optimierter Bausteinzugriff" nicht gesetzt ist. Wenn die Variable mit der Remanenzeinstellung "Im IDB setzen" deklariert wurde, können Sie die Variablen auch "mit optimiertem Zugriff" verwenden.
    Und wenn mich nicht alles täuscht, ist das nicht "beste" Variante
    Geändert von shutdown_TIA12 (22.11.2013 um 13:21 Uhr)

  9. Folgender Benutzer sagt Danke zu shutdown_TIA12 für den nützlichen Beitrag:

    TimeOUT (22.11.2013)

  10. #9
    TimeOUT ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.01.2012
    Beiträge
    125
    Danke
    28
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Super!!

    Ich hatte es mit MOVE_BLK auch schon probiert, aber da hat es nicht funktioniert...
    Grund: Mir war nicht bewusst, dass man die beiden Auswahlkästchen auch eintragen muss Peinlich
    Aber so funktioniert es, auch mit optimierten Zugriff.

    Perfekt

    Vielen Dank!!

  11. #10
    TimeOUT ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.01.2012
    Beiträge
    125
    Danke
    28
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Eine Frage hätte ich dann doch nochmal:

    Gibt es im TIA Portal eine vorgefertigte Funkltion, welche mir auch Strukturen mit unterschiedlichen Datentypen an eine Baugruppe überträgt?
    Oder muss ich notgedrungen meine "gemischten" Datentyp Strukturen auflösen und in Byte_Arrays umwandeln?

    Gruß

Ähnliche Themen

  1. TIA Erfahrungen mit der S7-1500
    Von statix im Forum Simatic
    Antworten: 30
    Letzter Beitrag: 24.11.2013, 09:29
  2. I-Device mit zwei I-Controller
    Von Zoomy im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 10.04.2012, 18:02
  3. Antworten: 8
    Letzter Beitrag: 19.07.2011, 17:11
  4. mc device
    Von hwebi1 im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 09.04.2008, 21:26
  5. Mit einer MicroLogix 1500 übers Internet verbinden?
    Von HSThomas im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 26.09.2007, 08:56

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •