使用硬件计数器,时间中断,DCNT指令写在中断程序里面,执行到DCNT指令的时候就会去读硬件计数器的现在值,读到后立即执行复位计数器指令。
500mS时间比较长,需要在中断程序中做计数多长中断到500mS。
比如中断时间设置为50mS,中断程序中每次都执行DCNT指令(这样PLC启动后50mS就启动计数器了),再设置一个计数器,当计数到10次时(也就是500mS)就把计数器值读出来,立即复位计数器。
这样做最极端的情况下就是丢失一个脉冲而已,也就是在DCNT指令执行到复位计数器之间的几步指令之间(也就是数uS)内正好到来一个脉冲,这个脉冲虽然被计数器记录到,但却被复位了。也就是复位计数器指令要与DCNT指令尽量靠近,最小也得有一条DMOV指令把计数器读出来的指令。
使用时间中断的目的是非常精确的定位时间段,只有这个时间精确了才有测准确的基础。
如果要在指定的M启动后才开始计数,比较麻烦一点。因为时间中断是不受控的,是由系统自动启动的。启动M到来后到开始计数最大的允许延迟时间是多少?如果50mS觉得比较长,只能把时间中断调小些,比如10mS,但这样中断太过频繁,开销过大。
当然做过的,感觉特准确。
在忽略定时误差的情况下,最大也就是1个脉冲的误差。这个误差就是从DCNT指令开始到复位计数器的这个短暂时间内所丢失的脉冲。这个时间不过就是数uS定义为T1。速度脉冲的频率PLC最大接受100kHz,实际上比如用1000线的编码器,50rps,也就是50kHz的频率,周期20uS,显然大于T1,也就是最大丢一个脉冲。
检测周期你为500mS,那么1000线*50rpS*(500mS1/S)=25000个脉冲,也就是在忽略时间中断误差的情况下最大误差为1/2W5。定时中断的时间精度没有看到台达给出的参数,但应该是非常高的,估计在uS级别,即使在100uS级别,也不过就是100uS/20uS+1=6,也就是误差不过就是6/2W5.
再考虑晶体振荡器时间误差的情况(现在的高频晶体减震器精度还是挺高的),我觉得0.5/1000的综合精度是完全没有问题的。
回复内容:
对: 第五纪冰川 回复内容:对: 刘雨菡2011 回复内容:对: 刘雨菡... 内容的回复!
我用的是台达DVP48EH3-T,四个HHSC我都 已经用完了,没有办法并联了,两个用于伺服反馈的信号计算位置,两个用于编码器测转速,用AB相的话只有5KHZ的频率,不知道够不够用,我算出来编码器大概有600RPM,用500PPR的编码器的话就是5KHZ,再高的话就计不了了,我还有一个测线速的和计米的已经是用的软件计数器了,就是一个信号并联,一个测转速,一个计米,用的是NPN的感应头,一转10几个脉冲,就是两个编码器的转速我想测准一点,因为那个脉冲算出来是要给伺服的脉冲频率信号,转速越准伺服走得越准,