膨胀的皮皮虾 发表于 2024-4-1 09:27:06

32G12K128单片机的 moubus-rtu 从机测试工程

32G12K128 是一款32位的 C251 的单片机。最近拿到一块官方申请的 屠龙刀-STC32G开发板,就用它的提供的库函数,查考安富莱提供的 modbus 例程移植了一个 modbus-rtu 从站的工程。\n\nmodbus-rtu slave 移植注意点\nmodbus-rtu 功能配置\n配置 modbus-rtu 使能主机还是从机,亦或是全部使能\n配置主机或者从机使用的串口、波特率、从机地址、打印调试信息
2.初始化 modbus-rtu 从站使用到的串口和定时器\nmodbus-rtu 没有开始和结束符,通过3.5个字符的时间间隔来断帧,所以此处初始化一个定时器4来计算3.5个字符的时间用于断帧。注意:此处使用定时器不要和对应串口波特率产生的定时器冲突\n初始化对应的串口4在定时器的中断函数中添加 modbus-rtu 从机 3.5 个字符超时处理函数在 main() 函数的大循环之前调用 MODS_PeripheralInit() 以初始化使用到的相关硬件;然后在死循环里一直调用 MODS_Poll() 解析 modbus-rtu 从机协议。\n可以通过 modbus_slave.h 文件中的宏定义对 modbus-rtu 的功能进行裁剪,可以禁用不需要使用的功能,以解决空间。

wangxiangtan 发表于 2024-4-1 14:07:05

看着东西不错,老哥有工程源码没

梁工 发表于 2024-4-1 17:49:23

MODBUS-RTU协议是一个软件协议,可以参考本论坛的例子移植即可。

qepuemc 发表于 2024-4-3 14:49:44

估计这个研究好了,可能能把测试通过实际啥有没有

xxh 发表于 2024-10-8 08:49:25

有源码学习吗

xxh 发表于 2024-10-8 08:56:18

梁工 发表于 2024-4-1 17:49
MODBUS-RTU协议是一个软件协议,可以参考本论坛的例子移植即可。

梁工你的modus例程错误代码怎么试不出来,比如站号错误,我特意改了错误的,它没有返回错误代码

梁工 发表于 2024-10-9 10:20:22

xxh 发表于 2024-10-8 08:56
梁工你的modus例程错误代码怎么试不出来,比如站号错误,我特意改了错误的,它没有返回错误代码 ...

站号错误(站号地址不对)、CRC16校验错误,都是不返回的。这两个都对了,就要返回。

roger 发表于 2024-10-10 13:46:53

xxh 发表于 2024-10-8 08:49
有源码学习吗

这个原帖是我写的,你可以参照这个 https://www.stcaimcu.com/forum.php?mod=viewthread&tid=2118我在CSDN上也有从站和主站的例程及说明
页: [1]
查看完整版本: 32G12K128单片机的 moubus-rtu 从机测试工程