登录
首页 PLC论坛 三菱Mitsubishi
回帖 发帖
正文

主题:【话题】有偿求助程序思路(20241119)

点击:573 回复:22

楼主
   本人有个程序需要编写,涉及到高速脉冲量输入计算每分钟多少转,我现有程序只能以1秒钟或500ms的采集周期来计算,但是达不到控制要求,控制要求是<100ms采集周期计算出当前值,但现实中是有这样的案例,只是我的涉及思路错误,现群里求计算方法和程序思路,如程序校验可行,愿出1000元,以示谢意,微信:cumminsPower-china。
见图:我的程序是采用SPD指令,D0是脉冲采集量,D800是采集时间,图中采集时间是1000ms,D802是电机一圈的齿数,计算如下:
如果是1000ms采集周期得出:
     2950脉冲量×118齿÷60秒=1500转;脉冲量是2949往下或2951往上都可以计算出正确的当前值。
 如果用这种方法计算法100ms或以下时间为采集周期,计算值就变形了,例如在100ms的时间采集了295个脉冲,计算出转速是1500转,但是如果在100ms的时间采集了294个脉冲,计算出转速是1494.9转,那么问题来了:如果当前转速是1499或其它值,这个转速值该怎么利用高速脉冲量计算出来。
求群里大神不吝指教!!!!
附件 4fbc1f1e17b167a1c08ad18401df77b.jpg
最后修改:2024/11/20 9:49:03
24-11-18 22:48
建议你使用计算每个脉冲周期时间的办法,应该会比较准确
要用到中断和精确计时器,你可以试试
24-11-19 00:36
1000元?我能建议换家PLC吗?用欧家的,我可以送你曾经利家使用了几十套的程序
核心可能与SPD(不了解)相同,5000srpm误差2-3,修正后0-1
24-11-19 06:56
这个不难,你的问题在于时间短脉冲个数少导致精度不够,同时又需要足够短的时间计算出转速,那么高中物理里面经常用的移动平均法就可以实现,程序来说构建一个队列,你用SPD指令每100ms采集一个脉冲量放到一个队列里面,放满之后开始对队列求和算速度,放满之后队列里面每100ms进一个出一个即可
24-11-19 08:23
个人觉得这个无解,更新速度是100ms,就是0.1秒,脉冲数精确的是1个,
而这1个对应的转速是 1*10*60/118=5.08转/分钟,简单说最终的分辨率就是5.08转
无论你怎么计算,多一个少一个,最终的转速就是正负5.08转
如果更新速度要求是100ms,精确转速是1转
个人觉得要把118齿的计数盘改成600脉冲的编码器才行
24-11-19 08:40
直接找PLC供应商,能帮你把程序写好表情
24-11-19 09:06
你要需要中断程序里写这个程序就没有什么问题!你在其它地方写 就会因为扫描周期的原因!会有误差
24-11-19 10:01
看来你这1000块钱不好挣啊
24-11-19 10:22

引用 YXBK 在 2024/11/19 8:40:34 发言【内容省略】

这个计算好像那里不对,正负5的误差也太大了,给利xx公司做的,采样最少6最多好像12(利用轴对接法兰盘螺栓),也没这么大误差(用手持测速仪采样才一个/周),客户自带转速显示。
关键是采样时间短
转速要即时速度?那就看着数字跳来跳去,设备速度稳定得到的数值也应该稳定。
利家客户要的外挂速度速度显示,就是选了多个方案,PLC的程序也试过中断,程序计算,高速计数(类似楼主方案)……试验结果使用IO(设置8ms)数值到是比较稳定,就是误差利家不满足。
在一次做伺服控制时发现可以求转速的指令,结果很好(高于客户5‰要求),最后找出修正点,修正后客户非常满意,一下订了几十单。
后来这套不在用,原因是设备上自有速度显示。
24-11-19 13:17
算法是对的,结果不理想,那是给的已知条件造成的
如果用600脉冲编码器,就是正负1转
要是用6000脉冲的,还可以正负0.1呢
其实一般来说1秒的刷新速度已经不错了,但要求0.1秒,也不是不行
改一下配置就可以了
但是要拖拉机开出跑车的速度,不好意思,做不到。
24-11-19 14:32

上一页下一页

工控新闻

更多新闻资讯