西门子6GK7243-1GX00-0XE0使用选型
. 引言
现代社会要求制造业能对市场需求做出迅速反应,生产出多批量、多品种、多规格、低成本和高质量的产品,为了满足这一需求,生产设备、自动化生产线、检测设备的控制系统必须具有极高的可靠性和灵活性,可编程序控制器(PLC)正是顺应这一要求出现的,它是以微处理器为基础的新型工业控制装置,已经成为当代工业自动化的主要支柱之一[1]。
房间空调器是国家强制性电器质量检测产品,为了完成符合国家标准的性能检测,必须建立一套相应的高精度的测试系统。焓差法测试是重要的测试方法之一,它不仅能对房间空调器的制冷能力和制热能力进行静态试验,还能进行动态性能的试验(包括风机性能测试),还可以针对房间空调器季节节能能效比(SEER)进行测定间歇启/停状态下空调器的制冷量和输入功率的试验。
传统的焓差法测试台采用常规的继电器控制,手动的操作方法,电气线路又复杂,操作又不便。以PLC为核心的控制系统实现测试过程的自动化。本文就针对房间空调器焓差法性能测试系统,讨论PLC在测试系统中的应用。
2. 系统控制要求
根据国家标准GB/T7725-1996[2],空气焓差法试验系统需要两个试验环境,一个作为室内侧试验环境,一个作为室外侧试验环境。室内外试验环境都配备了由1个循环风机,1个加湿器,1个加热器及3台制冷机组成的空气处理装置,室外侧还有1个采样风机,室内侧有2个采样风机和1个排风机。室内外环境中所有设备的开关量均由PLC完成,PLC还兼备设备的故障报警。系统还要求上位机对所有设备进行控制,上位机与PLC通过RS232接口实现通信,在Delphi7.0平台下编写监控软件实现对系统的实时控制。
3. 硬件环境
PLC选型
房间空调器焓差法测试系统的控制点数有22个输入,16个输出。日本松下PLC产品FP1-C40系列,由于体积较小、结构紧凑,性能稳定,完全可以完成控制需要,我们选用此系列型号为AFP1243B的PLC。
输入与输出
依据控制对象,对可编程控制器PLC的I/O点数及主要内部继电器进行分配[3]。
外部输入继电器X,用来采集各个被控对象的报警信号,是开关量输入。分配表如表1。
表1输入继电器X分配表
外部输出继电器Y,用来控制系统设备中的被控对象,是开关量输出。分配表2如下:
表2输出继电器Y分配表
主要内部继电器R,用来接收上位机触摸屏发送来的命令,作为被控对象的启动与制动开关,以此来控制整个测量系统的运行。其接收的也是开关量0或者1。其分配表如表3:
表3主要内部继电器R分配表
与上位机通讯
系统需要上位机对整个系统设备进行在线监控,FP1-C40系列提供了RS232接口,通过此接口与上位机通讯。
4. 控制程序设计
依据焓差测试台的工作原理和系统设计的任务,考虑到实际情况的需要,设计的PLC程序要满足下面的要求:
1)焓差法测试台系统启动与停止时,系统中的16个被控对象的启动顺序有所不同。启动时,制冷机与风机先启动,并且只要有一个制冷机开动运行,风机就要立即启动,以保证室内外侧的空气流通,再启动加热器和加湿器。停止运行时,制冷机、加热器和加湿器先停机,再停止风机的运行。当在启动与制动过程中有报警信号输入时,则立刻停止出现故障被控对象的运行,以保证系统中被控对象不会被严重损坏。
2)由于被控对象中有很多电机,电机在启动时电流是正常工作时候额定电流的2~4倍,不能长时间使电机处于启动/制动状态,否则,电极的线圈会被烧坏。系统设定电机启动与制动时间都是10秒,即在启动开关或制动开关按下后的10s内,可以取消操作。这样就避免了因误操作等因素使电机长时间处于启动与制动状态而损坏电机。
3)在正常情况下,关机时是先关压缩机和风机,再关运行的总开关。可是,实际情况下,可能会发生非法关机的情况,即直接将系统的总运行开关关闭。这样在PLC没有断电的情况下按下主控开关时,PLC的一些状态在开始时会保持,而使输出满足条件,这样就会发生在没有输入的情况下却有输出的情况。为了避免这种情况,在每次主控继电器的触发信号关闭时,要对保持状态的继电器复位。
根据以上的要求,设计了PLC程序[4]。其程序的流程图如图1所示。后,通过松下PLC自带软件FPWINGR将程序下载到PLC里。
5. 监控程序设计
通讯协议
松下电工FP-X系列的各级PLC网络应用层都是以其专用通讯协议MEWTOCOL为基础设计的。MEWTOCOL协议分为两个部分。一是MEWTOCOL-COM,即关于计算机的通讯协议,它适用于计算机与PLC的通讯。另一个是MEWTOCOL-DATA,即关于数据传输的协议,它适用于PLC与PLC之间及PLC与计算机之间的数据传输[5]。本系统采用MEWTOCOL-COM协议[6]。
1) 命令帧格式
其中%:MEWTOCOL-COM的命令帧开始标志(ASCII码为25H);
H,L:站地址的高位和低位,默认为01;
#:站号特征码(ASCII码为23H);
发送文本:由命令码和数据组成,命令码参考文献[];
BCC:校验码,采用异或校验码,BCC为8位;
CR:回车结束符。
2) 响应帧格式
其中%,H,L,BCC,CR的含义与命令帧相同;
$:命令正确传送标志,如果此位为“!”则表示命令错误;
响应文本:正确响应命令信息文本或者错误命令的错误代码。
图1 PLC程序流程图
5.2 通讯接口软件设计[7]
在Delphi7.0中调用VB的MSComm控件,可以快速方便地对串口进行访问[8]。
1) 端口设置
端口打开之前,要对端口的波特率、奇偶校验位、数据长度、停止位进行设置。
MSComm_plc.CommPort:=1;
MSComm_Plc.Settings:=‘19200,o,8,1‘;
MSComm_plc.OutBufferSize:=1024;MSComm_plc.InBufferSize:=1024;
MSComm_plc.OutBufferCount:=0; MSComm_plc.InBufferCount:=0;
if not MSComm_plc.PortOpen then MSComm_plc.PortOpen:=true;
2) 发送指令
按照MEWTOCOL通讯协议给PLC发送指令,打开总开关如下:
procedure Tbbbb_Main.CWButton48Click(Sender: Tbbbbbb);//总开关
var openstr,closestr,bcc,sendstr,sendstr1,sendstr2,sendstr3:bbbbbb;
i: integer;
begin openstr:=‘%01#WCSR01001‘; //打开命令
closestr:=‘%01#WCSR01000‘; //关闭命令
bcc:=‘**‘; //检验码
if cwbutton48.Value=true then //打开总开关
begin sendstr:=openstr+bcc+chr(13); //命令帧
for i:=1 to length(sendstr) do //逐字发送指令
begin sendstr1:=copy(sendstr,i,1);
Mscomm_plc.Output:=sendstr1; end;
Mscomm_plc.OutBufferCount:=0; //端口缓存清除
Mscomm_plc.InBufferCount:=0;
end;
if cwbutton48.Value=false then //关闭总开关
begin sendstr2:=closestr+bcc+chr(13);
for i:=1 to length(sendstr2) do
begin sendstr3:=copy(sendstr2,i,1);
Mscomm_plc.Output:=sendstr3; end;
end;
end;
同样,按照同样格式实现其他开关的打开与关闭。
3) 故障报警
PLC输入端均是采集报警信号,若是X0000(XO)端返回数据为0即为报警,其它输入端与此相同。在程序中,利用Timer控件设定一定周期对端口进行扫描,系统采用周期为10s,即每10s对PLC的所有输入端状态进行扫描。当出现报警时,上位机软件会判断报警端口,并显示报警信息。
6. 结束语
以PLC为核心的控制系统使工业设备操作越来越方便,电气线路越来越简单;与PLC通讯的上位机软件,可以实时监控系统设备的运行状态。此控制系统已成功应用在杭州电子科技大学人工环境与信息技术重点实验室的焓差实验台,1年多的实践表明:系统运行可靠稳定、操作快捷方便,大大提高了测试系统的智能化与自动化水平。
1 引言
在现代控制系统中,pc机作为上位机负责系统管理、状态监控、信息处理和打印报表等工作,plc作为下位机进行面向现场的实时控制已成为一种典型的系统结构。pc机与plc之间的通信问题便成了系统能否实现的关键。串行通信以其接线简单、容易实现的特点得到了广泛的应用。
visualbasic编程软件简单易学、功能强大,利用它可以很方便的实现pc机与plc间的串行通讯。本文以omron公司的cpm2aplc为例,介绍了利用vb6.0实现pc机与plc串行通讯的具体方法。
omron公司的cpm2aplc支持host-bbbb通信协议,可以与上位计算机进行通信。使用host-bbbb通信协议构成的通信网络,可以很方便的实现上位pc对下位plc的实时监控。
2 原理设计
2.1 系统结构
系统结构如图1所示,计算机作为上位机,plc作为下位机,因omroncpm2a本身带有rs-232串口,利用rs-232电缆将其与pc机的串口(com1或com2)相连,便构成了一个1:1的简单的通讯系统[1]。
图1 系统结构
2.2 host-bbbb通信协议[2]
omron公司的host-bbbb通信系统是由上位计算机(ibmpc或兼容机)通过安装在各台plc上的host-bbbb单元连接多台plc构成的网络。上位机对系统中的plc进行集中管理与监控,通过与hostbbbb单元的通信,可以编辑或修改各台plc的程序,实时监控其运行过程,实现自动化系统的集散控制。对于小型plc,也可以通过其rs232c通信端口进行链接。
系统使用host-bbbb通信协议进行通信,上位机具有传送优先权,总是发出命令并启动通信,hostbbbb单元收到命令交由plc执行,将执行结果返回上位机,二者以通信帧为单位,轮流交换数据。通信时一组传送的数据称为“块”,它是命令或响应的单位,从上位机发送到host-bbbb单元的数据块称为命令块,反过来,从host-bbbb单元发送到上位机的数据块称为响应块。多点通信时,可作为单帧发送的大数据块为131个字符,当一个数据块含有132个或更多字符时,要分成两帧或多帧发送。
每个数据块都以设备号及标题开始,以校验码(fcs)及结束符结束。响应块中还包括反应执行结果的响应码。通信格式如图2所示。
图2 通信帧格式
3 软件实现
3.1 mscomm控件介绍[3]
mscomm控件全称为microsoftcommunicationscontrol,是microsoft公司提供的简化bbbbbbs下串行通信编程的activex控件,它为应用程序提供了通过串行接口收发数据的简化方法。
mscomm控件有两种通信方式,查询方式和事件驱动方式,本文采用事件驱动方式。mscomm控件的属性有许多,其中一些需要在编程时设置,另一些则取默认值即可,具体设置方法可参见相关资料,表1列出了mscomm控件的常用属性。
3.2 plc参数设置[4]
plc的通信参数可以采用默认的host-bbbb通信形式,即1位启动位,7位字长,偶校验,2位停止位,9600bit/s。设备号为00。
3.3 上位机软件设计
使用vb通信控件mscomm编写plc监控程序,通过rs-232端口发送并接收数据,关键代码如下:
‘程序初始化并设置串口参数
private sub bbbb_load()
mscom.commport =1
mscom.settings ="9600,e,7,2" `通信参数设置
mscom.bbbbbmode= combbbbb
-modetext `以文本方式接收数据
mscom.portopen =true `打开串口
end sub
`向plc写入数据
private sub butwrite_click()
`检验串口是否关闭,若串口已关闭,则打开它
if mscom.portopen =false then
mscom.portopen =true
end if
`plc必须处于编程状态才可以写入数据
plcend="@00sc00" `“@”为“开始符”表示数据帧开始;“sc”为host-bbbb指令;“00”表示下位plc的设备地址,ascii码表示[4]。
mscom.output = plcend + fcs(plcend) + "*" +chr$(13)
mscom.inbuffercount = 0
dim outbbbbbb as bbbbbb
outbbbbbb="@00wr0010"+trim(txtcontent.text)
outbbbbbb = outstring +fcs(outbbbbbb) + "*" + chr$(13) `采用异或校验,即fcs校验;“*+chr$(13)”表示结束符,表示数据帧的结束,即“*↙”[4]。
mscom.inbuffercount = 0
mscom.output =outbbbbbb `向plc发送数据
end sub
`从plc读取数据
private sub butread_click()
if mscom.portopen = false then
mscom.portopen = true
end if
dim outbbbbbb, inbbbbbb asbbbbbb
outstring="@00rr00100001"
outbbbbbb=outbbbbbb+fcs(outbbbbbb) +"*"+chr$(13)
mscom.inbuffercount = 0
mscom.output=outbbbbbb `向plc发送读取数据的命令
dim i as integer
do while mscom.inbuffercoun
-t <= 14 or i >9000 `i为等待的时间
i= i + 1
loop
`提取有用数据并显示
if i < 9000 then
inbbbbbb= mscom.bbbbb
txtcontent.text= "输出010通道的数据为" + mid(inbbbbbb, 8, 4)
else
msgbox ("读取失败")
end if
end sub
`fcs校验
function fcs(byval fcsstr as bbbbbb) asbbbbbb
dim slen, i, xorresult asinteger
dim tempfcs asbbbbbb
slen = len(fcsstr)
xorresult = 0
for i = 1 to slen
xorresult = xorresult xor asc(mid$(fcsstr, i,1))
next i
tempfcs = hex$(xorresult)
if len(tempfcs) = 1 then tempfcs = "0" +tempfcs
fcs =tempfcs
end function
4 结束语
本文给出了利用vb(主要是其中的mscomm通信控件)开发通信程序,实现了plc与pc普通串口通信的实用方法。实验表明,该程序运行稳定可靠,且操作简便。将程序稍加修改,还可应用到其他工业控制设备,在小型工业控制系统中具有一定的应用价值。