初步的需求是这样的:
物料架上面有一个双位数码管,29个物料盒,每个物料盒上面有对应的红绿双色灯,并且每个物料盒有对应的一个光电传感器,员工将手伸进去,就会触发对应的传感器。
(好吧,我心里也是很无语,一开始还以为取料也是自动的,原来是人工的。)重点来了!!
一,触摸屏上面有三个按钮,1复位,2缺料跳过,3开始取料
二,当点击“开始取料”的时候,数码管提示当前物料需要取的数量。员工触碰感应器3秒以上才可以跳到下一个灯,提示下一个物料需要取的数量。
三,点击“复位”,机器恢复初始状态
四,点击“缺料跳过”,当前灯变绿为红,跳到下一个物料盒,下一个继续亮绿灯数码管提示当前的数量。
五,当所有取料都执行了,回头将亮红灯的物料盒,变红为绿,重新取料。
六,整个程序要便于更改数量,及取料顺序。(重点)
七,PLC要用台达的ES2.
于是我开始分析这里面的逻辑关系,发现事情并不简单。
对于数码管的逻辑是,{谁亮绿灯我显示谁}
对于绿灯的逻辑是,{到哪个物料盒哪个绿灯就要亮}
对于红灯的逻辑是,{嗨!我这缺料了,你去下一个物料盒去领吧,回头再来}
我用这种拟人化的方式,来分析用电器什么时候开,什么时候关。
问题来了,我要用梯形图来表示这句{谁亮绿灯我显示谁},这个数码管是这么玩的:他一共6个输入点。前4个是需要输入一个8421型BCD码表示数字,第5个是负责显示各位数字,第6个是显示十位数字。例如输入001101,再马上输入000110,数码管就会显示31出来。两次输入时间间隔不得低于10毫秒。
我觉得头有点大,面对这种情况,我觉得还是用MOV指令最好,直接把K3这个数MOV到Y0就好了,这样PLC会自动转成二进制出来的。指令是mov k3 k1y0。感谢台达支持这个指令。那么我只有开一个口子给数码管就行了,于是正确的代码就是:MOV d100 k1y0 & ;MOV d101 k1y0 ;
这样我只需要每次改变d100和d101里面的数值就可以了。如果经理想输入的数值是49打比方,那么我就用除法指令,div k49 k10 d100,余数会自动保存到d101中
接下来对于绿灯的逻辑是,{到哪个物料盒哪个绿灯就要亮}
这个有点麻烦,因为经理还没有规定好,到底哪个灯先亮,哪个灯后亮。但是要求我写出来的程序便于修改,而顺控图我还不会画,我现在只会梯形图。于是我就想,能不能利用梯形图自己做个“顺控”呢?
说干就干!还是利用mov指令,因为我比较熟悉它,控制位的方法还有两个,一个是位循环左移,一个是位循环右移。我先把K1 MOV到一个M的组合元器件里面,然后利用左移指令来表示开启下一个灯,这时候他任意时候想跳过或者取料结束,我都可以触发左移,去点亮下一个灯,执行下一个步骤。
这么做还有一个好处就是比较逻辑清晰,当进入第一个取料步骤时,其他感应器就算被触发了没没卵用。
不知道兄弟们有没有理解我的表达,在此献丑只为留个纪念,也给新人练练手。
具体如何编程就不详述了。大家有兴趣也可以写写,忘记说了,后来领导又加了一个按钮功能“重复上一步骤取料”。不知道哭好还是笑好……
初步的需求是这样的:
物料架上面有一个双位数码管,29个物料盒,每个物料盒上面有对应的红绿双色灯,并且每个物料盒有对应的一个光电传感器,员工将手伸进去,就会触发对应的传感器。
(好吧,我心里也是很无语,一开始还以为取料也是自动的,原来是人工的。)重点来了!!
一,触摸屏上面有三个按钮,1复位,2缺料跳过,3开始取料
二,当点击“开始取料”的时候,数码管提示当前物料需要取的数量。员工触碰感应器3秒以上才可以跳到下一个灯,提示下一个物料需要取的数量。
三,点击“复位”,机器恢复初始状态
四,点击“缺料跳过”,当前灯变绿为红,跳到下一个物料盒,下一个继续亮绿灯数码管提示当前的数量。
五,当所有取料都执行了,回头将亮红灯的物料盒,变红为绿,重新取料。
六,整个程序要便于更改数量,及取料顺序。(重点)
七,PLC要用台达的ES2.
于是我开始分析这里面的逻辑关系,发现事情并不简单。
对于数码管的逻辑是,{谁亮绿灯我显示谁}
对于绿灯的逻辑是,{到哪个物料盒哪个绿灯就要亮}
对于红灯的逻辑是,{嗨!我这缺料了,你去下一个物料盒去领吧,回头再来}
我用这种拟人化的方式,来分析用电器什么时候开,什么时候关。
问题来了,我要用梯形图来表示这句{谁亮绿灯我显示谁},这个数码管是这么玩的:他一共6个输入点。前4个是需要输入一个8421型BCD码表示数字,第5个是负责显示各位数字,第6个是显示十位数字。例如输入001101,再马上输入000110,数码管就会显示31出来。两次输入时间间隔不得低于10毫秒。
我觉得头有点大,面对这种情况,我觉得还是用MOV指令最好,直接把K3这个数MOV到Y0就好了,这样PLC会自动转成二进制出来的。指令是mov k3 k1y0。感谢台达支持这个指令。那么我只有开一个口子给数码管就行了,于是正确的代码就是:MOV d100 k1y0 & ;MOV d101 k1y0 ;
这样我只需要每次改变d100和d101里面的数值就可以了。如果经理想输入的数值是49打比方,那么我就用除法指令,div k49 k10 d100,余数会自动保存到d101中
接下来对于绿灯的逻辑是,{到哪个物料盒哪个绿灯就要亮}
这个有点麻烦,因为经理还没有规定好,到底哪个灯先亮,哪个灯后亮。但是要求我写出来的程序便于修改,而顺控图我还不会画,我现在只会梯形图。于是我就想,能不能利用梯形图自己做个“顺控”呢?
说干就干!还是利用mov指令,因为我比较熟悉它,控制位的方法还有两个,一个是位循环左移,一个是位循环右移。我先把K1 MOV到一个M的组合元器件里面,然后利用左移指令来表示开启下一个灯,这时候他任意时候想跳过或者取料结束,我都可以触发左移,去点亮下一个灯,执行下一个步骤。
这么做还有一个好处就是比较逻辑清晰,当进入第一个取料步骤时,其他感应器就算被触发了没没卵用。
不知道兄弟们有没有理解我的表达,在此献丑只为留个纪念,也给新人练练手。
具体如何编程就不详述了。大家有兴趣也可以写写,忘记说了,后来领导又加了一个按钮功能“重复上一步骤取料”。不知道哭好还是笑好……
举报