# B&R Modbus RTU



## Stephan_92 (2 Juni 2019)

Servus zusammen,

ich sitze gerade an meinem ersten B&R Projekt und möchte mittels einer X20CS1030 (RS485) Karte auf einen Umrichter zugreifen. (Eigentlich Bocksimpel, 8 Variablen lesen)




Jetzt habe ich ein Problem mit dem Devicestring ("FB_MBMOpen.pDevice:=ADR('SS1.IF1');") des MBMOpen Bausteins der laut Hilfe, die Verbindung zum Umrichter öffnet.

Ich werde allerdings aus der Hilfe nicht schlau was ich da genau jetzt einstellen soll.



Hat hier jemand eine Idee was ich falsch mache?


By the way: Der status Output des FB hat den Status 8252 -> Der Devicestring ist falsch.


Datenobjekt:



Code:



Vielen Dank im voraus


----------



## ioswitch (5 Juni 2019)

Hallo Stephan,

der Fehler 8252 deutet darauf hin, dass dein .pDevice falsch ist.

Dein Device-String sollte folgendermaßen lauten: *ADR('IF4.ST1.ST6.IF1')
*Das ergibt sich daraus, wenn du von der SPS ausgehend die Steckplatz-Bezeichnungen verfolgst, bis hin zur seriellen Schnittstelle.
IF4 = CAN-Bus
ST1 = erster CAN-Teilnehmer
ST6 = sechstes Modul am X2X Bus
IF1 = Schnittstellenbezeichnung der seriellen Schnittstelle

EDIT:
Am besten du fährst mit der Maus über die serielle Schnittstelle, dann sollte ein Tooltip kommen wo der Device String nochmals angezeigt wird.

Mfg
Markus
B&R Dienstleister
http://www.ioswitch.at


----------



## Stephan_92 (25 Juli 2019)

Danke für die Antwort, bin gerade erst wieder an die Anlage gekommen.

Ich habe das jetzt so umgesetzt -> Funktioniert aber leider immer noch nicht. Irgendwas übersehe ich oder habe ich vergessen.




Ich hab ganz stark im Verdacht das ich im Datenobjekt einen Fehler habe.



Ich verstehe noch nicht ganz wo ich diese Taskklasse aufrufen, bzw. verwenden muss das die auch bearbeitet wird, evtl. ist das auch schon das Problem.

Danke im voraus.


----------



## Stephan_92 (29 August 2019)

Servus ich bin gerade nochmal an er Anlage, Modbus läuft immer noch nicht, aber ich wollte mal meine aktuellsten Versuche hier zeigen.

Hier der Baustein mit dem B&R eigenen Beispiel und der Statusmeldung 8252. Mit der Hilfe kann ich nicht viel anfangen, da ich ja, dass eingestellt habe was wir oben geschrieben haben.


Hier noch das Datenmodul. Es sollen Messwerte aus einen Umrichter ausgelesen werden, deshalb auch die als Funktionscode. ausgelesen sollen im ersten Anlauf Byte 188 mit Länge 1 und Byte 226 mit Länge 1.


Hier der Devicestring, soweit ich das verstanden habe.



Hier die Konfiguration der Modbuskarte.



Grüße Stephan


----------



## Stephan_92 (9 Dezember 2019)

Servus zusammen,

nach langer Recherche bin ich jetzt mal ein Stückchen weiter gekommen (Glaub ich).
Für die Bibliotheken DVFrame und DRV_mbus benötigt man als Funktionsmodell am "Modbus-Gateway" -> Stream.
In meinem Hardwareaufbau 
C30 PowerPanel -> CAN -> X20BR7300 -> X2X -> X20CS1030, kann dieser allerdings nicht verwendet werden, da hier nur das Funktionsmodell CANIOBuscontroller verwendet werden kann, was dem Flatstream entspricht.

Jetzt komm ich an den Punkt den ich als B&R Neuling nicht kapiere, die Verwendung der Bibliothek "AsFltGen". 

Ich führe den Thread weiter um evtl Leuten zu helfen die mal an dem gleichen Punkt stehen wie ich. Bei meiner Recherche im Internet hab ich nichts hierzu gefunden. Und vielleicht kann mir ja jemand weiterhelfen


----------



## hilch (12 Dezember 2019)

an dieser Stelle kannst du eigentlich aufhören, da das "Streaming" nur bei IF- Karten oder bei CS- Karten direkt am X2X einer CPU funktioniert.
Lösung:
a) du schreibst dir eine Modbus- Kommunikation selbst und fütterst damit die jeweils 7 Bytes in Lese- und Schreibrichtung des IO- Mappings
b) du verwendest ein C30, dass eine eingebaute RS422/485 hat
c) du verwendest ein Frequenzumrichter, der ein CANopen- Interface hat (z.B. ACOPOSinverter)


----------



## Michael.Uray (16 Dezember 2019)

hilch schrieb:


> an dieser Stelle kannst du eigentlich aufhören, da  das "Streaming" nur bei IF- Karten oder bei CS- Karten direkt am X2X  einer CPU funktioniert.



Das ist nicht ganz korrekt, denn der Stream/Cyclicstream Mode einer  X20CS1030 funktioniert grundsätzlich auch hinter einem X20BC0083 am  Powerlink, allerdings eben nicht hinter einem X20BC0073 via CAN Bus wie er hier in  Verwendung ist.



hilch schrieb:


> an dieser Stelle kannst du eigentlich aufhören, da das "Streaming" nur bei IF- Karten oder bei CS- Karten direkt am X2X einer CPU funktioniert.
> Lösung:
> a) du schreibst dir eine Modbus- Kommunikation selbst und fütterst damit die jeweils 7 Bytes in Lese- und Schreibrichtung des IO- Mappings
> b) du verwendest ein C30, dass eine eingebaute RS422/485 hat
> c) du verwendest ein Frequenzumrichter, der ein CANopen- Interface hat (z.B. ACOPOSinverter)



Hier scheint mir a) unter Verwendung der AsFltGen Library eine gute Lösung zu sein, sollte die HW bereits vorgegeben sein.
Das Modbus Protokoll ist nicht sonderlich komplex und dazu lässt sich einiges im Internet finden.


----------



## Stephan_92 (18 Januar 2020)

Vielen dank euch,

aber das ausprogrammieren der Modbus Kommunikation, will ich nicht machen. 
Bin jetzt auf eine X20CP0482 mit X20PS9600 und dem vorher schon verwendeten X20CS1030 umgestiegen. 
Jetzt läuft es soweit.

Danke trotzdem


----------

