手把手项目实例

《新手工程师的第一个项目》 
提示:本文章需要有指令基础的朋友一边写程序一边看。
好激动!进入了一家上市公司,这个公司刚刚成立了一个自动化部门,我是第一个员工。

项目经理兴致勃勃的对我说:“小强!咱们开发一个自动化设备吧!提示员工每个工序拿多少颗螺丝!”
我当时就震惊了,“这也行?直接做个表格按照表格来不就好了?不行,我不能把心里话说出来,我现在最缺的就是项目经验,不管多烂的项目,自己接的offer,跪着也要做出来”
 
于是初步的需求是这样的:
物料架上面有一个双位数码管,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的组合元器件里面,然后利用左移指令来表示开启下一个灯,这时候他任意时候想跳过或者取料结束,我都可以触发左移,去点亮下一个灯,执行下一个步骤。
 
这么做还有一个好处就是比较逻辑清晰,当进入第一个取料步骤时,其他感应器就算被触发了没没卵用。
 

    
不知道兄弟们有没有理解我的表达,在此献丑只为留个纪念,也给新人练练手。
 
具体如何编程就不详述了。大家有兴趣也可以写写,忘记说了,后来领导又加了一个按钮功能“重复上一步骤取料”。不知道哭好还是笑好……
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值