猎隼
我准备在PLC的普通IO口上连接绝对值编码器,但需要测量出转速,我考虑的方法是将数值存在一个D通道里,然后实时与接收来的数值进行比较,发现改变即计算时间,不知道网友们还有什么别的提高效率的方法,学习学习。
镜头看世界
楼主是要测转速是吧,精度要求多高?
8位的编码器,每分钟50转左右。
芳季
这是一个用三菱fx写的一个宏程序。作用是计算绝对值编码器圈数的。程序可以适合fx 1S 1N 2N 3G 3Uplc。
当前程序只适合8位编码器使用。适当修改一下里面常数可以适应多种位值。
使用要求:只要保证每个扫描周期之间编码器转动小于半圈,就可以正常计圈。本程序可以多次调用一个子程序。在调用时人工分配不同的地址(程序注释上面的VD0到VD5参数)便可。
本程序纯手工打造,并不像软件生成的程序,用一次就占用一片空间。
望笑纳。
另外还有200的绝对计圈的库,可惜就是没有omron的。
程序第一个m8000可以修改成其他触点。触点原则,也是两次on之间编码器转动要小于半圈。有多个编码器需要计圈的时候,方便分时处理,平衡扫描时间。
MWB0500
定时中断,然后计算2次中断之间的数值相减,如果100ms中断,直接乘以10再除以256,转速就出来了,
楼上大哥,楼主那里写着“转数”啊。不是说转速。何况那是绝对值的,哪能草草相减可以了?过零的时候旧值是255,新值是0,明明只有向前走了一格,那么0-255=-255,那是不是判断是反转一个整圈?
咦?慢着,楼主到底是想要“转速”还是“转数”?
不过我的程序强,VD4参数得到的就是两次测量之间的增量。
是我写错别字了,是转速.
主要是不知道以什么样的思路来实现这个功能。
那,现在供个程序给你看,情况如何?尽管转速和转数差异很大,但是在程序里面两者都是互为副作用,都是在相同的基础上建立的。两次之间不可以超过半圈。
如果已经建立了上面的基础,以下就延伸两个作用。第一,在两次检测之间发生过零的,圈数需要加一减一。第二两次检测之间的分度距离,就是增量。
至于如何鉴别有过零的半圈还是没有过零的半圈,正向半圈还是反向半圈,可以参考时钟的指针理解。我就是看着个钟想出来的。
我选的是8位的编码器,通过转换变成为0-359度。
8位才256份。分不出360份的。建议你的程序按照256份计算,免得来回换算,折腾。就算你按照360份运算程序,最后设备还是只能走256份给你看。这仅仅是心理安慰一下。(呵呵,你可以设定他走1度哦,您看着触摸屏。)其实假的。
回复内容:
对: 芳季 8位才256份。分不出360份的。建议你的程序按照25... 内容的回复!
是呀,确实是假的,OMRON有这个功能,可以将8位的绝对值编码器数值直接转换成0至360的功能指令。
这个知道就行了。
现在是,你可以根据30的程序换到omron上不?其实把那些D45x去掉的话,程序量不大。这D45x只是调用需要。
对: 芳季 这个知道就行了。现在是,你可以根据30的程序换到omr... 内容的回复!
我没用过三菱的PLC,只是对普通的IO还算认识,特殊功能就不懂了。
没有什么特殊功能,全部都是加减法,还有大于小于比较。再就是子程序。现在你不需要用子程序了,就还少一点事了。上面的地址也是常规的地址没有什么特殊功能的。
对: 芳季 没有什么特殊功能,全部都是加减法,还有大于小于比较。再... 内容的回复!
对于编码器即可正转也可反转,这种情况我该怎么进行速度检测?
我现在已经编了一个程序,这个转数的计算是根据固定的时间间隔(1秒脉冲,0.5秒上升0.5秒下降的连缘触发两次实现),我的编码器每分钟最高不超过60圈,所以我做了个判断指令,只要是不管正反转角度差不超过180度就算是正确数据。
程序现在还没有试验,等弄个PLC再试试效果,我的计算间隔为0.5秒,会不会太长了?
我已做试验成功了用定时的方法进行速度检测,还算是好用,接下来准备用中断的方式再试试。
过原点的问题我用一个比较指令搞定了,估计应该会没有什么问题。
kzj5940
言言言言言言言言言言言言言言言
ouyang_ch
对: 芳季 这是一个用三菱fx写的一个宏程序。作用是计算绝对值编码... 内容的回复!
谢谢大神!但是程序呢?怎么看不到?
lyd_2005
不过我的程序强,VD4参数得到的就是两次测量之间的增量