【平台:QT】
【协议:modbus(注:由于要求,需要自己来实现modbus库,而非直接调用已有的库)】
【由于复制粘贴,时间原因可能格式有误,如需要具体工程文件以及报告文件请私信博主或移步
【闲鱼】https://m.tb.cn/h.T6JisBK?tk=jTYF3AMxZUT CZ0001
】
1、 大作业任务:
(1)使用附件中工具软件体验MODBUS主从站数据传输过程(可在主从站模拟工具里面观察各功能码对应数据帧内容并对其进行分析)
(2)使用串口调试助手,手工发出MODBUS主、从站该发出的数据,并观察对方发出的数据
(3)实现MODBUS主、从站功能,描述实现过程(语言不限于使用VC,PYTHON,QT,JAVA,C#等,任何一个都可以,希望互相不要重复)
需实现的功能码有:
–01,读线圈
–05,写线圈
–03,读保持寄存器(例程中已初步实现)
(4)实现主站的启停按钮对从站1的运行指示灯的启停控制。主站读取从站的启动运行次数并在主站显示。
2、体验操作(步骤及感受)
2.1使用附件中工具软件体验MODBUS主从站数据传输过程(可在主从站模拟工具里面观察各功能码对应数据帧内容并对其进行分析)
① 安装打开虚拟串口软件Configure Virtual Serial Port Driver,配置设置虚拟串口com1和com2,将com1、com2虚拟出来并连接在一起
检验:在PC设备管理器中,可看到已有com1,com2串口,并显示连接一起
② 打开主从站模拟工具,点击setup->read/write(主机)/slave(从机)definition配置主从端的相关配置,主要有主从站ID,功能码,起始寄存器地址,访问寄存器数量,轮询时间这些参数。
01 读线圈状态
02 读离散输入状态
03 读保持寄存器
04 读输入寄存器
05 写单个线圈
06 写单个保持寄存器
15 写多个线圈
16 写多个保持寄存器
主站功能码:
01 读线圈状态
02 读离散输入状态
03 读保持寄存器
04 读输入寄存器
05 写单个线圈
06 写单个保持寄存器
15 写多个线圈
16 写多个保持寄存器
从站设置相应寄存器地址
现设置从站为03holding register,则主站设为03 read holding register。
③ 将主从站模拟工具都connect到模拟串口,主站连接到com1,从站连接到com2,
④ 改变从站的寄存器值,可看到主站相应的位置也读到了值的改变
打开communication traffic,查看总线上主从站通讯过程过程
Tx:122-01 03 00 00 00 0A C5 CD
Rx:123-01 03 14 00 00 00 90 00 00 00 21 00 00 00 0B 00 00 00 00 00 00 00 00 C1 9B
分析:TX:01:从机地址 03:功能码,指定holding register
00 00:寄存器地址 00 0A:读取数据个数 10个
C5 CD:CRC校验码
RX:01:从机地址 03:功能码,指定holding register
14:返回字节数(16进制)20字节
00 00:0 00 90:144(0x90)
00 00:0 00 21:33(0x21)
00 00:0 00 0B:11(0x0B)
00 00:0 00 00:0
00 00:0 00 00:0
C1 9B:CRC校验码
⑤当在主站发送