ramen79 Ответов: 1

Подключенный DT80 с modbus ok fine VB.NET, но не считывание данных из регистров DT80


Я пишу программу для чтения данных из DT80, поддерживающую Modbus RTU.My ниже VB. net2010 код способен подключать DT80, но не считывать значение регистра в текстовое поле формы.
Пожалуйста, помогите мне. Заранее спасибо.

Что я уже пробовал:

Dim ModbusClient As EasyModbus.ModbusClient = New EasyModbus.ModbusClient(Me.TextBox1.Text, Me.TextBox2.Text)  'connecting using IP, port

Try
    ModbusClient.Connect()

    TextBox3.Text = ComError
    TextBox3.ForeColor = Color.Green
    Label4.Text = "Connected to Slave"
    Label4.ForeColor = Color.Green
    If TextBox3.Text = 0 Then
        Label4.Text = "logging......"
        Dim Regs As Integer()
        Regs = ModbusClient.ReadHoldingRegisters(4, 5)

        Me.TextBox4.Text = Regs(0)
        Me.TextBox5.Text = Regs(1)
        Me.TextBox6.Text = Regs(2)
        Me.TextBox7.Text = Regs(3)
        Me.TextBox8.Text = Regs(4)


        ModbusClient.Disconnect()

    End If


Catch ex As Exception
    TextBox3.Text = 1
    TextBox3.ForeColor = Color.Red
    Label4.Text = "Connection Error!"
    Label4.ForeColor = Color.Red
End Try

1 Ответов

Рейтинг:
0

Garth J Lancaster

>>

Цитата:
Regs = ModbusClient.ReadHoldingRegisters(4, 5)


- вы уверены ? Я думал, что держащие регистры находятся в диапазоне (s)

30001-31000 Переменные Канала 1-1000
34001-34053 Системные Переменные 1-52
38000-38009 цифровые цифры 1-8 & amp; реле


ramen79

я пробовал с приведенным ниже, но не смог получить данные

Regs = ModbusClient.ReadHoldingRegisters(30001, 5)
или
Regs = ModbusClient.ReadHoldingRegisters(3, 5)

Garth J Lancaster

одна вещь, которую мы обнаружили с помощью MODBUS, заключалась в том, что номера регистров должны были быть смещены на 1 "один" - не могли бы вы попробовать Regs = ModbusClient.ReadHoldingRegisters(30000, 5)