0x、1x、3x、4x其实各是一片数据区,是Modbus协议规定的地址范围,即:
线圈(DO)地址:00000~09999
触点(DI)地址:10000~19999
输入寄存器(AI)地址:30000~39999
输出寄存器(AO)地址:40000~49999
由于上述各类地址是唯一对应的,因此有些资料就以其第一个数字区分各类地址,即:0x代表线圈(DO)类地址,1x代表触点(DI)类地址、3x代表输入寄存器(AI)类地址、4x代表输出寄存器(AO)类地址.
同理,各类地址的数据区的Modbus功能码也是规定好的,不能乱用.如要操作0x地址数据区,就只能用规定的功能码01/05,而不能用其他的功能码.
所以,从各类地址的前缀就能知道它的数据区及功能码,反之亦然.
上述这些地址称为Modbus数据区地址,它是5位十进制地址.但在实际编程中,由于前缀的区分作用,所以只需说明后4位数,而且需转换为4位十六进制地址.
在单片机中实现时,需要定义4个数据区对应上述各类地址(长度可以缩短,视单片机RAM大小).处理Modbus事务时,根据数据祯中的功能吗,再对对应的数据区进行操作(置位、复位、读数或写入数据).具体过程看Modbus事务流程图.