邮件分拣plc课程设计
- 格式:doc
- 大小:788.54 KB
- 文档页数:20
综合成绩 优秀( )良好( ) 中等( )及格( ) 不及格( ) 教师(签名)
批改日期 2016年 12 月 15 日
PLC课程设计报告
院系 自动化学院 专业 自动化 课题 邮件分拣监控系统设计 班级 自动化1131班 学号 姓名
2016 年 12月 PLC课程设计调试记录 班级: 自动化1131班 学号: 1131204130 姓名: 姚金江 调试过程与结果(概要)
教师检查调试情况 调试成功( ) 调试基本成功( ) 调试失败( ) 现场答辩情况 通过( ) 未通过( ) 教师签名 日期 邮件分拣监控系统设计 一、控制要求 启动后绿灯L1亮表示可以进邮件,S1为ON表示模拟检测邮件的光信号检测到了邮件,拨码器模拟邮件的邮码,从拨码器读到的邮码的正常值为1、2、3、4、5,若是此5个数中的任一个,则红灯L2亮,电机M5运行,将邮件分拣至邮箱内,然后L2灭,L1亮,表示可以继续分拣邮件。若读到的邮码不是该5个数,则红灯L2闪烁,表示出错,电机M5停止,重新启动后,能重新运行。复位按钮按下,全部停止。 二、监控界面组态要求
图1 监控界面 组态界面如上图,具体要求如下: M1、M2、M3、M4、M5:用指示灯接受PLC运行信号亮灭来表示运行与否,M5的动作若有旋转感更好。 邮件:一方形物体表示,当M5动作时,该邮件在皮带上水平向右移动,在相关电机与邮箱位置处,分别送PLC相关位置信号,若邮件满足编码,PLC处理后让相关电机动作,同时该邮件下移至该邮箱后消隐或直接消隐,表示该邮件已被放进邮箱。消隐后的该邮件继续在左边出现,表示下一个邮件的到来。 邮箱:在邮件放进该邮箱的同时,其上指示灯亮,1秒(时间根据其他动作自定)后熄灭。 另外最好在每个邮箱下放一计数器,显示已进此邮箱的邮件数。 S1:检测邮码,具体位置防于M1左方,当邮件经过时该灯亮,并送PLC位置信号,在该信号有效时,PLC检测邮码(读入输入模块3个拨码开关表示的数据0-7)(或在监控界面的邮码图形上设置0-7邮码)以决定该邮件应该放于哪个邮箱。 邮码:若采用外部拨码开关则接受PLC信号显示当前邮件编码(LED),若采用界面设置邮码,此处为设置输入点将信号送PLC,在S1动作时刷新或采样。 L1、L2:根据PLC信号亮灭。 传送带:静态或能动态表示M5的运行,注意:设计界面要比上图的长的多,在传送带上左边应该有S1和邮件出现的位置。 SD、复位:模拟按钮信号,点击相关图形送PLC相关控制按钮信号。 三、监控系统设计分析 用PLC实现邮件分拣系统的电机运行控制,输入点由WinCC控制。WinCC同时获得相应的PLC中变量,并显示到对应的指示灯。 编程元件统计如表1所示。 表1 编程元件统计及I/O地址分配表 编程元件 电路器件 I/O端子 用 途
输入继电器 SB1 I0.0 启动按钮
SB2 I0.1 复位按钮
SA1~SA3 I0.2~I0.3 拨码开关(+,-),输入邮码值 S1 I1.0 邮码检测开关S1
SQ1~SQ5 I1.1-I1.5 位置检测行程开关 SQ6 I1.6 进邮箱到位行程开关
输出继电器 L1 Q4.0 进邮件指示L1 L2 Q4.1 拣邮件指示L2 M5 Q4.2 传送带电机M5 M1~M4 Q4.4~Q4.7 邮件分拣电机M1-M4 L3~L7 Q5.0-5.4 邮箱1-5指示灯
四、PLC系统硬件配置与I/O点分配接线图
1. PLC系统硬件配置 利用实验室设备进行课题设计,选择西门子S7-300 PLC。 输入点由WinCC在监控界面中给出,输出只需12点输出,选择SM322的16点输出模块。 PLC的具体硬件配置如下面表2所示。 表2 PLC硬件配置表 插槽号 模板名称 模板型号 I/O点范围 数量 1 电源模板PS307 5A 6ES7 307-1EA00-0AA0 - 1 2 CPU模板CPU314-2DP 6ES7 314-6CF02-0AB0 - 1 4 DI 模板 SM321 6ES7 321-1BH02-0AA0 I0.0~I1.7 1 5 DO模板 SM322 6ES7 322-1BH01-0AA0 Q4.0~Q5.7 1 2、输入输出点分配表 I/O点分配如表1中列表所示。 3、输入输出接线图 I/O接线图如2所示。
图2 电路输入、输出接线图 五、PLC控制程序设计
network1:I0.0启动 I0.1停止 M0.0维持启动状态并自锁 network2:I0.1同上,主要实现的是让M0.1动作然后使后面的计数器复位 network3:I0.2按一下加减计数器+1 I0.3按一下加减计数器-1 M0.1复位 输出寄存至MW1.
network4: I1.0检测是否有邮件,检测到有邮件则相当于按一下,对应于wincc中的S1_ON行程开关 M3.1是捡邮件开始状态 M3.2是捡邮件结束状态 M0.0是启动状态 network5:将MW1中的邮码值MOVE至MW10供给后面作比较,捡邮件开始状态时停止寄送 network6:捡邮件开始状态,将邮码值与1,2,3,4,5作比较,是则使M4.1,M4.2,M4.3,M4.4,M4.5其中之一动作,非上述邮码值则使M4.0动作
network7:启动之后,捡邮件之前,使进邮件灯(Q4.1亮绿),捡邮件开始后,进邮件灯灭,若是错的邮码值则走上边路使M0.2动作。T1,T0控制M0.2闪烁。 network8:邮码值对,则使M4.0常闭,捡邮件灯(Q4.0常亮红),邮码值错误,则M4.0断开,M0.2使Q4.0闪亮。
network9:各电机(Q4.4~5.4)中有一台运行或者下移形成开关I1.6(对应wincc中arrive变量)断开,M0.7则由动作断开。
network10:Q4.2对应M5电机,若进邮件开始,Q4.1动作使Q4.2动作,未达成M0.7断开条件之前一直工作。由进邮件转入捡邮件后,前面检测邮码的各中间继电器M4.1~4.5代替Q4.1使Q4.2动作。 network11:I1.1~1.4分别为邮箱1~4的形成开关,Q4.4~Q4.7为电机m1~4,控制邮件到达指定位置后下移。
network12:邮件下移到指定邮箱后,对应邮箱(Q5.0~5.4)点一下,以便下面计数器输入 network13:复位各邮箱对应的形成开关,并使捡邮件进入结束状态。
此时对应wincc中的邮件先返回其y值,再返回其x值,回到原点,进行下一轮进邮件,捡邮件。
network14~18:各邮箱对应假发计数器累加显示邮件数。
六、WinCC监控部分设计 1.监控界面设计 图2 WinCC组态界面 打开图形编辑器,建立新画面NewPdl0.PDL。设置监控界面的宽度为1024
像素,高度为768像素;画面刷新周期为1(250ms)。在画面中放置适当的按钮,指示灯,传送带,邮件,静态说明文本及数码管等控件。调整画面中各对象的大小、相对位置与层次关系,并对相关联的控件进行编组。最终的监控组态界面图2所示。 2.内部变量与过程变量表 在WinCC变量管理中添加S7驱动,并在MPI接口中建立与PLC的连接。新连接属性参数如下:站地址,2;段ID,0;机架号,0;插槽号,2。新建立的变量如表3所示。 表3 变量统计表 变量名 参数 数据类型 作用
起停控制 start I0.0 二进制变量 启动按钮
reset I0.1 二进制变量 停止按钮
拨码开关 code+ I0.2 二进制变量 加法计数
code- I0.3 二进制变量 减法计数
行程开关 s1_on I1.0 二进制变量 邮件检测点
tp1 I1.1 二进制变量 行程点1检测
tp2 I1.2 二进制变量 行程点2检测
tp3 I1.3 二进制变量 行程点3检测
tp4 I1.4 二进制变量 行程点4检测
tp5 I1.5 二进制变量 行程点5检测
arrive I1.6 二进制变量 下移到位行程开关 tp IB1 无符号8位数 行程开关状态寄存器
运行电机 M1 Q4.4 二进制变量 电机运行输出点 M2 Q4.5 二进制变量 M3 Q4.6 二进制变量 M4 Q4.7 二进制变量
M5 Q4.2 二进制变量
邮箱收信指示 box1 Q5.0 二进制变量 邮箱收信指示灯输出box2 Q5.1 二进制变量 点
box3 Q5.2 二进制变量
box4 Q5.3 二进制变量
box5 Q5.4 二进制变量
邮箱计数器 cnt1 MB13 无符号8位数 邮箱1-5邮件数量寄存器 cnt2 MB15 无符号8位数 cnt3 MB17 无符号8位数 cnt4 MB19 无符号8位数
cnt5 MB21 无符号8位数
运行指示 L1 Q4.1 二进制变量 进邮件指示灯
L2 Q4.2 二进制变量 拣邮件指示灯
receiving I1.7 二进制变量 邮箱接收邮件指示
其它 s1_off M3.2 二进制变量 拣邮件结束控制 s1_start M3.1 二进制变量 拣邮件启动输出 en_all M0.0 二进制变量 启动标志 m5_m M4.5 二进制变量 邮码值为是否为5
mailcode MB11 无符号8位数 邮码值寄存器
3、动作实现 1)起停控制 对于起停按钮的操作控制采用模仿实际按钮的动作控制过程:按下按钮触点接通,释放按钮触点断开。则在起始按钮按下时,I3.0接通;释放后,I3.0断开。而复位按钮则类似启动按钮,但多了对一些参数的初始化。 在启动按钮的“按左键”事件中添加如下程序: #include "apdefap.h" void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) {