单片机与触摸屏通信 - ModbusRTU 资料说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Modbus C51_V1509程序说明
一.文件分布
MCU相关的文件,移植到其它单片机时,主要改这一部分
Modbus RTU协议相关的文件,
这部分基本是通用的,在移植时改动很少
这里面是, 51单片机的一个Keil工程文件,
直接使用keil软件打开里面的工程即可
二.硬件基本要求
1. MCU必须保留有UART串行通信接口;
2. 须要使用一个定时器,用作modbus数据帧的接收计时处理;
3. 选择合适的晶振,使得串口通信的波特率差误最小;
三.程序配置
a. 打开"includefile.h" ,
修改实际使用的晶振频率
b. 打开"main.c" ,
根据实际须要修改:波特率,校验和站号
c. 打开"C51uart.h" ,配置485控制端口如果没有使用485,可以跳过这一步
. e. 打开"Modbus_CFG.h" , 根据实际须要配置功能码,
以及各功能码的起始地址和数量
d. 打开"C51uart.h" 配置串口缓存,或者 在工程选项卡里面配置;如果选项卡里面 定义了,则程序上面的配置无效;
注意:串口缓存应根据单片机 RAM 容量合理配置!
f. 打开"App.c" ,仿照里面的例子进行modbus数据传递;
须要取得主机传递的数据,直接读取相应功能码数组的值即可;
须要向主机传递数据时,先准备好要传递的数据,再把数据
赋值给相应的功能码数组即可;
四. 与主机进行通信
可以使用modbus 调试软件进行测试本程序;
软件很多,可以在网上下载;这里使用modbus poll
打开软件界面如下图
a. 点 "Connection"
弹出串口连接界面
b. 根据实际情况,选择串口参数, 然后"OK" 串口参数一定要与从机程序配置的一致;
c. 这里会提示通信状态
图中这个是由于访问的地址超出了
从机程序定义的范围;
d. 点"Setup --> Read/Write Def....." ,
弹出配置窗口;
01,02,03,04功能码都是读取操作, 这里面以
3x 的04功能码为例说明,其它的方法类似;
从机的站号
这里选择功能码,一般只使用前面4个
须要访问的寄存器起始地址
须要访问的寄存器数量
这个勾上,会自动发送设定的命令
e. 配置好相关参数后,点OK .
注意,配置的参数一定要和从站
的配置一致;
f. 这时候通信状态指示 Err=0,通信正常;
表格里面的值即为从机的寄存器数据;
RegBuf_Input[0]=
......
......
......
......
RegBuf_Input[7] =
05功能码,写单个线圈 :
15功能码,写多个线圈 : a. 点05 功能码,弹出窗口
b. 输入从机站号和寄存器地址,
然后设置状态:On或者Off
c. 点"Send",发送命令
d. 如果显示".. OK",则成功
否则会通信状态会显示相应的信息
a. 点15 功能码,弹出窗口
b. 输入从机站号,须要写的
寄存器起始地址,数量
c. 输入数量后,则边框会出现相应数量的选项,把须要输出1的位置勾上,输出0的不用勾;
d. 设置好之后,点"Send"送出命令如果成功,会有"... OK"字样出现, 否则,会在通信状态指示相应的信息
06功能码,写单个保持寄存器:
a. 点06 功能码,弹出窗口
b. 输入从机站号和寄存器地址和
须要写的值; (数值范围:16)
c. 点"Send",发送命令如果成功,
会有"... OK"字样出现,否则,会在
通信状态指示相应的信息
16功能码,写多个保持寄存器:
a. 点16 功能码,弹出窗口
b. 输入从机站号,须要写的
寄存器起始地址,数量
c. 输入数量后,则边框会出现相应数量的选项,在相应的位置填写须要的数值
d. 设置好之后,点"Send"送出命令如果成功,会有"... OK"字样出现, 否则,会在通信状态指示相应的信息
观察/截取串口的命令数据
a. 点101 ,弹出窗口
c. 须要复制命令数据时,点一下"Stop"
b. 这里记录了每一条命令数据
d. 选择须要复制的命令数据
e. 选择数据后,点"Copy",
数据即可复制到剪贴板
f. 在其它须要这数据的地方,
粘贴一下即可;须要返回,观察
数据窗口,点一下"Continue"
Modbus poll 软件还有其它很多用法,这里就不一一说明了!。