Connecting DTC1000 to my PLC

mhdganji

Member
Join Date
Nov 2018
Location
UAE
Posts
8
Hi,
I've connected DTC1000 to a FATEK PLC and I want to read the measured temperature and write it in R2000 for example


A friend said read this file
http://www.deltaww.com/filecenter/P...405/Manual/DELTA_IA-TC_DTC_OM_EN_20160311.pdf


So I saw that the value will go to 1000H which is 4096 in Decimal
But that didn't work and my friend said you should add 400001 to it. It means that PLC software can read data at 404097 and it WORKED. I'd like to know where this has number come from or maybe I'm making mistakes in my understandings



Thanks
 
Function Code 03H reads from memory area (4)xxxxx, known as Holding Registers, which are decimal numbers. The leading numeral (4) is not used in the Modbus message, it's only there so human beings can recognize a Modbus register with a leading numeral (4) as coming from a Holding Register.

Holding Registers using the memory area designator numeral start counting at one: (4)00001, not zero. The first available Holding register is (4)00001. There is no (4)00000.

Holding registers can also be represented as being indexed from the number 0000H in hexadecimal.
hex indexed address 0000H is the same as (4)00001
hex indexed address 0001H is the same as (4)00002
hex indexed address 0002H is the same as (4)00003

skipping ahead . . . .

hex indexed address 0FFFH (4095 decimal) is the same as (4)04096
hex indexed address 1000H (4096 decimal) is the same as (4)04097
hex indexed address 1001H (4097 decimal) is the same as (4)04098

You can see by the pattern that the decimal equivalent of an indexed Hex register is one less than the register value when the register is represented by the (4)xxxxx method because the (4)xxxxx count starts at (4)00001, not at zero (4)00000.

Adding (4)00001 to the decimal equivalent of an indexed Hexadecimal address will produce the correct Modbus Holding register address.
 
Function Code 03H reads from memory area (4)xxxxx, known as Holding Registers, which are decimal numbers. The leading numeral (4) is not used in the Modbus message, it's only there so human beings can recognize a Modbus register with a leading numeral (4) as coming from a Holding Register.

Holding Registers using the memory area designator numeral start counting at one: (4)00001, not zero. The first available Holding register is (4)00001. There is no (4)00000.

Holding registers can also be represented as being indexed from the number 0000H in hexadecimal.
hex indexed address 0000H is the same as (4)00001
hex indexed address 0001H is the same as (4)00002
hex indexed address 0002H is the same as (4)00003

skipping ahead . . . .

hex indexed address 0FFFH (4095 decimal) is the same as (4)04096
hex indexed address 1000H (4096 decimal) is the same as (4)04097
hex indexed address 1001H (4097 decimal) is the same as (4)04098

You can see by the pattern that the decimal equivalent of an indexed Hex register is one less than the register value when the register is represented by the (4)xxxxx method because the (4)xxxxx count starts at (4)00001, not at zero (4)00000.

Adding (4)00001 to the decimal equivalent of an indexed Hexadecimal address will produce the correct Modbus Holding register address.


Thank you so much.
Got that ...
A small question on my mind ..
Is this (4) the same in all devices working with ModBus .. Or we may see another (say another temperature controller) working with ModBus protocol whose numbers are presented as (5)XXXX ?
 
There are four assigned Modbus memory areas, as shown below:

(0)xxxxx, (coil registers)
(1)xxxxx, (Discrete Inputs status registers)
(3)xxxxx, (Input Registers)
(4)xxxxx, (Holding Registers)

The leading numeral in the parentheses is not part of the Modbus message, it is there only to identify the memory area register being used.

I know the one-offset between decimal and hex based registers applies to the (3)xxxxx and (4)xxxxx registers - those registers start counting at one, not zero.

I have used coils and DI's so seldom (and then it was hex-based addressing) that I can't recall. I strongly suspect that the one offset case holds true for (0)xxxxx and (1)xxxxx but I can't recall an example.
 
There are four assigned Modbus memory areas, as shown below:

(0)xxxxx, (coil registers)
(1)xxxxx, (Discrete Inputs status registers)
(3)xxxxx, (Input Registers)
(4)xxxxx, (Holding Registers)

The leading numeral in the parentheses is not part of the Modbus message, it is there only to identify the memory area register being used.

I know the one-offset between decimal and hex based registers applies to the (3)xxxxx and (4)xxxxx registers - those registers start counting at one, not zero.

I have used coils and DI's so seldom (and then it was hex-based addressing) that I can't recall. I strongly suspect that the one offset case holds true for (0)xxxxx and (1)xxxxx but I can't recall an example.


Thanks again Dan. So much appreciated
 

Similar Topics

I have a piece of equipment that is operated by a PanelView Plus 600 HMI touch screen via RS232 into a Micrologix 1500 PLC. I am trying to...
Replies
5
Views
113
Hi, Seeking consultation on an implementation matter, and have a question about Modicon Compact 984 communication through RS485: Three Modicon...
Replies
4
Views
119
I have Toyopuc PLC PC10G-CPU and some communication modules of it. With this modules I'm able to connect with Ethernet, Ethernet/IP, FLnet, FRMT...
Replies
0
Views
56
Hi, We are setting up an Aveva Plant SCADA node with the intention to connect it to a Wonderware Historian node. Everywhere I look online I see...
Replies
1
Views
120
Hi; I have Laptop Lenovo Thinkpad (W10) which don't have built-in Bluetooth. I have a PLC having Bluetooth communication device. I wanted to...
Replies
1
Views
83
Back
Top Bottom