完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
初步的需求是这样的:
物料架上面有一个双位数码管,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的组合元器件里面,然后利用左移指令来表示开启下一个灯,这时候他任意时候想跳过或者取料结束,我都可以触发左移,去点亮下一个灯,执行下一个步骤。 这么做还有一个好处就是比较逻辑清晰,当进入第一个取料步骤时,其他感应器就算被触发了没没卵用。 不知道兄弟们有没有理解我的表达,在此献丑只为留个纪念,也给新人练练手。 具体如何编程就不详述了。大家有兴趣也可以写写,忘记说了,后来领导又加了一个按钮功能“重复上一步骤取料”。不知道哭好还是笑好…… |
|
|
|
只有小组成员才能发言,加入小组>>
864浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 16:01 , Processed in 0.593942 second(s), Total 82, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号