- Steuerungssysteme
- SIEMENS - PLC
- ErstellerWolfgang14
- Erstellt am21 November 2018
W
Wolfgang14
Level-1
- Beiträge
- 175
- Reaktionspunkte
- 5
- 21 November 2018
- #1
-> 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
PN/DP
User des Jahres 2011-2013; 2015-2017; 2020-2022
FAQ-Team
Power-User
- Beiträge
- 23.479
- Reaktionspunkte
- 7.370
- 21 November 2018
- #2
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
OP
W
Wolfgang14
Level-1
- Beiträge
- 175
- Reaktionspunkte
- 5
- 21 November 2018
- #3
-> Hier kostenlos registrieren
Irgendwie will das ganze nicht funktionieren.
Ich habe mal ein paar Bilder meiner Einstellungen mit angehangen.
Im DB weiß ich nicht wie ich es deklarieren muss
.
PN/DP
User des Jahres 2011-2013; 2015-2017; 2020-2022
FAQ-Team
Power-User
- Beiträge
- 23.479
- Reaktionspunkte
- 7.370
- 22 November 2018
- #4
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
OP
W
Wolfgang14
Level-1
- Beiträge
- 175
- Reaktionspunkte
- 5
- 22 November 2018
- #5
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 ?
Zuletzt bearbeitet:
PN/DP
User des Jahres 2011-2013; 2015-2017; 2020-2022
FAQ-Team
Power-User
- Beiträge
- 23.479
- Reaktionspunkte
- 7.370
- 22 November 2018
- #6
-> 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.0I0.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:
OP
W
Wolfgang14
Level-1
- Beiträge
- 175
- Reaktionspunkte
- 5
- 22 November 2018
- #7
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 ?
volker
Supermoderator
Teammitglied
- Beiträge
- 5.850
- Reaktionspunkte
- 1.047
- 22 November 2018
- #8
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.
F
Fabpicard
Level-2
- Beiträge
- 754
- Reaktionspunkte
- 106
- 22 November 2018
- #9
-> 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
OP
W
Wolfgang14
Level-1
- Beiträge
- 175
- Reaktionspunkte
- 5
- 22 November 2018
- #10
Vielen Dank jetzt läuft alles super