本帖最后由 aple0807 于 2022-12-26 11:57 编辑
AT32F437拥有8路串口,非常适合工控/仪表设备对外连接需求,而MODBUS在设备链接中的应用最为广泛。本测试使用两个串口(U3,U8),U8配置为MODBUS主机,U3配置为MODBUS从机,两个可以相互通信,也可以分别连接电脑测试。
管脚分配:
U3-TX: PC4
U3-RX: PC5
U8-TX: PC8
U8-RX: PC9
协议部分不再赘述,本贴仅演示结果,有兴趣的同学可以下载代码研究。
U3从站:对于从机,比较简单完成初始化即可。电脑端调试软件运行结果如下:
U8主站:主站除初始化外,还需要管理命令发送,本软件采用命令队列结构,应用程序向队列写入明确,扫描程序扫描队列并执行。
如下为一组命令
mcmd.id = 1;
mcmd.wdat = mb_tst.pv_w;
mcmd.rdat = mb_tst.pv_r;
mcmd.wa = word_make(0, 4);
mcmd.wn = 4;
mcmd.ra = word_make(0x00, 0x10);
mcmd.rn = 6;
mcmd.callback = qc_callback;
mcmd.attr = QC_MB_ATTR_HOLD_RW;
mqc_stc_cmd_req(&mb.qc03, 0, &mcmd);
mqc_stc_cmd_req(&mb.qc08, 0, &mcmd);
将pv_w的数据写入从站地址4处,写入4个数据。 从从站0x10处读取6个数据,存放与pv_r
电脑端测试结果如下:
硬件连接如下,通过一个485转接板连接至USB-485测试。
代码托管在GITEE,后面评测会一直用这个仓库更新。
https://gitee.com/aple_sun/atf437-start
|