Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Modbus RTU Diagnosemöglichkeiten

dkeipp
2018-08-13
2018-08-17
  • dkeipp - 2018-08-13

    Hallo zusammen,

    ich habe hier eine Pigeon Steuerung (Noch mit Demo Runtime) mit eingebauter RS485 Schnittstelle und bekomme diese nicht zum laufen. Ich möchte einen Solarregler abfragen, welcher per Modbus am PC einwandfrei funktioniert.
    Ich habe die Schnittstelle entsprechend konfiguriert, aber bekomme die Modbuskommunikation nicht zum laufen. Als Status wird nur Bus läuft nicht und Busfehler angezeigt.
    Welche Diagnosemöglichkeiten gibt es denn? Kann ich mir in der Linux Konsole anzeigen lassen ob die Runtime tatsächlich etwas an die richtige Schnittstelle sendet? oder muss ich mir ein Kabel zwischen Pigeon und PC machen?

    Gruß
    Dennis

     
  • dkeipp - 2018-08-15

    Ich habe jetzt mal etwas weiter gespielt. Neben der eingebauten RS485 habe ich mir noch ein USB --> RS485 Adapter besorgt. Dieser Adapter funktioniert auf anhieb mit meinem Windowsrechner. Ich kann den Modbus Slave auslesen. An dem Raspberry, bzw. Pigeon bringt mich der Adapter aber auch nicht weiter. In Codesys wird mir nur mitgeteilt das der Bus nicht läuft.
    ttyRS485 ist die interne Schnittstelle, ttyUSB1 der externe Adapter. Die Einstellungen in der CODESYSControl_User.cfg bei SysCom habe ich sowohl mit als auch ohne Semikolon probiert, in der CODESYSControl.cfg ist kein Eintrag für SysCom.

    pi@pigeonwks:~ $ ls /dev/tty*
    /dev/tty    /dev/tty16  /dev/tty24  /dev/tty32  /dev/tty40  /dev/tty49  /dev/tty57  /dev/tty8
    /dev/tty0   /dev/tty17  /dev/tty25  /dev/tty33  /dev/tty41  /dev/tty5   /dev/tty58  /dev/tty9
    /dev/tty1   /dev/tty18  /dev/tty26  /dev/tty34  /dev/tty42  /dev/tty50  /dev/tty59  /dev/ttyAMA0
    /dev/tty10  /dev/tty19  /dev/tty27  /dev/tty35  /dev/tty43  /dev/tty51  /dev/tty6   /dev/ttyprintk
    /dev/tty11  /dev/tty2   /dev/tty28  /dev/tty36  /dev/tty44  /dev/tty52  /dev/tty60  /dev/ttyRS485
    /dev/tty12  /dev/tty20  /dev/tty29  /dev/tty37  /dev/tty45  /dev/tty53  /dev/tty61  /dev/ttyUSB0
    /dev/tty13  /dev/tty21  /dev/tty3   /dev/tty38  /dev/tty46  /dev/tty54  /dev/tty62  /dev/ttyUSB1
    /dev/tty14  /dev/tty22  /dev/tty30  /dev/tty39  /dev/tty47  /dev/tty55  /dev/tty63
    /dev/tty15  /dev/tty23  /dev/tty31  /dev/tty4   /dev/tty48  /dev/tty56  /dev/tty7
    pi@pigeonwks:~ $ cat /etc/CODESYSControl_User.cfg
    [SysCom]
    ;Linux.Devicefile=/dev/ttyUSB1
    ;portnum := COM.SysCom.SYS_COMPORT1
    [CmpBlkDrvCom]
    ;Com.0.Name=MyCom
    ;Com.0.Baudrate=115200
    ;Com.0.Port=3
    ;Com.0.EnableAutoAddressing=1
    [SysProcess]
    Command.0=shutdown
    [CmpApp]
    Bootproject.RetainMismatch.Init=1
    

    Muss ich auf der Konsole noch irgendetwas umstellen?

    Der Hersteller kann mir auch nicht weiterhelfen. Er hat mir nur mitgeteilt das man die Schnittstelle wie eine Serielle nutzen kann..

    Viele Grüße
    Dennis

    Edith sagt: Die Kommunikationsparameter für die Schnittstelle sind natürlich passend gesetzt. Die Knoten im Gerätebaum von der Schnittstelle, dem Master und dem Client werden mit einem roten Dreieck gekennzeichnet

     
  • dkeipp - 2018-08-17

    So,

    erstmal vorweg die funktionierende CODESYSControl_User.cfg (Auszug SysCom) für die Pigeon mit RS485:

    [SysCom]
    Linux.Devicefile=/dev/ttyUSB
    portnum := COM.SysCom.SYS_COMPORT1
    

    Wie im vorherigen Post zu sehen gibt es unter anderem die ttyRS485 und ttyUSB0 (ttyUSB1 ist ein externer Adapter).
    Mir ist nach etlichen durchsehen der Forenbeiträge erst aufgefallen das unter SysCom bei den Schnittstellen die Nachfolgende Nummer weggelassen wird. Ich habe krampfhaft versucht die ttyRS485 zu verwenden. Ich bin davon ausgegangen das ttyUSB0 die RS232 der Steuerung ist. Es ist aber so das diese im Linux irgenwie auf ttyRS485 gemappt wird und Codesys scheinbar nicht mit Suffixen aus Zahlen umgehen kann. Das ist jetzt eine Unterstellung die ich nicht ganz so ernst meine, vielleicht gibt es hierfür auch einen sinnvollen Grund, über Aufklärung wäre ich dankbar.
    Vorerst läuft mein Bus also. Ich kann zum jetzigen Zeitpunkt nicht sagen ob das eine saubere Lösung ist, oder ob ich mir noch Probleme einfange wenn ich später die RS232 verwenden will oder einen zusätzlichen USB-Seriell Wandler anschließe. Auch hier ist Aufklärung gewünscht, bzw. werde ich vom Hersteller versuchen Infos über die Hardware zu bekommen, bzw. wieso er die ttyUSB0 auf die ttyRS485 gemappt hat.

    Gruß

     

Log in to post a comment.