Hallo, ich will vier Geräte per ModBus auslesen und steuern, ich benutze dafür die Modbus_B4A_120815-Bibliothek. Im Prinzip funktioniert auch alles wie gewünscht. Von Modbus4 lese ich 5 Register, hier wird das ganze System ausgebremst. Ich habe dann auf die nötigsten 2 Register reduziert und den Rest durch Variablen ersetzt, da lief es schon etwas flüssiger, aber noch immer nicht optimal. Ich kann notfalls auch auf 1 Register reduzieren, dann läuft es fast ohne Probleme.
Edit: die Ladespannung kann ich auch über Modbus1 auslesen, ohne Verzögerung. Den Ladestrom muss ich nicht permanent über Modbus4 auslesen, 1x beim Start reicht.
Aber trotzdem, wie kann man das Problem lösen? Hat jemand eine Idee?
Edit: die Ladespannung kann ich auch über Modbus1 auslesen, ohne Verzögerung. Den Ladestrom muss ich nicht permanent über Modbus4 auslesen, 1x beim Start reicht.
Aber trotzdem, wie kann man das Problem lösen? Hat jemand eine Idee?
B4X:
Dim Modbus1 As Modbus_B4A_120815
'...
Timer1.Initialize("Timer1", 1000)
'...
Sub Timer1_Tick
' Log(DateTime.Now)
' Timer1.Enabled = False
Try
' Log(Modbus1.isConnect)
' Log(Modbus2.isConnect)
' Log(Modbus3.isConnect)
' Log(Modbus4.isConnect)
If Modbus1.isConnect = True Then
' Log("----------")
netzbezug = Modbus1.TCP_ReadInputRegisters(0, 2).Replace(" ", "").SubString(18) ' 00 03 00 00 00 07 49 04 04 00 00 b1 7d, 0003000000074904040000b17d, 0000b17d
' netzbezug = "0000b17d"
' Log(netzbezug)
einspeisung = Modbus1.TCP_ReadInputRegisters(2, 2).Replace(" ", "").SubString(18) ' 00 36 00 00 00 07 49 04 04 00 00 00 00, 00360000000749040400000000, 00000000
' einspeisung = "00000000"
' Log(einspeisung)
batterie = Modbus2.TCP_ReadMultipleRegisters(582, 1).Replace(" ", "").SubString(18) ' 00 39 00 00 00 05 47 03 02 00 00, 0039000000054703020000, 0000
' batterie = "0000"
' Log(batterie)
pvstring1 = Modbus2.TCP_ReadMultipleRegisters(100, 2).Replace(" ", "").SubString(18) ' 00 15 00 00 00 07 47 03 04 00 00 00 00, 00150000000747030400000000, 00000000
' pvstring1 = "00000000"
' Log(pvstring1)
pvgesamt = Modbus3.TCP_ReadMultipleRegisters(172, 2).Replace(" ", "").SubString(18) ' 02 ce 00 00 00 07 47 03 04 00 00 00 00, 02ce0000000747030400000000, 00000000
' pvgesamt = "00000000"
' Log(pvgesamt)
geladen = Modbus4.TCP_ReadInputRegisters(132, 2).Replace(" ", "").SubString(18) ' 00 63 00 00 00 07 47 04 04 07 13 00 00, 00630000000747040407130000, 07130000
' geladen = "07130000"
' Log(geladen)
ladestrom = Modbus4.TCP_ReadInputRegisters(299, 1).Replace(" ", "").SubString(18) ' 00 09 00 00 00 05 47 04 02 00 06, 0009000000054704020006, 0006, Achtung! Fehler möglich!
' ladestrom = "0006"
' Log(ladestrom)
' ladespannungL1 = Modbus4.TCP_ReadInputRegisters(108, 2).Replace(" ", "").SubString(18) ' 00 0a 00 00 00 07 47 04 04 00 dd 00 00, 000a0000000747040400dd0000, 00dd0000
ladespannungL1 = "00e40000"
' Log(ladespannungL1)
' ladespannungL2 = Modbus4.TCP_ReadInputRegisters(110, 2).Replace(" ", "").SubString(18) ' 00 0b 00 00 00 07 47 04 04 00 e2 00 00, 000b0000000747040400e20000, 00e20000
ladespannungL2 = "00e40000"
' Log(ladespannungL2)
' ladespannungL3 = Modbus4.TCP_ReadInputRegisters(112, 2).Replace(" ", "").SubString(18) ' 00 0c 00 00 00 07 47 04 04 00 df 00 00, 000c0000000747040400df0000, 00df0000
ladespannungL3 = "00e40000"
' Log(ladespannungL3)
'
' weiterer Code...
'
' DoEvents
Sleep(0)
End If
Catch
ToastMessageShow("Timer1_Tick: " & LastException.Message, True)
End Try
' Timer1.Enabled = True
End Sub