01动作描述
①按下启动按钮X0,每隔0.3秒依次启动Y0,Y1,Y2,Y3… … Y40。
②按下停止按钮,电机逆序熄灭。
③为了程序足够简洁,不使用入门的常规写法,需要使用变址寄存器Z
02前置基础
变址寄存器:变址寄存器Z可以通过与其他编程元件组合,通过更改变址寄存器的数值可以达到更改与其组合的软元件地址的特殊寄存器。
比如以下程序当按下X0按钮时,Z0里面保存的数据就是0,那么Y0Z0这个元件的地址就是Y0。
①当按下X1时,Z0里面保存的数据就是2,那么Y0Z0这个元件的地址就是Y2。
②当按下X2时,Z0里面保存的数据就是5,那么Y0Z0这个元件的地址就是Y5。
(更加详细的内容可以登陆基础培训网,学习完整的知识点)
03程序编写及思路
①启动程序
XO按钮作为启动,按下第一次交替输出指令ALT M0,让M0由断开变为导通,M0是启动标志位,在M0的常开触点的条件下,执行定时器T0 K3,0.3秒过后T0就被自身的常闭触点断开,复位了,复位之后,它的常开触点右开始闭合重新定时,这样每隔0.3秒定时器T0就动作一次。
我们利用X0的上升沿去触发置位指令,第一次Z0保存的数据等于0,Y0Z0的地址时Y0,点亮了Y0,然后顺便给Z0自加了1,等于1;第二次T0导通时,由于Z0等于1,Y0Z0的地址变成了Y1,这个时候SET Y0Z0点亮的时Y1,以此类推,下一次点亮Y3,直到点亮到Y40时,Y40常开闭合,把定时器T0和变址寄存器Z0复位,同时置位M1,M1的常闭触点断开置位和变址寄存器加一的程序,Y点启动到此位置
②停止程序
XO按下第二次,ALT指令让其由导通变为断开
这时M0的下降沿会有一个导通的信号,给Z0赋值赋了K32(这时有些同学会说了,为什么Y40不是给Y40而是Y32。这个是因为Y点是8进制的,Y7后面就是Y10,那么假如我们给Z0给了一个K8的数据,那么对应的地址应该是Y10而不是Y8,所以按照这个顺序去算,Y40应该是第32个点),由于M0断开了,所以它的常闭触点就会闭合,我们用与之前同样的定时器的方法触发T1,每隔0.3秒就是触发T1一次。
下面我们利用T1的上升沿去复位对应的Y点,第一次复位的是Y40,然后让Z0自减1;第二次,由于Z0的数据减1变成K31,这个时候复位的是Y37,同样的道理Y点不断地往低编号去复位。直到Z0等于0时,复位结束,这个时候我们复位掉M1这个点。
上面这样的程序存在2个问题,就是Y0停下了,T1还在不断地计数,Z0还在往下减,这个时候在定时器的位置加了一个[<> z0 k0],表示Z0不等于0时才能导通,等于0了就不导通了。程序如下:
这样写还存在1个问题,你会发现停止时Y0没有灭掉,这是由于当程序第43步Z0等于1时,复位了Y1,然后就做了减1,这时Z0变为0。T1的定时器就没办法导通了,这时我们可以换一个思路去做这个控制,优化这一步,可以用Y1的下降沿信号,去触发定时器,再定个0.3秒,去复位掉Y0。整段停止的程序应该写成如下:
(技成培训原创。作者:陈育鑫,未经授权不得转载,违者必究!)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |