modbus协议将寄存器分成了4个区域,但每一个寄存器都是16位的数据存储器,00000~09999代表线圈(do)类地址,10000~19999代表触点(di)类地址、 30000~39999代表输入寄存器(ai)类地址、40000~49999代表输出寄存器(ao)类地址。
当plc主站和变频器、私服驱动器、温控器或其他遵从modbus的从站通讯时,会出现3种情况:
(1)比如台达,它没有能力自己开发专用协议,就用modbus作为自己的协议,这样的话,它有modbus指令,只需要设置通讯格式字后,用指令直接读从站寄存器地址就可以了。(台达主站)
(2)比如“西门子”,它有自己开发的ppi、mpi、profibus、工业以太网等专用协议,但为了和支持modbus的设备通讯,它就开发了modbus通讯协议库,我们只需要初始化“通讯格式字”,不需要知道“通讯数据信息帧”的格式,直接读写从站寄存器的地址就可。(西门子主站)
(3)比如“三菱”,它有自己开发的"cc-link"专用协议,但没有支持和modbus设备通讯的协议库,那和支持modbus协议的设备通讯就要编写通讯程序了,这就是“自由口通讯”,在保证硬件通讯口连接正确的情况下,遵从“从站的通讯格式字”和“从站的数据信息帧”。在plc中不但要设置通讯格式字,还要编写数据发送帧的通讯程序,比较长。(三菱主站)
plc通过指令写程序发送帧01h 03h 21h 02h00h 02h 6fh f7h中,03h(功能码)和21h 02h(数据起始地址)就决定对从站4区寄存器中的48451进行处理
当plc为从站时,上位或组态软件为主站时,软件一般添加了相应plc的驱动程序,plc厂家定义了plc变量地址和modbus寄存器的映射关系,读和写相应modbus的寄存器地址就可读写plc相应变量的参数。