三菱ST语言中的循环指令编程方法
循环与变址是PLC中处理复杂数据,优化计算非常有用的指令。在三菱ST语言中,支持3种类型的循环语句。其中最好用的FOR循环指令https://p3-sign.toutiaoimg.com/tos-cn-i-6w9my0ksvp/e6f0c01240764995b050c0b55be8feb5~tplv-tt-shrink:640:0.image?lk3s=06827d14&traceid=202512272150544B4F0E5A962B6C9C904B&x-expires=2147483647&x-signature=46o%2BC%2BJbilD3GkfyhOTZsW8QEKI%3D根据增加表达式对初始化后的循环变量进行加法或减法运算,在达到最终值前一直重复执行从DO算起END_FOR内的1个以上的语句。 FOR...DO语句结束后的重复变量保持着结束时的值。https://p3-sign.toutiaoimg.com/tos-cn-i-6w9my0ksvp/166c9bec123d4d87aa3fca724e263229~tplv-tt-shrink:640:0.image?lk3s=06827d14&traceid=202512272150544B4F0E5A962B6C9C904B&x-expires=2147483647&x-signature=84mnmtKVlw%2Fkev7RpD%2B5Zxu2STc%3D
控制案例1:要求D0~D99中保存的最大数据,可以使用以下程序进行控制程序开始先清空D400,然后进入一段FOR循环,循环第一次,Z0等于0,所以D0Z0会等效于D0,后面的MOV指令会判别D0和的大小,D0大于D400,就把D0传送给D400。然后进入第2个周期,保存的数值加1,Z0保存的数据为1,所以D0Z0会等效于D1,后面的MOV指令会判别D1和的大小,D1大于D400,就把D1传送给D400。然后进入第3个周期,保存的数值加1,Z0保存的数据为2,所以D0Z0会等效于D2,后面的MOV指令会判别D2和的大小,D2大于D400,就把D2传送给D400。... ... 这样到Z0等于99,相对于D400分别从D0比较到D99,小于寄存器的值就会被MOV指令传送进去,从而实现D400保存的数据为最大值。https://p3-sign.toutiaoimg.com/tos-cn-i-6w9my0ksvp/d0b3720a23d049299451608eeb29b1be~tplv-tt-shrink:640:0.image?lk3s=06827d14&traceid=202512272150544B4F0E5A962B6C9C904B&x-expires=2147483647&x-signature=P3oVzRLuDBq71CE4TLz3Ardwz9I%3D
控制案例2:以下为触摸屏的输入框,可以输入6个位置,然后通过PLC的计算,最终输出给控制的伺服电机控制位置。https://p3-sign.toutiaoimg.com/tos-cn-i-6w9my0ksvp/ec608853044a4d4794f63e930091f845~tplv-tt-shrink:640:0.image?lk3s=06827d14&traceid=202512272150544B4F0E5A962B6C9C904B&x-expires=2147483647&x-signature=ZTHuphLJgbhX4pllaQWWTbsJiHE%3D
数据输入为浮点数,我们需要把距离一一乘以脉冲当量0.01,再用FLT2DINT指令转换成整数,才能用定位指令去控制。此处我们使用了数组的方式实现变址,完成了最终的计算脉冲数最终保存到D0~D10。https://p3-sign.toutiaoimg.com/tos-cn-i-6w9my0ksvp/d3f780eb6dc646f2a2a2fa51a298b40c~tplv-tt-shrink:640:0.image?lk3s=06827d14&traceid=202512272150544B4F0E5A962B6C9C904B&x-expires=2147483647&x-signature=eimtBcEQF5D3K7cFMV4HMn7Sa4s%3D
https://p3-sign.toutiaoimg.com/tos-cn-i-6w9my0ksvp/4808392b819643a4863c03b5d672e154~tplv-tt-shrink:640:0.image?lk3s=06827d14&traceid=202512272150544B4F0E5A962B6C9C904B&x-expires=2147483647&x-signature=SxxXA54hwUwNFHJIGYJze2Rwy3w%3D
控制案例3:有一个笼子,里面关了若干只鸡还有兔子,可以数出鸡和兔的总数和总的腿数量,需要编写一套程序,只需填入总动物数和腿数,就能自动计算出鸡的数量和兔的数量。https://p3-sign.toutiaoimg.com/tos-cn-i-6w9my0ksvp/30cc5ae08eb341b1b5fa6f190f5647b6~tplv-tt-shrink:640:0.image?lk3s=06827d14&traceid=202512272150544B4F0E5A962B6C9C904B&x-expires=2147483647&x-signature=6XDcQc3lXSVeTzcetH7Hwx2Hqu4%3D
通过假设法,假设鸡的数量为0~32767,通过鸡的数量可以计算出总的腿的数量,程序用IF语言判别,腿数和数到的数量是相等的,就最新EXIT指令,跳出循环(此时假定的鸡的数量就是结果)https://p3-sign.toutiaoimg.com/tos-cn-i-6w9my0ksvp/1be8b1add9204a8eacfdbd0eeb8b55be~tplv-tt-shrink:640:0.image?lk3s=06827d14&traceid=202512272150544B4F0E5A962B6C9C904B&x-expires=2147483647&x-signature=zLDxgoelStYL8LLWK9hcZH5yY3Q%3D
页:
[1]