AdvancedHMI Software

General Category => Support Questions => Topic started by: Flemmingaa on January 29, 2016, 07:12:00 AM

Title: ModbusRTU problems
Post by: Flemmingaa on January 29, 2016, 07:12:00 AM
Hi
How do I read register 3029 from a slave ?

Slave addr. = 1
Function code = 3
Registre addr = 3029
Number of registers = 2
This results in a Tx:  01 03 0B D5 00 02 D7 D7 (last 4 is CRC)

I can't convert it to ModbusRTUCom1.Read("3:3029", 2)   ? ?
Title: Re: ModbusRTU problems
Post by: Archie on January 29, 2016, 07:41:37 AM
Dim MyValues() as string=ModbusRTUCom1.Read("43029", 2)
Title: Re: ModbusRTU problems
Post by: Flemmingaa on January 29, 2016, 08:02:31 AM
Thanks
but I get the error message "Illegal Data Address"
>   AdvancedHMIDrivers.dll!AdvancedHMIDrivers.ModbusBase.Read(String startAddress = "43029", Integer numberOfElements = 2) Line 170   Basic

I am new in "Modbus" through AdvancedHMI
Title: Re: ModbusRTU problems
Post by: Archie on January 29, 2016, 08:04:35 AM
The Illegal Data Address is a response from your device. Try just reading a single element

Dim MyValues as string=ModbusRTUCom1.Read("43029")
Title: Re: ModbusRTU problems
Post by: Flemmingaa on January 29, 2016, 10:02:28 AM
Mmmm does not work
I can read coils without problems:
1 coil example:
ModbusRTUCom1.Read("0021", 1)
or 10 coils example:
ModbusRTUCom1.Read("0021", 10)

but not register

I know that the address 3029 is correct, because I can read it through "QModMaster"
Title: Re: ModbusRTU problems
Post by: Flemmingaa on January 29, 2016, 10:09:41 AM
Dim MyValues() As String = ModbusRTUCom1.Read("3029", 2)
gives
"Illegal Function"

Dim MyValues() As String = ModbusRTUCom1.Read("43029", 2)
gives
"Illegal Data Address"

Dim MyValues() As String = ModbusRTUCom1.Read("3:3029", 2)
gives
"Illegal Data Address"

Dim MyValues() As String = ModbusRTUCom1.Read("3:43029", 2)
gives
"Illegal Data Address"
Title: Re: ModbusRTU problems
Post by: Flemmingaa on January 29, 2016, 10:30:20 AM
Aaa Sorry Archie
The adresse in AdvancedHmi i 3030 and not 3029 so
Dim MyValues() As String = ModbusRTUCom1.Read("43030", 2)
works fine

Sorry and many thanks