PLC课程设计报告院系自动化学院专业自动化课题邮件分拣监控系统设计班级自动化1131 班学号姓名2016 年12 月PLC课程设计调试记录班级:自动化 1131 班学号: 1131204130 姓名:姚金江邮件分拣监控系统设计一、控制要求启动后绿灯 L1亮表示可以进邮件, S1为 ON表示模拟检测邮件的光信号检测到了邮件,拨码器模拟邮件的邮码,从拨码器读到的邮码的正常值为 1、2、3、4、5,若是此 5个数中的任一个,则红灯 L2亮,电机 M5运行,将邮件分拣至邮箱内,然后 L2 灭,L1亮,表示可以继续分拣邮件。
若读到的邮码不是该 5 个数,则红灯L2 闪烁,表示出错,电机 M5停止,重新启动后,能重新运行。
复位按钮按下,全部停止。
组态界面如上图,具体要求如下:M1、M2、M3、 M4、M5:用指示灯接受 PLC运行信号亮灭来表示运行与否, M5 的动作若有旋转感更好。
邮件:一方形物体表示,当 M5动作时,该邮件在皮带上水平向右移动,在相关电机与邮箱位置处,分别送 PLC相关位置信号,若邮件满足编码, PLC处理后让相关电机动作,同时该邮件下移至该邮箱后消隐或直接消隐,表示该邮件已被放进邮箱。
消隐后的该邮件继续在左边出现,表示下一个邮件的到来。
邮箱:在邮件放进该邮箱的同时,其上指示灯亮, 1 秒(时间根据其他动作自定)后熄灭。
另外最好在每个邮箱下放一计数器,显示已进此邮箱的邮件数。
S1:检测邮码,具体位置防于 M1左方,当邮件经过时该灯亮,并送 PLC位置信号,在该信号有效时, PLC 检测邮码(读入输入模块 3 个拨码开关表示的数据 0-7 )(或在监控界面的邮码图形上设置 0-7 邮码)以决定该邮件应该放于哪个邮监控界面组态要求图 1 监控界面箱。
邮码:若采用外部拨码开关则接受 PLC信号显示当前邮件编码(LED), 若采用界面设置邮码,此处为设置输入点将信号送 PLC,在 S1 动作时刷新或采样。
L1、L2:根据 PLC信号亮灭。
传送带:静态或能动态表示 M5的运行, 注意:设计界面要比上图的长的多 ,在传送带上左边应该有 S1 和邮件出现的位置。
SD、复位:模拟按钮信号,点击相关图形送 PLC相关控制按钮信号。
三、监控系统设计分析用 PLC实现邮件分拣系统的电机运行控制,输入点由 WinCC控制。
WinCC同时获得相应的 PLC中变量,并显示到对应的指示灯。
编程元件统计如表 1 所示。
表 1 编程元件统计及I/O 地址分配表四、 PLC系统硬件配置与 I/O 点分配接线图1. PLC 系统硬件配置利用实验室设备进行课题设计,选择西门子 S7-300 PLC。
输入点由 WinCC在监控界面中给出,输出只需 12点输出,选择 SM322的 16点输出模块PLC的具体硬件配置如下面表 2 所示。
表2 PLC 硬件配置表2、输入输出点分配表I/O 点分配如表 1 中列表所示3、输入输出接线图I/O 接线图如 2 所示五、 PLC控制程序设计network1:I0.0 启动I0.1 停止M0.0维持启动状态并自锁network2:I0.1 同上,主要实现的是让 M0.1 动作然后使后面的计数器复位network3:I0.2 按一下加减计数器 +1I0.3 按一下加减计数器 -1M0.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 所示。
33、动作实现1)起停控制对于起停按钮的操作控制采用模仿实际按钮的动作控制过程:按下按钮触点接通,释放按钮触点断开。
则在起始按钮按下时, I3.0 接通;释放后,I3.0 断开。
而复位按钮则类似启动按钮,但多了对一些参数的初始化。
在启动按钮的“按左键”事件中添加如下程序:#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y){SetTagBit("start",TRUE); // 模拟按键按下,接通常开触点}而在它的“释放左键”事件中添加如下程序:#include "apdefap.h"void OnLButtonUp(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y){SetTagBit("start",FALSE); // 模拟按键弹起,常开触点恢复断开状态}复位按钮的程序结构类似于启动按钮的程序,但为了在监控画面中有正常的画面显示,在复位按钮的“按左键”事件中设置了某些参数的初始化语句。
程序如下:#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y){SetTagBit("reset",TRUE); // 模拟按键按下,接通常开触点SetPropWord("NewPdl1.Pdl","Control2","Left",190);// 邮件初始位置SetTagByte("tp",0); // 初始化各个行程开关的状态}复位开关的弹起同启动按钮一样,使变量 Reset 为 FALSE。
2)邮件的动态移动及对应行程开关的控制邮件的动态运动是该监控画面的重要组成部分。
同时邮件的运动还控制这对应虚拟行程开关的触发。
邮件的运动主要有在 M5作用下沿传送带水平运动,也有在分拣电机作用下垂直运动。
先对邮件进行 X轴方向上的位置控制。
选择邮件的位置 X属性,选择“ C动作”。
运动控制程序如下:#include "apdefap.h"long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){int a; BOOL b,c;b=GetTagBit("m5"); // 获得电机 M5 的运行状态c=GetTagBit("arrive"); // 获得下移到位行程开关的状态a=GetPropWord("NewPdl1.Pdl","Control2","Left"); // 邮件当前 X 值 if(a>=220 & a<=230){SetTagBit("s1_on",TRUE);}else {SetTagBit("s1_on",FALSE);} // 控制邮码检测行程开关 S1/* 邮件运行到不同位置触动不同的行程开关 SQ1~ SQ5*/if (a==245){SetTagBit("TestPoint1",TRUE);}else if (a==290){SetTagBit("TestPoint2",TRUE);}else if (a==335){SetTagBit("TestPoint3",TRUE);}else if (a==380){SetTagBit("TestPoint4",TRUE);}else if (a==425){SetTagBit("TestPoint5",TRUE);}if (!c) {if(b & a<430){a+=5;} // 在未下移到位时,邮件一直右移至右极限}else{a=190;} //在下移到位后,邮件在初始位置不变化返回值 a 设置邮件的 X 位置值return a; //}邮件在水平方向移动到指定位置后,应该下移至邮箱。