老师好,我有个大概思路,有4组数据需要共用一组高速计数器,来实现定长,如hc0,怎么做到hc0数据清零后其它4组的数据继续累加清零后的hc0数据,还有12号中断,当当前值等于预设值时,传送数值给VD10,怎么实现循环传送,或者累加传送值,现在是传送一个值就停止,清零hc0后,重新发脉冲到当前值等于预设值,也没有累加vd10的值,,我描述的比较乱,刚学,希望老师谅解
问题补充:
老师好,定长是在输送带上进行,思路是光电看到物体,通过上升沿传送编码器脉冲到vd10,然后比较脉冲数,推动q0.2执行机构动作,到达设定长度后,执行机构复位,这个做一组我可以实现,做多组的话,也可以把hc0的数据传送给其它VD,现在是定长不准确,机械速度每分钟30米时,长度误差10mm以上,不知道是不是hc0数据没有复位导致,所以上面的问题比较杂乱,希望老师给一个比较合理设计思路,谢谢了
最佳答案
实际上高速计数器对于初次应用确实可能会带来一些困惑。
你的疑惑也不少,一个一个不按顺序回复。
首先200smart 没有了原200的12号中断事件,中断事件与硬件接线和计数方式是有关联的。
你定义的HSC0是可以的。
不清楚你的定长是在一个360旋转辊道上进行?
如果是你定义加计数就可以了。你的编码器是A/B正交?这样需要2个高速输入口的地址占用。
如果需要外部复位,则选择模式10,不需要的选择模式9
如果不需要方向,仅仅只是加计数,那么,选择模式0也可以的。
大致明白你的需要,就是需要多次重复写预设值。
编程的思路:
SMB37
对照定义,看SMB37每位的含义,然后选择你需要的,最后转换为16#数据写入SMB37。
SM37.5你是必须选择的,也这个位是更新预设值。
定义当前值等于预设值中断。
这样,初始化完成启动计数后,当高速计数器当前值移动到目标值后,当前值等于预设值,进入中断,你重新再次调用预设值(新的目标值),当第二次移动到位置后,相当于当前值再次等于预设值,又进入中断子程序中,你再次调用新的预设值,这样不断写如新预设值,设备就可以在不同的位置定位。假设只有4个位置,你进入3次中断后,清楚中断次数记录的寄存器,等待下一个高速中断的循环进行。
补充问题回复:
你这样理解看可以不可以,你高速输入模式是选择什么?
你选择一个外部复位模式(这个外部复位就是光电开关)来做。当光电开关上升沿到达时,高速计数器开始计数,当计数到达预设值后,进入当前值等于预设值中断,你在中断中继续写预设值的新值。
如果这个长度的固定的,那么,预设值也不需要写。当光电开关上升沿再次到来后,高速计数器的数据会知道从原始值开始计数的。
提问者对于答案的评价:
谢谢老师的详细解答,还有个疑问,如果是一路光电倒是可以这样设计,上升沿时让hc0重新计数,到了预设值执行就好,但是,如果2路或是多路的话,重新计数是不是会影响其它路的数据准确性,毕竟它们工作还没有做完,hc0已经重新计数了,主要卡在这里,复位位置的问题,想不出来,因为流水线上产品是源源不断过来的,
最佳答案作者回复:
不会的。你需要定义SMB37的高速计数器控制字节。
10mm精度控制要求不算高的。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc346300.html