plc编程例题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例题一
停车场车辆出入管理PLC梯形图控制程序设计
1.控制要求:
如图所示,当停车场内车辆少于10辆时,指示灯绿灯亮;如果有车要进入停车场,则入口栏杆抬起;车进入停车场后,左栏杆落下。

出车时,右侧栏杆抬起,车从停车场右侧出,出车后10 s栏杆落下。

停车场内最多能停10辆车,达到10辆车后,指示灯红灯亮,入口栏杆不会再抬起。

其中,B1、B2、B3为传感器。

2.I/O编址,编程并调试。

3.思考:
若把停车场改为停车库,其管理要求如下,应该如何设计考虑?
(1)控制要求:
①入库车辆前进时,经过1#传感器→2#传感器后,计数器A加1,后退
时经过2#传感器→1#传感器后,计数器B减1;(计数器B的初始值由
计数器A送来)只经过一个传感器则计数器不动作。

②出库车辆前进时,经过2#传感器→1#传感器后,计数器B减1,后退
时经过1#传感器→2#传感器后,计数器A加1;只经过一个传感器则
计数器不动作。

③车辆入库或出库时,均应有警铃报警(可分别设置),定时3s 。

④仓库启用时,先对所有用到的存储单元清零,并应有仓库空显示。

⑤若设仓库容量为50辆车,则仓库满时应报警并显示。

⑥若同时有车辆相对入库和出库(即入库车辆经过1#传感器,出库车辆
经过2#传感器),应避免误计数。

流程图:
(一)基础控制部分
变量名类型说明
X0 BOOL 开始
on BOOL 正常运行reast BOOL停止/复位green BOOL正常运行灯red BOOL满
b1 BOOL入口传感器
B3 BOOL出口传感器
2.梯形图
3.I/O地址分配图
4.运行过程分析:当入口传感器b1触发时,入口延时开关b1_long打开,直至计时10s后栏杆落下,同时加减计数器加1。

当入口传感器b3触发时,出口延时开关b3_long打开,直至计时10s后栏杆落下,同时加减计数器减1。

当计数器加满10个后,红灯亮,停车场满,不可以再进入。

(二)思考部分
1.变量声明表:同基础部分类似。

2.I/O地址分配图
3.流程图
4.梯形图部分:
5.Automation Basic 部分:
6.运行过程分析
整个系统采用LAD语言及Automation Basic语言结合的方式建立。

与基础部分类似:车库空时黄灯亮,车库满时红灯亮,正常运行时绿灯亮;利用加减计数器记录当前车辆数目等。

特别说明的是automation basic 语言:利用IF THEN 语句结合B1 B2 B1_FIRST B2_FIRST 四个中间变量实现了“若同时有车辆相对入库和出库(即入库车辆经过1#传感器,出库车辆经过2#传感器),应避免误计数。

”“只经过一个传感器则计数器不动作。

”等所有要求。

例题二
设计一款自动饮料售货机,可售4种饮料:饮料A选择为DRINK1,饮料出售成功指示灯为SUC1,价格为1.5元;饮料B选择按钮为DRINK2,成功出售指示灯为SUC2,价格为2元;饮料C选择按钮为DRINK3,成功出售指示灯为SUC3,价格为2.5元;饮料D选择按钮为DRINK4,成功出售指示灯为SUC4,价格为5元。

售货机可接受货币为5毛硬币(每投入一枚指示灯Y0闪烁1秒),1元硬币(每投入一枚指示灯Y1闪烁1秒),和5元纸币(每投入一张指示灯Y2闪烁1秒),退钱只退5毛(每退出一枚指示灯Y3闪烁1秒)和1块(每退出一枚指示灯Y4闪烁1秒),退钱按扭为X1(5毛),X2(1块)。

请用你熟悉的语言编写这个程序。

设计思想
用梯形图控制灯的闪烁,AB中设计INT型变量统计总钱数,代码中count为总钱数:count=count5*5+count10*10+count50*50。

任意投币从初始化的state0跳到state1,在state1中,投币,购买,退钱都会引起总钱数的改变。

当钱数低于某饮料价格时便不能购买,当没钱时便不能退钱。

流程图
一.变量声明
四.程序代码
梯形图部分:
[主要用于控制每个灯的闪烁时间]
Automation Basic部分:
(* cyclic program *)
SELECT
state t0 ;初始状态所有为零
count=0
count5=0
count10=0
count50=0
when (m5=1)or(m10=1)or(m50=1)
next t1
state t1 ; 买饮料的运行状态
if (m5)=1 then
count5=count5+1
endif
if (m10)=1 then
count10=count10+1
endif
if (m50)=1 then
count50=count50+1
count=count5*5+count10*10+count50*50 ;count为整形变量此公式为总钱数
;的计算公式
if (count<1) then
none=1
else
none=0
endif
if count<15 then
xiaoyu15=1
else
xiaoyu15=0
endif
if count<20 then
xiaoyu20=1
else
xiaoyu20=0
endif
if count<25 then
xiaoyu25=1
else
xiaoyu25=0
endif
if count<50 then
xiaoyu50=1
else
xiaoyu50=0
endif
if ((edgepos(drink1)=1) and (xiaoyu15=0)) then ;选择饮料种类并扣除相应钱数count5=count5-3
endif
if (edgepos(drink2)=1)and(xiaoyu20<1) then
count5=count5-4
endif
if (edgepos(drink3)=1)and(xiaoyu25<1) then
count5=count5-5
endif
if (edgepos(drink4)=1)and(xiaoyu50<1) then
count5=count5-10
endif
if count<1 then
none=1 ;没有钱则none 空值为1
none=0
endif
if count<5 then
xiaoyu5=1
else
xiaoyu5=0
endif
if count<10 then
xiaoyu10=1
else
xiaoyu10=0
endif
if edgepos(x1=1)and (xiaoyu5=0)then ; 退钱
count5=count5-1
endif
if edgepos(x2=1)and (xiaoyu10=0)then
count5=count5-2
endif
when edgepos(stop)=1
next t0
Endselect。

相关文档
最新文档