Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme mit dem Modbus Binding

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Probleme mit dem Modbus Binding

    Hallo, ich bräuchte da mal eure Hilfe,
    ich versuche mich gerade an dem Modbus Binding und komme einfach nicht weiter. Ich schaffe es zwar mich, per USB zu verbinden, bekomme aber nur folgende Fehlermeldung:

    given modbus-slave-config-key 'slave1.host' does not follow the expected pattern or 'serial.<slaveId>.<connection|id|start|length|type |valuetype|rawdatamultiplier|writemultipleregister s>'

    Meine openhab.cfg sieht so aus:

    ############################### Modbus Binding ########################################
    #
    # sets refresh interval to Modbus polling service.
    # Value in milliseconds (optional, defaults to 200)
    modbusoll=2000

    # host (mandatory)
    modbus:serial.slave1.connection=com9:baud=9600:dat aBits=8arity=even:stopBits=1:encoding=rtu

    # The data type, can be "coil" "discrete" "holding" "input"
    modbus:serial.slave1.type=holding

    # the TCP port (optional, defaults to '502')
    #modbus:tcp.slave1.port=6000

    # The slave id (optional, defaults to '1')
    modbus:serial.slave1.id=1

    # The slave start address (optional, defaults to '0')
    modbus:serial.slave1.start=2000

    # The number of data item to read
    # (optional, defaults to '0' - but set it to something meaningful)
    modbus:serial.slave1.length=2

    # Value type, required for combined registers (details: http://www.simplymodbus.ca/FAQ.htm#Types)
    # Can be "bit", "int8", "uint8", "int16", "uint16", "int32", "uint32", "float32"
    # (optional, defaults to 'uint16')
    modbus:serial.slave1.valuetype=float32

    Mit Modbus Poll funktioniert alle einwandfrei,

    Ich teste im Moment auf meinem windows Rechner möchte aber später meinen Raspberry dafür nutzen.

    Gruß Mike

    Gruß Mike

    #2
    Meine openhab.cfg sieht so aus:
    modbusoll=1000
    modbus:serial.slave1.connection=COM9:9600:8:none:1 :rtu
    modbus:serial.slave1.id=1
    modbus:serial.slave1.start=0
    modbus:serial.slave1.length=4
    modbus:serial.slave1.type=discrete

    Kommentar


      #3
      Danke skorpi08,
      deine Einstellungen haben mich ein ganzes Stück weiter gebracht. Ich bekomme jetzt die Daten ausgegeben , aber nur wenn ich "modbus:serial.slave1.valuetype=float32
      " auskommentiere. Ich erhalte 2 Datenblöcke a 16 bit, diese sollten aber 32bit float sein. Kann mir da mal jemand weiter helfen
      Gruß Mike
      Gruß Mike

      Kommentar


        #4
        Trotz langem Testen komme ich leider immer noch nicht weiter. Das Register 8192 ist ein 32bit Fließkommawert (Spannung von einem Modbus-Stromzähler). Wenn ich die letzte Zeile im Modbus-Binding nicht auskommentiere bekomme ich die oben erwähnte Fehlermeldung. Mit einem Modbus-tool bekomme ich Korrekte werte angezeigt. Ohne besagte Zeile bekomme ich "beide" Register richtig angezeigt (s.u.), sollte aber der erste und der zweite Teil einer 32bit Fließkommazahl sein. setze ich die Teile zusammen und rechne Sie um passt alles wieder. Leider weiß ich nicht wie ich das machen kann.
        Vielleicht kann mir doch noch jemand von euch weiterhelfen.

        Code:
        modbuspoll=1000
        modbus:serial.slave1.connection=COM9:9600:8:even:1:rtu
        modbus:serial.slave1.type=holding
        modbus:serial.slave1.id=1
        modbus:serial.slave1.start=8192
        modbus:serial.slave1.length=2
        #modbus:serial.slave1.valuetype=float32
        Code:
        /*Modbus*/
        Group    FF_Modbus     "Modbus"     (All)
        Number MB_DT0        "DT0 [%d]"    (FF_Modbus){modbus="slave1:0"}
        Number MB_DT1        "DT1 [%d]"    (FF_Modbus){modbus="slave1:1"}
        Code:
        2015-10-24 23:37:47 - MB_DT0 state updated to 17258
        2015-10-24 23:37:48 - MB_DT1 state updated to 6554
        2015-10-24 23:37:48 - MB_DT0 state updated to 17258
        2015-10-24 23:37:48 - MB_DT1 state updated to 52429
        Gruß Moe
        Gruß Mike

        Kommentar


          #5
          So, Problem gelöst,
          die .items sollte wie folgt aussehen:

          /*Modbus*/ Group FF_Modbus "Modbus" (All) Number MB_DT0 "DT0 [%f]" (FF_Modbus){modbus="slave1:0"} Gruß Mike
          Gruß Mike

          Kommentar


            #6
            Hallo,
            OpenHab läuft jetzt unter Windows, nun habe ich den Versuch unternommen auf einen Raspberry umzuziehen, soweit läuft auch schon einiges. Nur das Modbusbinding macht mal wieder Zicken. Meine Openhab.cfg habe ich wie folgt geändert:

            Code:
            #modbus:serial.slave1.connection=COM9:9600:8:even:1:rtu
            modbus:serial.slave1.connection=/dev/ttyUSB0:9600:8:even:1:rtu
            modbus:serial.slave1.type=holding
            modbus:serial.slave1.id=1
            modbus:serial.slave1.start=8192
            modbus:serial.slave1.length=2
            modbus:serial.slave1.valuetype=float32
            den Rest habe ich so gelassen wie er war, hat ja funktioniert. Hier ein Auszug aus dem log:

            Code:
            2015-12-21 16:57:20.184 [INFO ] [.b.modbus.internal.ModbusSlave] - ModbusSlave error getting responce from slave
            2015-12-21 16:57:21.703 [ERROR] [i.modbus.io.ModbusRTUTransport] - Last request: 01 03 20 00 00 02 cf cb
            2015-12-21 16:57:21.705 [ERROR] [i.modbus.io.ModbusRTUTransport] - failed to read: Error reading response
            2015-12-21 16:57:21.708 [ERROR] [w.m.io.ModbusSerialTransaction] - execute try 1 error: I/O exception - failed to read
            2015-12-21 16:57:22.212 [ERROR] [i.modbus.io.ModbusRTUTransport] - Last request: 01 03 20 00 00 02 cf cb
            2015-12-21 16:57:22.214 [ERROR] [i.modbus.io.ModbusRTUTransport] - failed to read: Error reading response
            2015-12-21 16:57:22.216 [ERROR] [w.m.io.ModbusSerialTransaction] - execute try 2 error: I/O exception - failed to read
            2015-12-21 16:57:22.718 [ERROR] [i.modbus.io.ModbusRTUTransport] - Last request: 01 03 20 00 00 02 cf cb
            2015-12-21 16:57:22.720 [ERROR] [i.modbus.io.ModbusRTUTransport] - failed to read: Error reading response
            2015-12-21 16:57:22.724 [INFO ] [.b.modbus.internal.ModbusSlave] - ModbusSlave error getting responce from slave
            lsusb bringt das:

            Code:
            Bus 001 Device 005: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
            dmesg das:
            Code:
            [    3.838122] usb 1-1.3: new full-speed USB device number 5 using dwc_otg
            [    3.961558] usb 1-1.3: New USB device found, idVendor=1a86, idProduct=7523
            [    3.970800] usb 1-1.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
            [    3.985430] usb 1-1.3: Product: USB2.0-Serial
            [    4.297639] udevd[174]: starting version 175
            [    4.837567] usbcore: registered new interface driver usbserial
            [    4.880853] usbcore: registered new interface driver usbserial_generic
            [    4.903511] usbserial: USB Serial support registered for generic
            [    4.908310] Bluetooth: Core ver 2.19
            [    4.908471] NET: Registered protocol family 31
            [    4.908477] Bluetooth: HCI device and connection manager initialized
            [    4.908524] Bluetooth: HCI socket layer initialized
            [    4.908541] Bluetooth: L2CAP socket layer initialized
            [    4.908604] Bluetooth: SCO socket layer initialized
            [    4.932017] usbcore: registered new interface driver btusb
            [    4.970323] usbcore: registered new interface driver ch341
            [    4.978301] usbserial: USB Serial support registered for ch341-uart
            [    4.986797] ch341 1-1.3:1.0: ch341-uart converter detected
            [    5.012142] usb 1-1.3: ch341-uart converter now attached to ttyUSB0
            Danke im voraus Mike
            Gruß Mike

            Kommentar


              #7
              Ist der openhab-user in der Gruppe dialout?

              Kommentar


                #8
                wie kann ich das herausfinden bzw. ändern, eingerichtet habe ich das als standard User pi. Bin leider in Linux nicht so bewandert
                Zuletzt geändert von Moe Hutz; 22.12.2015, 13:42.
                Gruß Mike

                Kommentar


                  #9
                  Du hast openHAB über apt-get installiert? Dann schaust Du in /etc/init.d/openhab nach, welcher user hinterlegt ist. Anschließend kannst Du mit groups openhab-user rausfinden, welchen Gruppen der openhab-user angehört (openhab-user ersetzt Du mit dem user, den Du im ersten Schritt ermittelt hast)
                  Falls der openhab-user nicht zur Gruppe dialout gehört, kannst Du ihn mit sudo useradd openhab-user dialout der Gruppe hinzufügen.

                  Kommentar


                    #10
                    Die /etc/init.d/openhab habe ich aus der Anleitung von übernommen, dort kann ich gar keinen User finden. Ich habe Openhab nach der Anleitung installiert bzw kopiert.
                    Gruß Mike

                    Kommentar


                      #11
                      udo1toni meinte bestimmt die /etc/default/openhab Datei, dort steht in Line 5 der openhab User und die Gruppe, der normalerweise bei apt-get Installationen immer openhab ist.

                      Die Ausgabe müsste dann lauten:

                      Code:
                      pi@raspberrypi2 ~ $ groups openhab
                      openhab : openhab dialout
                      Gruß, Sigi

                      Kommentar


                        #12
                        bei mir gibt es den User openhab nicht, ich habe alles nach oben erwähnter Anleitung installiert(als User pi).

                        Gruß Mike

                        Gruß Mike

                        Kommentar


                          #13
                          Okay, dann hast du manuell installiert und nicht über apt-get. Da kann ich leider nicht allzuviel weiterhelfen, da ich nur mit meiner apt-get Installation vergleichen könnte, sorry ....

                          Kommentar


                            #14
                            hast du einen link zu einer Anleitung für eine "apt-get Installation"?
                            Gruß Mike

                            Kommentar


                              #15
                              Ja, <<<hier>>>
                              Es handelt sich um die offizielle Installationsmethode, die immer anderen Quellen, die ggf. auf bestimmte Hardwarezustände abgestimmt sind, vorzuziehen ist.
                              Bitte auch die Links zu den hardwareabhängigen Ergänzungen beachten, z.B. <<<hier>>> für einen ARM Prozessor eines Raspberry Pi.

                              Viel Erfolg, Gruß, Sigi

                              Kommentar

                              Lädt...
                              X