搜索
bottom↓
回复: 4

利用单片机串口做Modbus RTU协议驱动变频器问题

[复制链接]

出0入0汤圆

发表于 2011-7-29 15:33:42 | 显示全部楼层 |阅读模式
现需利用单片机串口产生一波特率(Modbus RTU协议)来驱动变频器动作,有以下几点问题求解?
资料:1、Modbus协议如下图一所示,由“超始位+8位地址+8位功能码+n*8位数据+16位CRC校验码+停止位”组成。
      2、经查阅51内核的单片机其串口模式有0、1、2、3四种,其中1、2、3模式只能输出10与11位的数据,而0模式可作为移位输出,但其时钟为晶振的1/12。
      3、三菱变频器所支持的Modbus协议速率为:4800、9600、19200、38400四种。

    我现在所想是“根据变频器所支持的速率及Modbus协议的数据位,单片机的1、2、3种串口模式均满足不了要求。但如果使用单片机的模式0,则其输出速率要求改变晶振参数。”问题如下:
      1、请问大家,如果真的要做Modbus协议是否只能用普通端口来模拟串口输出(自己做移位程序)?
      2、对于Modbus协议的起始位与停止位,Modbus协议提到是做“3.5个无字符的时间”。哪如果我是自己端口模拟串口的话,哪个“开始位”与“停止位”时间是对端口付0还是付1?

(原文件名:3.jpg)

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2011-7-29 15:54:45 | 显示全部楼层
无符号时间 就是没有发送数据 没有发送数据的时候 usart_TX = 1  

“3.5个无字符的时间”。---- 如果串口参数为:
       波特率是9600 无校验 8个数据位1个起始位 1个停止位,,则就是无符号时间>(8+1+1)*3.5 /9600秒 即 usart_TX 保持高电平时间

出0入0汤圆

 楼主| 发表于 2011-7-30 08:49:48 | 显示全部楼层
无意中了一编文章,已搞明怎样做协议
ourdev_662069XKZR7C.pdf(文件大小:6.92M) (原文件名:Modbus标准通信协议与软件编程.pdf)

出0入0汤圆

发表于 2011-8-21 10:15:34 | 显示全部楼层
回复【2楼】ye955
-----------------------------------------------------------------------

谢谢,这个值得一看

出0入0汤圆

发表于 2013-11-25 10:32:38 | 显示全部楼层
我也看一下、。。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 16:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表