TIA I-Device, IO-Controller Kommunikation

Wolfgang14

Level-1
Beiträge
175
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich beschäftige mich derzeit mit der Kommunikation über Profinet speziell mit der Möglichkeit IO-Controller und I-Device.

Mittlerweile habe ich meine beiden Geräter CPU´s 1200er im Reiter Geräte und Netze miteinander verbunden.

Meinem I-Device habe ich die Transferbereiche I 1..10 10 Bytes und Q 1..10 10 Bytes verpasst.

Dies funktioniert soweit auch problemlos. Jetzt geht es darum die Bytes "Auszuwerten" auf zum Beispiel Bits. Mir ist bekannt das ich mit einem Byte 8 Bits übertragen kann.

Leider verzweifle ich gerade daran die Bytes aufzuschlüsseln. Mein Lösungsansatz wäre dies über einen Globalen DB zu machen jedoch weiß ich nicht was ich dort hineinschreiben muss. Um von meinen Bytes auf Bits schließen zu können.

Könnte mir dies nochmal einer verständlich erläutern ? Ich wäre für jede Hilfe Dankbar


Mit freundlichen Grüßen
 
Deine Eingänge kommen doch auf %EBx ... an und die Ausgänge liegen in %ABy ... - Du kannst ganz einfach die Bits in den EB und AB adressieren: %Ex.0, %Ex.1 ... und %Ay.0, Ay.1 ...

Vermutlich kannst Du auch 2 UDT (PLC-Datentypen) mit der genauen Struktur der E-Bits und A-Bits erstellen und mit den E- bzw. A-Adressen verknüpfen.

Harald
 
Als Transferbereiche hast Du jeweils 10 Byte festgelegt, im DB jeweils 11 Byte - das passt schon mal nicht zusammen.

Den DB brauchst Du eigentlich gar nicht, Du kannst auch direkt auf die E/A zugreifen: %IB1, %IB2 ... %IB10, %I1.0, %I1.1 ... %I10.7, %QB1, %QB2 ... %QB10, %Q1.0, %Q1.1 ... %Q10.7

Wenn Du einen DB zwischen Dein Programm und die E/A zwischenschalten willst, dann muß Du die Werte aus den Eingangsbytes in den DB und vom DB in die Ausgangsbytes kopieren, z.B. mit MOVE.

Harald
 
Ok....

Ich habe jetzt mal im I-Device meinen Eingang I0.0 "Schalter EIN" angelegt. Wie bekomme ich den denn einem Byte zugewiesen ?
%I0.0=%QB1 dort bekomme ich immer die Meldung "Der Datentyp Byte des Aktualparameters passt nicht zum Datentyp BOOL der Formelparameters". Das selbe Problem habe ich beim Auswerten im Controller dort wollte ich folgendes tun %IB1=%A0.0 das geht allerdings auch nicht.


Ist eine Bezeichnung am UND Baustein Richtig ?

IB.jpg
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich weiß jetzt gerade nicht, wie in TIA-FUP eine einzelne Bitzuweisung genau aussieht, doch Du könntest im IO-Controller ungefähr sowas machen:
Code:
       %Q1.1
       +---+
%I0.0--| = |
       +---+
Damit würdest Du den Zustand von I0.0 "Schalter EIN" an Q1.1 ausgeben (Bit kopieren), der im Transferbereich zum I-Device liegt. Der Controller sendet die Ausgangsbytes QB1 bis QB10 inklusive dem Bit Q1.1 an das I-Device. Im I-Device werden die als IB1 bis IB10 empfangen und Du kannst das Signal vom Schalter als %I1.1 weiter verknüpfen.

Code:
        Transferbereich          Transferbreich
         IO Controller              I-Device

          Q1.0  \                    /  I1.0
I0.0 ---> Q1.1   |     10 Byte      |   I1.1 ---> Signal des Schalters I0.0 des IO Controllers
          Q1.2   |    QB1...QB10    |   I1.2
          ...     >  ----------->  <    ...
          Q10.5  |                  |   I10.5
          Q10.6  |                  |   I10.6
          Q10.7 /                    \  I10.7

PS: man kann nicht nur Inputs an das I-Device senden (und umgekehrt). Wenn Du etwas anderes als I0.0 senden willst, dann ersetze das I0.0 einfach durch Dein Signal, z.B. %M34.5 oder "MeinDB".MeinBit oder den Ausgang einer Verknüpfung.

Harald
 
Zuletzt bearbeitet:
Vielen Dank ! Jetzt klappt es. Ich hatte viel zu kompliziert gedacht gehabt.

Ich hätte eigentlich nur noch eine Frage wie kann ich es machen wenn ich Analog Werte übertragen will ?
 
genauso.
AW9 -> EW9 im i-device.

das sind in deinem transferbereich dann ab9/10 bzw eb9/10
es ist dabei völlig egal ob im transferbereich byte oder word angegeben sind.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du musst einfach einmal Umdenken.
IB besteht aus Input und Byte
IW besteht aus Input und Word
I besteht aus einem Einzelnen Input, also ein Bool ;)

Solange du nicht mit IW10 auf die Bytes 10 und 11 zugreifst, wobei es eben das 11te Byte ja nicht gibt,
(man sollte, kann aber, auch nicht auf IW5 zugreifen, wird später ultra kompliziert das wieder zu verstehen)

MfG Fabsi
 
Zurück
Oben