西门子模块6ES7341-1AH01-0AE0性能参数
可编程控制器(plc)是集计算机技术、自动控制技术、通信技术为一体的新型自动控制装置。由于体积小、可靠性高以及组态灵活等优点,plc在工业控制领域得到了广泛的应用。在plc组成的自动测量和控制系统中,一般采用主从式控制结构,由plc向计算机发送数据,计算机处理数据后根据具体情况向plc发出相应的指令,控制plc的运行。plc作为下位机,完成数据采集、状态判别、输出控制等任务,上位机(微型计算机、工业控制机)完成采集数据信息的存储、分析处理、状态显示以及打印输出等任务,以实现对系统的实时监控。目前市场上常用的人机界面或监控组态软件价格昂贵且由国外公司垄断, 对于小型企业的单机系统来说,许多功能并不实用,同时组态软件的本身也还存在不足之处,不能满足一些特殊要求。因此,目前仍然需要技术人员根据实际情况开发小型经济适用的软件。笔者针对比较简单的控制系统,利用vc++6.0设计了一个通信程序,实现了bbbbbbs环境下上位计算机对多台plc的灵活监控。
2 通信类型
日本三菱公司是国际的工厂自动化设备制造商,其工业可编程控制器在占有相当大的份额。本项目选用三菱fx2n-48mr型plc,fx系列plc支持以下5种通信类型:
(1) plc的n:n通信方式;
(2) plc双机并联通信方式;
(3) plc与计算机专有协议通信方式;
(4) plc与计算机无协议通信方式(使用rs指令或fx2n-232if特殊功能块);
(5) 自由端口设计方式(需要特殊通信模块,使用较少)。
各种通信类型的具体特性列于表1。本系统采用专有协议通信方式,以pc机为主站,通过fx-485pc-if及fx2n-485bd与多台plc从站连接(多16台),每台plc被赋予唯一的站号用以标志身份,上位机通过rs-485通信总线对plc进行控制。
3 通信协议
fx2n系列plc通信采用异步格式,较常用的数据帧由1位起始位、7位数据位、1位停止位及1位校验位组成,波特率为9600bps。传输数据以字节为单位,分为高4位和低4位,每4位转化为1个ascii字符发送。以上位机从plc读取数据为例。
计算机方发送数据帧格式如表2所示:
enq是请求通信标志;station no.代表plc站号,设定范围00h-0fh;pc no. 是plc的cpu代号,fx系列为ffh;command是操作命令码,具体内容列于表3;message wait time表示从命令发出到plc回应之间的等待时间,允许值从0-150ms,设定为00h-0fh;character area a为传送字符串,包括位元件或字元件的首地址和单元字节个数; sum check code是和校验码,分为高4位和低4位。
plc应答格式如表4所示。
stx是帧开始字符;character area b为传送数据,fx系列plc一次多可以传送64比特即40h数据;etx为帧结束字符;其余含义同上。
本程序的主要功能为,每隔一定时间(由用户通过界面设定)按站号顺序批量读取plc中位元件y000-y017的状态,将数据存放入数据库plc表中。
总共有2台plc,对于站号为i 的plc,命令格式如表5所示。
4 软件编程
软件设计选用visualc++6.0作为开发平台,利用其提供的mscomm控件,可以方便地实现plc与上位机的串行通信。该通信控件提供了使用rs232开发串行通信软件的细则,使用事件驱动或查询方式来解决开发通信软件中遇到的问题。该控件有27个属性,主要的属性如表6所示。
首先将mscomm控件加入工程,同时安装1个系统定时器。通信控件m_mycom用于访问串口、发送和接收数据;系统定时器用于控制每隔一定时间间由上位机向plc发送命令。通信程序部分代码如下:
// 首先初始化通信端口
bool cplccommdlg::oninitdialog()
{……
m_mycom.setcommport(1); file://选择com1
m_mycom.setinbuffersize(1024); file://设置输入缓冲区的大小
m_mycom.setoutbuffersize(512); file://设置输出缓冲区的大小
m_mycom.setbbbbbmode(1);//设置数据获取方式
m_mycom.setsettings("9600,e,7,1");//设置通信参数
m_mycom.setbbbbblen(0); file://设置读取方式
if(!m_mycom.getportopen() );
m_mycom.setportopen (true); file://打开串口
stationno=0x30;
if(settimer(1,m_usertime,null)==0)
afxmessagebox("error setting,please check it!")
}
file://消息处理函数ontimer
void cplccommdlg::ontimer(uint nidevent)
{
byte receivedata[1024];
byte senddata[]={`0x05`,`0`,`i`,`f`,`f`,`w`,`r`,`a`,`y`,`0`,`0`,`0`,`0`,
`0`,`1`,`sumh`,`suml`};
if(stationno<0x31)
stationno++;
else
stationno=0x30;
senddata[3]= stationno;
sumcheck(senddata,17)
cbytearray array;
array.removeall();
array.setsize(17);
for(int k=0;k<17;k++)
{
array.setat(k,senddata[k]);
}
m_mycom.setoutput(colevariant(array));//发送命令
……//数据接收处理及加入数据库操作
}
file://和校验函数sumcheck
void cplccommdlg::sumcheck(byte temp[],int n)
{
int i;
byte sum=0x00,sumh=0xf0,suml=0x0f;
for(i=1;i<=n-3;i++)
sum+=temp[i];
suml= suml∑
sumh= sumh∑
sumh= sumh>>4;
temp[n-1]= suml;
temp[n-2]= sumh;
}
5 结论
串行通信是目前计算机与其他设备之间重要的通信手段之一,本程序作为小型监控系统的重要组成部分,实现了上位机对多台plc的实时监控,传送数据准确,程序运行稳定。整个控制系统方便可靠,同时又节省了大笔投资,具有相当大的实用性。
可编程序控制器PLC已广泛应用于各行各业,尤其是电力系统某些独立的控制单元或者信号相对集中的系统,基本上都采用了PLC进行过程控制,运用它既可完成各种复杂的工艺流程,又简化了早期采用继电器控制的方式,而且可靠性也得到了极大的提高,但是在实际应用中也经常会出现一些故障,导致系统不能正常启动或者某一设备失控。下面以阳城电厂6×350 MW机组输煤的PLC控制系统为例进行故障排除分析。
1 系统介绍
阳城电厂输煤系统采用了西门子S7-400系列的可编程序控制器PLC进行过程控制和数据采集,采用双机冷备配置方案。通过profibus现场总线连接2个远程I/O站,总线为全双工网络冗余结构,通过冗余的通迅处理器和网络连接,中间加装RS485中继器进行信号放大,电源为热备用,采用双回路供电,加装UPS。监控系统采用西门子工控机和基于bbbbbbs 95的监控软件(WINCC),共2台上位机,其中一台作为控制使用;另一台作为报表并作为备用监控上位机。PLC和上位机通过网络通讯,使运行状态及运行参数在CRT上实时显示出来,并对重要参数、报警信息、故障、操作运行等进行记录和打印。运行人员可通过CRT画面对系统进行控制监视,也可运用键盘和鼠标完成系统或设备的启动、停止以及对运行参数的设定。
2 系统中常见故障的分析与排除
2.1 CP443通讯模块“stop”指示红灯亮
首先检查接线有无松动,如果接线良好,应检查CPU是否指示EXTF(外部故障),若由于程序事先设定的地址错误,可重新检查程序的硬件配置是否正确。如果仍无法排除,再检查S7的通讯软件设计得是否正确,或通过更换模块的方法检查是否通讯模块本身故障。
2.2 RS485中继器信号全部消失
如果RS485中继器信号全部消失,会造成信号传输中断,使主控室与各远程站失去联系,无法控制远程站的设备。首先应检查DC24 V电源供电是否正常,如果电源正常再检查RS485中继器的所有接线是否有松动。
2.3 某一远程站失去信号
如果RS485中继器正常工作,而某一远程站在运行中突然失去信号,可能是该站的控制电源消失或CPU故障;如果该站的信号时有时无,则可能是控制电源引起的,可以从UPS电源和供电回路进行查找。
如果CPU模块上的指示灯显示INTF或EXTF,则表示内部故障或外部故障,INTF是指CPU本身或程序的问题引起。如果程序已经调试正确,在运行中突然发生,解决的方法是将钥匙开关由RUN位置打至STOP位置,使CPU停止工作,然后再打至RUN的位置。如果是EXTF,则是由于外部的控制系统引起的或者是本站的模块出现问题,也许是失电,也许是模块本身故障,在实际工作中多数是由于失电引起。
S7-400系列可编程序控制器的硬件基本上很可靠。而且已调试正确的程序以及通讯地址不会变动,如果上述问题无法解决,可采用替换模块的方法查故障。
2.4 上位机控制部分无法操作
引起这一现象的原因,可从上位机与PLC的通讯卡件、通讯电缆、通讯地址三方面查找。实际工作中一般由于卡件松动或者接线松动引起的原因比较多,如果均已固定良好,就可能是卡件故障,可重新更换后进行调试。
2.5 上位机和PLC无法远程操作某一设备
引起这一现象的原因应从两方面进行分析:一是操作上是否满足工艺流程的要求(联锁/解锁方式),或者是该设备的启动和停止按钮没有复位,一直在保持状态,可重新点击后解决;二是从PLC的输出模块上查找,是否该设备的启动和停止信号一直保持(绿灯),导致设备无法正常操作。假如要停止某台运行的设备,结果无法停止,而输出的信号模块上指示灯一直显示该设备运行。解决的方法是:若控制该设备启动的继电器一直吸合,无法断开,可更换继电器;如仍不能解决,可以将该站DC24 V电源断开,重新合上查看是否正常(注意:在重合过程中为防止设备突然再启动,必须确定该设备是否处于可运行的安全状态,否则不能用该方法),如果启动指示灯仍亮,该设备又重新启动,则可能是该模块上的输出点损坏,可以用更换板子的方法来解决。
2.6 上位机方面的故障
由于上位机一直处于24 h工作状态,故障记录、操作信息以及数据采集的工作量很大。如果我们在初设计时,所采用的故障、操作信息输出方式是电子文件,则该信息记录在计算机硬盘的存储区上,日积月累导致硬盘的剩余空间很小,结果计算机运行速度很慢,后出现死机不能操作,只能关闭电源重新启动。解决这一问题的方法有两种:一是定期删除过期无用的信息,以便释放空间;二是将记录的信息由输出文件改为输出至打印机。
3 结束语
在实际工作中,我们经常会遇到各种各样的故障,但是如果熟悉该系统的配置方案、控制方式,先从软件、操作方面解决,然后再从硬件的接线、电源上入手,采取逐一排除的方法,后对确认不能解决的故障再采用替换硬件的方法,就能排除系统所有故障,从而确保安全生产。