3612|13

30

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

28027可以做MODBUS-RTU吗 [复制链接]

各位好,之前用28027做了一个步进电机驱动器,运行效果还挺好的,脉冲+方向控制也毫无问题。
因为公司后来需求发生改变,需要用485发送命令来控制电机的速度,起停,梯形加速等,这就相当于把电机控制的部分也加到了驱动器里。于是我就自定义了一个通信协议,运行起来问题也不大,只是限定了在电机运转的时候,屏蔽SCI的接收和发送。因为在电机运转的时候,要求很高的响应速度,如果这时候去处理串口数据,会导致丢步等问题。

但最近考虑一个问题是,如何把标准的MODBUS协议写进去?之前测试过,好像每次最多只能接收8个字节的数据,超过就会出问题。

不知道各位是怎么处理串口的数据接收和发送的深度的问题?有没有人成功嵌入modbus标准协议的?


最新回复

PID计算应该也是有周期的   详情 回复 发表于 2014-7-11 10:08
 
点赞 关注

回复
举报

5310

帖子

453

TA的资源

五彩晶圆(高级)

沙发
 
是不是EPWM工作起来会忽略掉SCI啊?
不知道你原来步进驱动器 已经站用了多少资源了!

点评

.text 0 003f6000 00000bd6 .econst 0 003f6bd6 00000500 .cinit 0 003f70d6 00000047 ramfuncs 0 003f711d 0000001f RUN ADDR = 00008000  详情 回复 发表于 2014-7-10 13:59
 
 

回复

88

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
移植过freemodbus,不知道你帧间检测设置的多长时间,一般的说如果严格按照3.5T就会出现你说的情况,我一般都是设置为10ms
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(中级)

4
 
接收数据时,都是中断完成,包括帧间检测也是.只有回复帧解析及帧回复是在循环中,并且,数据发送还是中断完成,对其他的影响应该不是很大!

点评

我刚又看了一下,我的接收数据是在中断里做的,数据解析放在主循环,但fifo深度只有4位啊~ 如果数据长度比较长怎么办?  详情 回复 发表于 2014-7-10 14:01
 
 
 

回复

30

帖子

0

TA的资源

一粒金砂(中级)

5
 
蓝雨夜 发表于 2014-7-10 12:01
是不是EPWM工作起来会忽略掉SCI啊?
不知道你原来步进驱动器 已经站用了多少资源了!

.text      0    003f6000    00000bd6     .econst    0    003f6bd6    00000500   .cinit     0    003f70d6    00000047   

ramfuncs   0    003f711d    0000001f     RUN ADDR = 00008000
                  003f711d    0000001b     F2802x_SysCtrl.obj (ramfuncs)
                  003f7138    00000004     F2802x_usDelay.obj (ramfuncs)

codestart
*          0    003f7ff6    00000002     
                  003f7ff6    00000002     F2802x_CodeStartBranch.obj (codestart)

.reset     0    003fffc0    00000002     DSECT
                  003fffc0    00000002     rts2800_ml.lib : boot.obj (.reset)

vectors    0    003fffc2    00000000     DSECT

.stack     1    00000050    000003a0     UNINITIALIZED
                  00000050    000003a0     --HOLE--


资源占用量应该也不是很大,还有很多空余~

我在EPWM的中断里主要是做了一个电流采样,算了个平均值。

主要的PID运算在主循环里。

 
 
 

回复

5310

帖子

453

TA的资源

五彩晶圆(高级)

6
 
你PWM输出控制细分电流吗?

点评

对啊,PID来算的,控制占空比,进而控制电流  详情 回复 发表于 2014-7-10 14:02
 
 
 

回复

30

帖子

0

TA的资源

一粒金砂(中级)

7
 
dwh000 发表于 2014-7-10 12:25
接收数据时,都是中断完成,包括帧间检测也是.只有回复帧解析及帧回复是在循环中,并且,数据发送还是中断完成, ...

我刚又看了一下,我的接收数据是在中断里做的,数据解析放在主循环,但fifo深度只有4位啊~
如果数据长度比较长怎么办?

点评

弄个输入数据存储区  详情 回复 发表于 2014-7-10 14:10
和FIFO的深度没有必然关系,就是没有FIFO也是可以做的!FIFO满后数据取出放入数据输入的buff,直到帧间检测的时间超过3.5t就可以处理了!  详情 回复 发表于 2014-7-10 14:09
 
 
 

回复

30

帖子

0

TA的资源

一粒金砂(中级)

8
 
蓝雨夜 发表于 2014-7-10 14:01
你PWM输出控制细分电流吗?

对啊,PID来算的,控制占空比,进而控制电流
 
 
 

回复

5310

帖子

453

TA的资源

五彩晶圆(高级)

9
 
每次PWM中断,PID计算会不会把串口给忽略掉啊?

不知道哪个中断优先高点啊

点评

PID计算应该也是有周期的  详情 回复 发表于 2014-7-11 10:08
这个我也不太清楚,不过忽略串口应该不至于吧,不过我的中断里的程序都很少,短短几行而已  详情 回复 发表于 2014-7-10 14:20
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(中级)

10
 
mayiqing888 发表于 2014-7-10 14:01
我刚又看了一下,我的接收数据是在中断里做的,数据解析放在主循环,但fifo深度只有4位啊~
如果数据长度 ...

和FIFO的深度没有必然关系,就是没有FIFO也是可以做的!FIFO满后数据取出放入数据输入的buff,直到帧间检测的时间超过3.5t就可以处理了!
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(中级)

11
 
mayiqing888 发表于 2014-7-10 14:01
我刚又看了一下,我的接收数据是在中断里做的,数据解析放在主循环,但fifo深度只有4位啊~
如果数据长度 ...

弄个输入数据存储区
 
 
 

回复

30

帖子

0

TA的资源

一粒金砂(中级)

12
 
蓝雨夜 发表于 2014-7-10 14:06
每次PWM中断,PID计算会不会把串口给忽略掉啊?

不知道哪个中断优先高点啊

这个我也不太清楚,不过忽略串口应该不至于吧,不过我的中断里的程序都很少,短短几行而已
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(中级)

13
 
蓝雨夜 发表于 2014-7-10 14:06
每次PWM中断,PID计算会不会把串口给忽略掉啊?

不知道哪个中断优先高点啊

PID计算应该也是有周期的

点评

低速的时候,PID计算的周期可以变的很慢。但高速的时候,要求响应速度很快。一旦响应不及时,很容易丢步  详情 回复 发表于 2014-7-11 17:20
 
 
 

回复

30

帖子

0

TA的资源

一粒金砂(中级)

14
 
dwh000 发表于 2014-7-11 10:08
PID计算应该也是有周期的

低速的时候,PID计算的周期可以变的很慢。但高速的时候,要求响应速度很快。一旦响应不及时,很容易丢步
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表