找回密码
 立即注册
楼主: LAOXU

Ai8051U,做个开源运动控制器(PLC),方案讨论

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-6 19:45:16 | 显示全部楼层
一束光*** 发表于 2024-11-6 17:55
脉冲输出最好做成4轴的。主要是软件不好做。我之前做了一款硬件,软件写了一点就没有继续。 ...

同感,这个软件要做的好,要下不少功夫(主要是STC不是针对运动控制设计的,所以只能依靠大量的软件辅助)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-6 20:00:23 | 显示全部楼层
脉冲式运动控制器的难点,本质上并不在于要输入、输出频率做的多高,
由于脉冲输入、输出最小单位是1脉冲(整数),假如输入某个频率,输出要求其1/3的频率,
即0.333333333333......倍,精度(同步性)做高很难,通常只能尽量通过提高频率来做到。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:338
  • 最近打卡:2025-04-25 16:31:21
已绑定手机

14

主题

600

回帖

2199

积分

荣誉版主

积分
2199
发表于 2024-11-6 20:16:51 | 显示全部楼层
本帖最后由 xiangzichen 于 2024-11-6 20:18 编辑

微信截图_20241106201158.png

STC8H2K32U做的,不是PLC,是个偏向于CNC的控制器,自定义的指令.
6路步进直线插补时,最高32K,单一定时器做的插补运算.16路输入(74HC165)16路输出(74HC595),其中一路输入可以高速计数(T3).
一开始用其他型号做的,后来发现STC8H2K32U有硬件CRC,空了改成支持modbus的.
没用任何芯片,直接USB转CDC串口,超级方便啊.

点评

不错,51只是输出频率低了些  发表于 2024-11-7 13:34
回复 支持 反对

使用道具 举报 送花

2

主题

185

回帖

1048

积分

金牌会员

积分
1048
发表于 2024-11-7 11:19:58 | 显示全部楼层
LAO*** 发表于 2024-11-6 19:35
是的,通用现场总线传输控制信息,运动控制器编程简单(具体控制难度都转移到下位机一一伺服电机驱动器上 ...

STC32G带CAN口,控制CANopen总线伺服驱动器没问题,比发脉冲简单多了

点评

数值计算要用到浮点运算,Ai8051U自带硬件浮点运算库,而STC32G则没有, 浮点运算速度太慢了,故没有采用。  详情 回复 发表于 2024-11-7 13:32
回复 支持 反对

使用道具 举报 送花

2

主题

185

回帖

1048

积分

金牌会员

积分
1048
发表于 2024-11-7 11:24:51 | 显示全部楼层
LAO*** 发表于 2024-11-6 19:41
高速输入频率不小于100KHz,计划有两路达到500KHz。
高速输出频率也不小于100KHz。
...

脉冲输出频率不小于100KHz这个指标太低了,对于伺服电机来说按一圈1万个脉冲,100KHz也才每分钟600转,远达不到伺服电机的额定转速

点评

没办法,受芯片硬件限制,做不了太高 注:不能单看单路纯脉冲输出,比如用T0~T4,输出脉冲几乎可达IO口的翻转 极限了(近20MHZ)。 但是,若要在输出脉冲时,同时统计输出脉冲数量,只能依靠软件辅助了, 输出脉冲最  详情 回复 发表于 2024-11-7 11:55
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:382
  • 最近打卡:2025-05-02 07:58:25
已绑定手机

12

主题

43

回帖

702

积分

高级会员

积分
702
发表于 2024-11-7 11:47:33 | 显示全部楼层
zxcv*** 发表于 2024-11-7 11:24
脉冲输出频率不小于100KHz这个指标太低了,对于伺服电机来说按一圈1万个脉冲,100KHz也才每分钟600转,远 ...

100KHZ可以了,伺服还有电子齿轮比。实际用不到这么高。信捷的plc也是到100k
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-7 11:55:50 | 显示全部楼层
zxcv*** 发表于 2024-11-7 11:24
脉冲输出频率不小于100KHz这个指标太低了,对于伺服电机来说按一圈1万个脉冲,100KHz也才每分钟600转,远 ...

没办法,受芯片硬件限制,做不了太高
注:不能单看单路纯脉冲输出,比如用T0~T4,输出脉冲几乎可达IO口的翻转
极限了(近20MHZ)。
但是,若要在输出脉冲时,同时统计输出脉冲数量,只能依靠软件辅助了,
输出脉冲最高频率马上大幅度下降,再来几路同时进行,还得降数倍!

点评

对的,有了插补运算,频率确实大幅下降的.我用STC32G两个轴插补,没怎么优化,轻松超过100K,纯单一定时器完成的,可一旦到六轴,频率再怎么优化也没有超过40K.如果想达到高速脉冲输出,我觉得要双CPU比较舒服,一个粗插补,将  详情 回复 发表于 2024-11-7 14:02
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-7 13:32:56 | 显示全部楼层
zxcv*** 发表于 2024-11-7 11:19
STC32G带CAN口,控制CANopen总线伺服驱动器没问题,比发脉冲简单多了

数值计算要用到浮点运算,Ai8051U自带硬件浮点运算库,而STC32G则没有,
浮点运算速度太慢了,故没有采用。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:338
  • 最近打卡:2025-04-25 16:31:21
已绑定手机

14

主题

600

回帖

2199

积分

荣誉版主

积分
2199
发表于 2024-11-7 14:02:13 | 显示全部楼层
本帖最后由 xiangzichen 于 2024-11-7 14:04 编辑
LAO*** 发表于 2024-11-7 11:55
没办法,受芯片硬件限制,做不了太高
注:不能单看单路纯脉冲输出,比如用T0~T4,输出脉冲几乎可达IO口的 ...

对的,有了插补运算,频率确实大幅下降的.我用STC32G两个轴插补,没怎么优化,轻松超过100K,纯单一定时器完成的,可一旦到六轴,频率再怎么优化也没有超过40K.如果想达到高速脉冲输出,我觉得要双CPU比较舒服,一个粗插补,将运动轨迹转换成小线段,DMA给插补的cpu,专门发送脉冲.这样估计能提高不少.

点评

此方案可行!  发表于 2024-11-7 16:07
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:365
  • 最近打卡:2025-05-02 00:20:03

6

主题

319

回帖

2206

积分

金牌会员

积分
2206
发表于 2024-11-7 14:38:07 | 显示全部楼层
STC单片机这么便宜,可以考虑下多处理器方案,任务分配下去,各个通道自主运行,主芯片做总体协调

点评

多处理器方案,本质上相当于类似CAN总线驱动,主MPU负责将实时驱动数据,通过CAN总线。输出分配到各个从MPU。 从MPU相当于解码器(格式转换器),将驱动数据解析,转换成脉冲输出驱动伺服控制器。 是否感觉有点多余  详情 回复 发表于 2024-11-7 16:06
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 13:24 , Processed in 0.207578 second(s), 124 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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