TIA Anybus Communicator - Zugriff auf EA-Module (Lesen/Schreiben)

BenBVBler

Level-1
Beiträge
15
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute, ich brauche dringend Hilfe bei einem Problem:

Ich nutze einen Anybus Communicator, der mir CAN Nachrichten auf Profinet umwandelt. Über Profinet soll dann die Nachricht an eine S1200 übermittelt werden und umgekehrt.

Ich nutze das TIA Portal V13, den Converter habe ich mittels GSD Datei eingefügt und laut TIA funktioniert alles richtig (Keine Fehler beim Online Verbinden, Converter wird mit grünem Haken angezeigt, Submodule ebenso)

Testweise habe ich über CANBus ein Byte an den Communicator gesendet. Funktioniert problemlos und kommt auch an.
Der Communicator bietet IN- und OUTPUT Speicherbereiche mit jeweils 512 Bytes.

Das Gesendete Byte wird im Communicator in der Adresse 0x001 im INPUT Register abgelegt. Dieses Byte möchte ich nun "lesen" und abspeichern um zu testen, ob die Kommunikation zwischen S1200 und Communicator funktioniert.


Genau das gleiche möchte ich umgekehrt auch noch machen: Ich möchte über das TIA Portal einen Wert vorgeben (Forcen?), dieser soll in das Output-Register des Communicator geschrieben werden.

Im TIA Portal habe ich dann unter der dezentralen Peripherie -> Profinet-IO-System->Anybus Converter ein 1-Byte-Input-Modul aus dem Katalog des Converter angelegt mit der Startadresse 1 und der Endadresse 1.
Ebenso das 1-Byte-OutputModul mit der StartAdresse 512 und Endadresse 512.


Wie Lese und beschreibe ich diese Module ? Gibt es dafür Bausteine oder ähnliches ? Bin absoluter Neuling im TIA Portal und kenne mich nur beschränkt aus.


Für eure Hilfe im Voraus Besten Dank! :D

lg Ben
 
Einfach auf EB[Adresse] zum Lesen und AB[Adresse] zum Schreiben zugreifen.
EB - Eingangsbyte: CAN->PROFINET->Eingangsbereich-S71200
AB - Ausgangsbyte: Ausgangsbereich-S71200 ->PROFINET->CAN

Also laut deinen Zahlen oben von EB1 lesen und auf AB512-Schreiben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey Danke für die Antwort, könntest du das für mich noch etwas weiter ausführen ? was bedeutet EB und was genau muss ich da machen ? :D

Edit: EB steht für Eingangsbyte :ROFLMAO: wie genau realisiere ich den Zugriff ?
 
Zuletzt bearbeitet:
Am einfachsten, nur zum Probieren ohne SPS-Programm, reicht die Variablen-Tabelle. Heißt in TIA Beobachtungs-Tabelle im Baummenü der CPU rechts.
Da kannst du denn EB1 eintippen und beobachten und die AB mit einem Steuerwert belegen.

Wenn du auf Bits zugreifen willst geht auch E1.0 .. E1.7 und A512.0 .. A512.7.
 
Was für ne CPU denn? 512 ist bei den 300ern standardmässig nicht mehr im prozessabbild.
vielleicht ein MB auf ein AB transferieren dann das MB verarbeiten.

mfG René
 
Nutze aktuell die S-1200 mit Profinet Anbindung.


habe es jetzt geschafft mit Hilfe des Befehls "DPWR_DAT" ein einzelnes Byte zu schreiben ! :D


Nur mit dem Lesen mag das nicht klappen. Könnte es daran liegen, dass ich mit "DPRD_DAT" versuche nur ein Byte zu lesen ? meine mal etwas gelesen zu haben, dass man mindestens 5 Bytes lesen muss ...

Beobachtungstabelle hab ich angelegt mit den beiden Variablen. funktioniert jedoch nur für die Schreibe-Variable :(

lg Ben
 
habe es jetzt geschafft mit Hilfe des Befehls "DPWR_DAT" ein einzelnes Byte zu schreiben ! :D
Ich kenne das TIA und die S7-1200 nicht genug, doch das dürfte eigentlich gar nicht funktionieren. Oder ersetzt TIA freundlicherweise solche dämlichen ;) Konstrukte des Programmierers durch einfache Einzelbyte-Transfers? DPWR_DAT und DPRD_DAT sollten beide nur für 3 oder >= 5 Byte funktionieren. Oder hast Du für das Ausgabemodul eine größere Konsistenz als 4 Byte projektiert und schreibst tatsächlich die komplette Modullänge?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe quasi eine Variable angelegt und auf "RECORD" gelegt. Anschließend steuere ich den RECORD-OPERRANDEN auf einen gewünschten Wert.
Als Modul hab ich ein 1-Byte-OUTPUT Modul gewählt mit eben der Adresse 512.

Die Daten kommen am Converter an und werden dann auch weiter verschickt. Die Werte stimmen überein.


Wie gesagt funktioniert lediglich das Lesen nicht. Selbst über die Beobachtungstabelle ohne Bausteine keine Änderung...

Hat da vielleicht jemand eine Idee ?

EDIT: Habe nun mal 8 Byte Modul erstellt. Doch wie lese ich diese 8 Byte aus ? :0
 
Zuletzt bearbeitet:
Zeig uns doch mal bitte ein paar Screenshots von deiner Hardware-Konfiguration, den Modulen und Adressen, von deinem Programmversuch sowie der Beobachtungs-Tabelle.
Von der Tabelle wenn möglich einen wo du gerade Online bist und versuchst EB1 zu beobachten. Ich kann mir nicht vorstellen dass das nicht geht.

Sonst fischen wir hier ein wenig im Dunkel-Trüben. ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Beobachten.jpg DPWR_DAT.jpg 001byte_modul.png


Anbei mal ein paar Screenshots. Wie gesagt wenn ich über DPWR_DAT einen Wert vorgebe (hier zB. 66) dann kommt der in meinem Converter auch an !


die Variable WERT_1 müsst eigentlich auf "100" stehen. Aber diese steht beständig auf 0.


Das 8-Byte Input-Modul zum Lesen hat die Eingänge 68 bis 75. HW-Kennung ist die 276 (=HEX 114)

das 1-Byte OutputModul zum schreiben hat die Adresse 512 und HW Kennung 280 (= HEX 118 )


lg Ben
 
Zuletzt bearbeitet:
Das Problem ist hier das verwendetete Prozessabbild TPA1. Damit der Zugriff über QB512 und IB68 geht müsstest du das Prozessabbild auf OB1 (heißt es glaub ich) umstellen.
Ein Schreiben auf AB512 (direkt per MOVE-Befehl) würde auch nicht bei deinem Kommunikator ankommen.
Sonst müsstest du statt über das Prozessabbild IB68 direkt über den Peripheriebereich PIB68 (bin mir jetzt nicht 100pro wie die Schreibweise in TIA ist) zugreifen.
Die DPWR/RD_DAT greifen auch direkt auch den Peripheriebereich zu, deshalb funktionieren diese und der Zugriff per IB/QB nicht

Mit dem Zugriff über DBRP/WR_DAT bist du aber auch gut unterwegs. Das dein DPRD-DAT nicht geht ist auch klar.
Die Ursache findest du leicht heraus in dem du den Fehlercode "32945" auf HEX-Darstellung umschaltest und in der F1-Hilfe zum DPRD-DAT (einfach Baustein markieren und F1) nachsiehst. ;)
 
Das mit dem DPRD_DAT hab ich schon gesehen, nur weis ich nicht so genau wie ich meine 8 LESE-bytes in eine Variable schreiben soll. :confused: möchte ja am alle 8 Werte einzeln ansehen können :D

Zum Prozessabbild: Ich habe bereits OB1 als Organisationsbaustein gewählt, jedoch lassen sich nur TPA 1 bis 4 sowie "TPA OB SERVO" auswählen :(

Prozessabbild.jpg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zum Prozessabbild: Ich habe bereits OB1 als Organisationsbaustein gewählt, jedoch lassen sich nur TPA 1 bis 4 sowie "TPA OB SERVO" auswählen :(
Hab grad nachgeschaut, das müsste auf alles auf "Automatische Aktualisierung" gestellt werden. Sowohl der Organisationsbaustein als auch das Teilprozessabbild.

Das mit dem DPRD_DAT hab ich schon gesehen, nur weis ich nicht so genau wie ich meine 8 LESE-bytes in eine Variable schreiben soll.
Für den Anfang: "Array[1..8] of Byte" in der Spalte Datentyp eingeben. Ich glaub in TIA sind Arrays in den Merken schon zugelassen.
Sonst einen Datenbaustein verwenden. Später könnte man dann einen STRUCT oder einen UDT nehmen.
 
Anbei mal ein paar Screenshots. Wie gesagt wenn ich über DPWR_DAT einen Wert vorgebe (hier zB. 66) dann kommt der in meinem Converter auch an !
Du steuerst ja den %QB512 - ich vermute, der DPWR_DAT hat mit der Ausgabe gar nichts zu tun. Funktioniert es auch, wenn Du an RECORD ein Merkerbyte anschließt?
Kannst Du mal den DPWR_DAT von %QB512 zu LADDR 16#118 ganz weglassen und einfach nur das %QB512 (oder %QB512:p) steuern?

Harald
 
Hab es eben mal über eine Beobachtungstabelle versucht.

Hab es nun geschafft die Werte auszulesen, und dort kann ich ebenfalls Werte steueren, wie auch den QB512.


denke daran wird das liegen. und der Baustein wird übergangen schätze ich.
 
Zurück
Oben