6ES7223-1PH22-0XA8厂家供应
一、前言
交通灯控制系统是一个老掉牙的问题,各种方式的控制系统也不断产生。随着我国经济建设的不断发展,城市化进程不断加强,机动车辆也不断增多,交通信号控制功能不断扩展,其控制效率要求不断tigao。基于PLC的交通灯控制系统能把可编程控制器的软硬件系统功能强大、可靠性好,逻辑编程方法简单,易于开发复杂控制系统、有丰富的扩展模块和联网能力和应用范围十分广泛的特点结合起来,使系统易于实现。
本系统采用日本松下电工生产的超小型FP0系列PLC作主控系统,其体积小但功能强大。我们按照现有十字路口的交通灯的设计方案来说明基于PLC的交通灯控制系统的方便性特点,也间接说明其在满足控制系统要求的功能扩展上也易于实现。
二、系统控制设计
1、系统功能要求
交通灯系统启动时,红、绿、黄灯按一定时序轮流发亮。南北红灯亮,东西绿灯亮。南北红灯维持35s(可由用户设定),在南北红灯亮东西绿灯也亮,并维持30s,到了30s时,东西路灯闪亮,闪亮周期为1s。绿灯闪亮3s后熄灭,东西黄灯亮,并维持2s。到2s时,东西黄灯熄、红灯亮,南北红灯熄,绿灯亮。东西红灯亮维持25s(可由用户设定),南北绿灯亮维持20s。到20s时,南北绿灯亮3s后灭,南北黄灯亮,并维持2s。到2s时,南北黄灯熄、红灯亮,东西绿灯亮,开始下一周期的动作;系统可进行时间显示;当紧急状态要一侧方向通过时,可以使南北方向红灯亮,东西方向绿灯亮或者南北方向绿灯亮,东西方向红灯亮;在特殊情况下,系统可以人为根据各方向车liuliang,进行各车道通行时间的变更;在某时段如23:00至次日6:00车liuliang很少情况下,系统可以设定为各方向的只有黄灯闪烁。
2、系统设计
2.1硬件设计
硬件主要采用日本松下电工生产的小型FP0-C32CT型(带日历时钟功能)PLC,其I/O分别各有16个;根据系统要求需要进行I/O扩展要求,需要配一级扩展单元FP0-E16YT,其有16个输出。其I/0分配如表1,其控制输入输出接线原理图如图1所示。输出设备是电压高,功率大的设备,可由PLC输出给中间继电器,再通过中间继电器进行外部设备的输出控制。
表1 系统I/0分配表
输入 | 功能 | 输出 | 功能 |
X0 | 系统启动按钮SB1 | Y0 | 南北红灯 |
X1 | 系统停止按钮SB2 | Y1 | 东西绿灯 |
X2 | 南北方向急停开关S1 | Y2 | 东西黄灯 |
X3 | 东西方向急停开关S2 | Y3 | 东西红灯 |
X4 | 南北方向时间增加按钮SB3 | Y4 | 南北绿灯 |
X5 | 南北方向时间减少按钮SB4 | Y5 | 南北黄灯 |
X6 | 东西方向时间增加按钮SB5 | Y20-Y2F | 用于数码时间显示 |
X7 | 东西方向时间减少按钮SB6 |
图1 外部接线原理图
2.2软件设计
系统软件设计内容包括交通灯顺序循环控制、两方向的急停控制、数码时间显示控制、定时时段控制、各路通行时间变更控制几部分。顺序循环控制主要采用定时器指令编写,通过时间的顺序运行,来达到各路灯的按要求输出;通过配合各路急停开关的闭锁实现各方向的红灯或绿灯亮,当急停开关恢复后,又通过对定时器的内部经过值SV赋值,达到路灯进行切换恢复的目的,程序参考图2。我们可以通过PLC内部的日历时钟功能,对内部运行的时钟数据存储区进行取值比较,用类似急停控制的方法,实现某时段各方向的黄灯闪(程序略);由于前面采用的定时器独立的,故对于各路通行时间变更控制可以采用对定时器TM0对TM4的设定值SV赋值来改变,当然各方向时间也不能无限增大和减小,我们可以通过比较指令限制其在指定的数值范围(程序略)。通过对定时器TM0对TM4中变化的经过值EV,我们可以通过指令实时把他们转为BCD码,再由专门指令直接转换为七段码数值,用于对各方向时间的显示(程序略)。
图2 顺序循环控制和急停控制的程序
三、系统扩展性
随着城市交通系统的日趋复杂和控制自动化程度的加大,使用该套PLC的交通灯控制系统,也能实现其自动控制的过程。如某些交通道路有六车道及人行道等,各道进行相应时序控制;有些交通道路采用智能化控制,根据车liuliang自动改变各方向的通行时间,并通过中央控制系统对各路口交通信号和系统参数进行远程监控和设置等;FP0系列PLC体积小,软硬件功能强,具有运行速度快、程序容量大、指令功能强、具有远程通讯功能等等,其可进行三级I/O扩展单元,大I/O点数达128个,在通讯方面,FP0可以经RS232口直接连接调制解调器,在选用调制解调器方式下,FP0使用AT命令自动拨号以实现远程通讯;其也可以使用C-NET通讯单元,把多个FP0单元连接一起构成分布式控制网络,实现计算机监控,计算机与多台PLC连接图如图3所示。通过上面说明,使用基于PLC的控制可以满足交通灯系统硬件功能的扩展和分布式监控网络化的需要。
图3 计算机与多台PLC控制单元连接图
四、
通过调试,本系统使用PLC中的定时器分段设置,容易配合急停控制、各方向时间变更控制和间的显示,该交通信号灯的控制系统结构简单,接线容易,程序编写的控制算法灵活方便,在软硬件的维护上比较容易,可靠性也比较高。在可扩展性方面比较容易,易实现智能的交通监控和控制,满足根据道路情况和季节变化情况的通行时间的改变,减少各方向的车辆滞留,缓解交通拥挤情况,其经济和社会效益比较明显。
近年来,随着可编程控制器(以下简称PLC)技术的不断发展,速度、功能、可靠性和稳定性的不断tisheng,其在工业控制中的运用越来越广泛。个人计算机(以下简称PC)具有人机界面好,编程软件丰富,数据处理快,信息存储方便,图像功能完善等优点。以PLC为下位机,以PC机为上位机的联机控制模式,结合了PLC与PC各自的优点,tigao了控制能力和可靠性,不仅操作使用方便,产品造价也较低,成为工业控制中应用较多的模式。本文以电动机正反转控制为实例,说明松下FP1系列PLC与PC实现联机控制的方法。
1. 松下FP1系列PLC与PC机的通信连接
松下FP1系列PLC均设有一个RS422串行通信接口。该接口既可用于PLC与PC机联机进行梯形图程序编程与调试,也可用于正常工作时的数据通信。PC机一般均设有一个以上的RS232C串行通信接口。由于RS232C和RS422属于不同的串行通信接口,通信信号的类型和工作方式不一样,PLC与PC进行串行通信连接时,必须在中间安装一个RS422/RS232C适配器来完成信号的转换(部分PLC也具有RS232C口,此时可直接连接)。FP1系列PLC与PC机的通信连接如图1所示。
2. PLC控制电机正反转电路设计
PLC控制电机正反转的接线如图2所示,其中SB0、SB1、SB2开关按钮分别用于控制电机的正转、反转和停止;KM1、KM2分别为电机正反转控制的接触器。由于PLC直接控制交流接触器,PLC应选择继电器输出型,并在接触器回路采用互锁来保证电路的安全。
3. PC与PLC的联机控制程序
按上述图1完成PLC与PC机的通信连接后,还需采用PLC联机编程软件或手持编程器对PLC内部通信参数专用的系统寄存器No.410~No.418进行设定,具体为:串口选择为COM1,波特率为9600bps,数据位长度为8位,停止位为1位,奇校验,单元号为1。
4.PLC控制程序
PLC的控制程序要既能现地控制,又能使PC机通过串口通信实现上位机对电动机的正反转控制和电机状态信息反馈。具体程序如图3所示。
程
序中为实现PC机对电机的控制使用了R100、R101和R102三个内部继电器。内部继电器可由PC机按松下FP1系列PLC的NEWTOCOL专用通信协议(具体协议可参考厂家资料),以发送特定字符串的形式进行读写。为了仿效按钮操作的效果,三个内部继电器由上位机置位后启动对应的定时器,经0.8S后由定时器对内部继电器自动进行复位。
5.PC机控制程序与界面
作为上位机,PC机通过人机界面,将操作人员的操作指令转换成相应的通信字符串并经串口发送至PLC,实现对电机的控制;另一方面,PC机定时读取PLC寄存器的数据,从而可判断出PLC对电动机的控制状态并在人机界面上显示出来。
PC机的程序利用Visual Basic6.0进行开发,从菜单“工程”→“部件…”→“控件”中添加串行口通信控件Microsofc Comm Control6.0到工具箱中,从工具箱中往窗体添加下表所列的控件。
序号 | 控件类型 | 控件名称 | 说 明 |
1 | bbbb | frmmain | 程序主窗体 |
2 | frame | Frame1 | 框架 |
3 | MSComm | MSComm1 | 串口通信控件 |
4 | Timer | Timer1 | 定时器 |
5 | CommandButton | cmdzz | 正转按钮 |
6 | CommandButton | cmdfz | 反转按钮 |
7 | CommandButton | cmdtj | 停机按钮 |
8 | Label | Labdjzt | 电机状态显示标签 |
添加上述控件后的程序窗体如图4所示。
PC机的控制程序如下:
Private Sub bbbb_Load() '窗体加载过程
MSComm1.CommPort = 1 '通信控件选用PC机的串口1
MSComm1.Settings = "9600,o,8,1" '设定串口1的波特率为9600bps,奇校验,8位数据位,1位停止位
MSComm1.PortOpen = True '打开串口1
Timer1.Interval = 1000 '定时器1的定时值为1s
Timer1.Enabled = True '启动定时器1
End Sub
Function com(a As bbbbbb, b As Integer) '向PLC读写寄存器内容函数
MSComm1.InBufferCount = 0 '清空串口的接收缓冲区
MSComm1.Output = a '将要发送的字符串从串口发送出去
Do
DoEvents
Loop Until MSComm1.InBufferCount >= b '等待PLC的响应字符至一定位数
com = MSComm1.bbbbb '读入串口接收到的字符串
End Function
Private Sub Timer1_Timer() '定时读取Y0、Y1的值以判断电机当前状态
a = "%01#RCP2Y0000Y0001**" + Chr(13) '定义读Y0、Y1值的通信字符串
s = com((a), 9) '读Y0、Y1的当前值
If Mid(s, 7, 1) = "1" Then '返回字符串中第7位为1表示Y0接通,电机正转
cmdzz.Enabled = False '电机已正转,禁止操作正转按钮但可操作反转按钮
cmdfz.Enabled = True
Labdjzt.Caption = "电机当前状态:正转"
ElseIf Mid(s, 8, 1) = "1" Then '反转
cmdfz.Enabled = False '电机反转,禁止操作反转按钮但可操作正转按钮
cmdzz.Enabled = True
Labdjzt.Caption = "电机当前状态:反转"
ElseIf Mid(s, 7, 1) = "0" And Mid(s, 8, 1) = "0" Then'停机
cmdfz.Enabled = True '电机已停止,可操作正转或反转按钮
cmdzz.Enabled = True
Labdjzt.Caption = "电机当前状态:停止"
End If
End Sub
Private Sub cmdzz_Click() '正转指令
a = "%01#WCSR01001**" + Chr(13) '定义将R100置1,启动正转的通信字符串
s = com((a), 7)
End Sub
Private Sub cmdfz_Click() '反转指令
a = "%01#WCSR01011**" + Chr(13) '定义将R101置1,启动反转的通信字符串
s = com((a), 7)
End Sub
Private Sub cmdtj_Click() '停机指令
a = "%01#WCSR01021**" + Chr(13) '定义将R102置1使电机停转的通信字符串
s = com((a), 7)
End Sub
运行上述程序,既可在PC机上实现对电机正反转以及停止的控制,也可在现地通过SB0、SB1和SB2按钮实现对电机的控制;既可在现地启动或停止电机转动,也可在PC机上实现停机或电机转动控制。由于PC机定时读取PLC内部Y0、Y1的值,在现地操作改变电机的工作状态时,在PC机程序中可显示出当前电机的工作状态并禁止相应的操作,真正实现了PC与PLC的联机控制。
6.结束语
上述设计已在实践中应用。经验证,可在此基础上,增加联机通信故障自动检测报警功能,利用数据读写命令实现联机大批量数据传送,根据现地来的状态信息增加PC机动画演示功能,从而使PC与PLC的联机控制程序更加完善,控制界面更加形象。根据上述原理,结合PC与PLC控制的特点,可在其它控制场合使用上述方法实现双机甚至多机联机控制。