大侠你好 我想请教下我用的是西门子S7-200的PLC能不能做到啊 感觉里面没有循环高速计数器啊

还是高速计数器那个题目 谢谢
2024-12-11 21:44:48
推荐回答(2个)
回答1:

可以的,s7-200不能设为循环计数器也没关系,只要到到达一定的数值程序将计数器置0就可以了,相当于循环计数器了,如果要精确可以用中断处理这个置0指令,你这个项目就不需要了,直接在循环程序中处理就可以了。
s7-200中用&来间接寻址,用vw100做指针,程序上电时将vw100清零。
比如推第一个物料时计数器为1000,输送带长度为5000脉冲,那么推一个物料时执行
+d hsc0 5000 vd88
if{
>d vd88 100000
-d vd88 100000}
movd vd88 &vw100
+i vw100 4 vw100
推第二个物料时计数器为2000,那么执行
+d hsc0 5000 vd88
if{
>d vd88 100000
-d vd88 100000}
movd vd88 &vw100
+i vw100 4 vw100

在将高速计数器加5000后要判断一次是否大于你的高速计数器清零值(我假设的是100000),如果大于要将该值减去你的最大值后再保存,否则这个值永远也达不到,就会漏推出去物料。

你可以发现上面的程序是一样的,那么就可以将这段程序编成子程序,每次推物料时执行一次这个子程序,一定只能执行一遍。
再主程序中加入一个判断程序,判断vw100,如果vw100大于80,将其清零就可以实现位置只能保存在vd0-vd80之间了,也就是保存了21个位置,如果不够你可以修改指针大小,之道满足你的要求。
主程序中比较这个区域中的数值和hsc0,计数器大于任何一个数值时动作一次第二个电磁阀就可以,这个动作也需要用到微分指令。
很久没用s7-200了,很多指令记不住了,所以程序只能表达一下意思,不正确的。你自己根据这个意思修改一下就可以了。

回答2:

200系列有最高30KHz的高速计数器,如果要对高于这个频率进行计数,你需要更换你的PLC。