(图片来源网络,侵删)
三分钟学习一个工控小知识,今天讲ModBusTCPModBusTCP一共有4个存储区,分别为:103、4区·1区输入线圈表示只读不值·0区输出线圈表示可读写不值·3区输入寄存器表示只读16位整型·4区输出寄存器表示可读写16位整型每个区表示什么意思?拿4区举例,已知4区表示输出寄存器什么是输出寄存器?输出寄存器表示可读、可写16位有符号整型,其实就是表示每个寄存器的数据容量都是负32768到正327674区到底有多少个寄存器?就要说到长短地址模型了先说长地址模型,长地址模型表示65535个数量,使用长地址模型时4区就有65535个寄存器,相应其他区也是一样再来看短地址模型,表示每个区类型数量有9998个数据类型怎样从这些区中读出数据?这时就要用到报文了什么是报文?打个比喻,这是一个外星人,这是一个中国人外星人这时给中国人说我要看电视,中国人回答我听不懂,他们只有都说中国话双方才能交流,跟报文有什么关系?同理这是两台设备,它们想要实现通信并且还能做到双方都能解析,就可以给它制定一个协议报文,比如:ModBusTCP定义了协议报文,具体该怎样操作?还是拿4区举例,假设现在想对4区进行读取操作,读取的过程中不仅仅需要协议报文还需要功能码,比如03功能码读取输出寄存器,再比如04功能码读取输入寄存器,相应不同的区读取和写入都有不同的功能码对应先讲03功能码读取输出寄存器先来看请求数据报文,MBAP报文头加功能码加起始地址加读取数量,将请求报文发送给服务器会返回一串数据报文给我们,返回报文格式如下:已知发送接受报文格式接下来用一个案例给大家演示一下打开Slave软件,选中Connection第一项,选中Mod busTCP,IP输入127.0.0.1本机号,端口输入502,确定再选中Setup第一项,站号输入1,区域选中4区输出寄存器,从0开始开30个输出寄存器,确定·再打开Poll软件,同样选中Connection第一项,协议统一Mod busTCP,IP输入Slave软件设置的IP才能连接,端口也一样下期细节讲解一下什么是IP和端口,确定·再选中Setup第一项,站号1和Slave一样才能正常通信,功能码选择零3功能码读取输出寄存器,从0开始读取数量3,确定·再给寄存器一点值,最后选择display最后一项就能看见发送和接收报文了·再点击Stop停止,按下Control鼠标多选复制来对报文做一个解析,它们都是16进制表示,Tx表示请求数据报文,也就是Poll软件发送的报文,Rx表示Slave返回的报文,Slave表示服务器先来讲请求报文,先将前面部分抹去,前面七个字节表示MBAP报文头,由事务标识符占两个字节什么是事务标识符?这是刚刚Poll软件上的发送和接收报文表,这是所有报文的事物标识符先来解析第一串收发报文事务标识符,打开计算器,选择程序员模式,选择HEX16进制,输入2D00不用管,转换成DEC十进制,十进制结果45再来看第二组,同样打开计算器,在X16进制中输入21,转换10进制的结果为46这时就发现了规律,每组收发报文事务标识符都在递增,没错,其实事务标识符就是用来记录收发报文次数的再来看协议标识符,它占两个字节都是固定零零永远都不会变,除非写错再来看长度占两个字节,10进制转换为6,这里的6表示长度后一共还有6个字节最后一个字节表示单元标识符十进制转换为1,单元标识符也可以称它为站号再来看零3功能码占一个字节,然后其实地址占两个字节十进制转换为0,最后两个字节表示读取数量十进制转换为3刚好和发送报文格式对上再来看一下返回报文,同样先来看MBAP报文头,前两个字节表示事务标识符,然后协议标识符,长度标识符9,单元标识符也就是站号1·再然后零三功能码占一个字节,字节计数占一个字节,十进制转换为六,这里的字节计数也和长度标识符一样表示后面还剩下几个字节一共读取了三个寄存器,这是第一个寄存器的值占两个字节,也就是十六位,十进制转换为一二三,同样第二个、第三个,最后完全和Poll软件上读取到的数据值一致感谢你的观看,视频制作不易,期待你的双击加关注,谢谢支持
0 评论