6ES7221-1EF22-0XA0现货库存
1 引言
随着PLC应用范围的不断扩大,PLC与PC之间通信技术的应用需求越来越广泛。通过PLC的编程口进行通讯不仅可以减少系统的成本及复杂性,可以减少PLC方面软件的复杂程度和编程量。本文根据实际工程中的经验进行介绍了利用VC++中MFC实现PC与松下FP0系列PLC编程口进行串行通信的程序设计基本方法。
2 PC与FP0 PLC之间的通信协议和接口
在一个规模较大的纺织工业控制系统中,常常有几十个、几百个甚至更多的测温和控制对象。速度很高的系统,也很难满足要求。为了降低危险,提高可靠性,必须将任务分散,而分散的设备需要通过一定的手段连接起来,其中数据通信和系统互连是该系统的关键技术之一。松下FP0系列PLC具有较强的通信功能,可以适合各种工业自动化网络的不同需要,其中包括以太网协议及通用接口、H型链接通信系统(H-bbbb)、P型链接系统(OPTICALbbbb)、W型链接系统(WIRE-bbbb)和C-NET链接系统,还有远程I/O通信系统(REMOTEI/O),它们通过RS-485、RS-232或专用网络插座在PLC-PLC、计算机与PLC之间进行通信。要利用这些系统协议,必须采用专用通信单元,这势必增加系统的成本。为了节省开支,纺织工业系统可以直接采用松下电工基础的专用通信协议-NEWTOCOL。
NEWTOCOL分为两部分:一是NEWTOCOL-COM,即关于计算机通信的协议;二是NEWTOCOL-DATA,即关于数据传输协议。
2.1 NEWTOCOL-COM的帧格式
(1) 命令发送帧
(2) 正确响应帧
img]周奉磊-b2.jpg border=0>
(3) 错误响应帧
img]周奉磊-b3.jpg border=0>
2.2 NEWTOCOL-DATA的帧格式
(1) 命令发送帧
img]周奉磊-b4.jpg border=0>
(2) 正确响应帧
img]周奉磊-b5.jpg border=0>
(3) 错误响应帧
img]周奉磊-b6.jpg border=0>
通过该协议可更加快捷地传送系统所需的数据,设置PLC所需的参数。FP0 PLC与上位机链接通信协议如图1所示:
图1 FP0 PLC 与上位机链接通信协议
3 通信程序设计
在PC机和松下FP0系列PLC进行串行通信时,由于PC与PLC之间的信息传送是通过PLC编程口实现的,采用的是FP0PLC专用协议通信指令。在PC编程方面需要严格的遵循PLC编程口通讯协议。具体实现介绍如下:
3.1 串口设备的打开
在Visual C++中,利用MFCCFile类来实现串行通讯。这种通信方式与访问磁盘普通文件没有太大不同。打开串口设备需作以下操作:
CFile file;
CFileException e
File.open(
portName, // example "com1",com2"
CFile::modeReadWrite,
&e);
3.2 串口设备的初始化
串行端口创建时,必须对其进行设置以匹配与其对话的设备。FP0系列PLC的波特率为固定的9600bps,奇偶校验采用奇校验,1位停止位,8位数据位。一般地,可用如下程序设置它们:
DCB dcb;
::GetCommState((HANDLE)file.m_hFile,&dcb);
dcb.BaudRate=9600;
dcb.StopBits=1;
dcb.ByteSize=8;
dcb.Parity=1;
::setCommState((HANDLE)file.m_hFile,&dcb);
为了更好的控制端口可以利用SetCommTimeouts()函数打开或关闭串口超时功能,具体程序如下:
COMMTIMEOUTS cto;
::GetCommTimeouts((HANDLE)file.m_hFile,&ct0);
cto.ReadIntervalTimeout=0;
cto.ReadTotalTimeoutMultiplier=0;
cto.ReadTotalTimeoutConstant=0;
cto.WriteTotalTimeoutMultiplier=0;
cto.WriteTotalTimeoutConstant=0;
::SetCommTimeouts((HANDLE)file.m_hFile,&cto);
3.3 PC与FP0 PLC之间的通信实现
在FX2系列PLC与PC机的通信中,数据是以帧为单位发送和接收的。其中字符ENQ(0x05)、ACK(0x06)、
和NAK(0x15)作为单个字符,可以构成单字符帧。若通讯正常,则应答字符$;若通信有错,则应答字符!。其余的字符在发送和接收时必须用字符%和CR分别表示该字符帧的起始标志和结束标志,否则将构成帧错。一个多字符帧由%、地址码、站号、数据、和校验以及CR五部分组成,其中和校验值是其初值为0,从起始符开始与该帧报文中每一字节按位进行异或运算得到。
(1) 应用MFC CFile类实现对串口设备的读、写操作的代码
//读串口
char m_Readbuff[UINT n];
uint nByte=file.read(
&m_ReadBuff, //缓存储冲
UINT nCount //所读字节数
//写串口
char m_WriteBuff[UINT n];
file.Write(
&m_WriteBuff, //存储缓冲
UINT nCount //缩写字节数
);
(2) PC机实现与PLC通信的程序代码
char m_WriteBuff[10];
char m_ReadBuff[10];
UINT nByte=0;
m_WriteBuff[0]=0x05 //ENQ
//写串口
file.Write(
m_WriteBuff, //存储缓冲
//所读字节数
);
//读串口
nByte=file.Read(
m_ReadBuff, //存储缓冲
//所写字节数
);
switch (m_ReadBuff[0])
{
case : 0x24 //应答$,通信正常
//添加相关处理代码
break;
case : 0x21
//应答!,通讯故障
//添加相关处理代码
break;
}
3.4 PC对PLC内各软设备进行读、写操作
FP0系列PLC的所有开关量输入、输出以及各软设备对PC机都是透明的,只有当PLC的计时器和计数器的设定值采用常数时,以及文件寄存器内的数据,PC机不能对其进行读写。不论PLC处在“STOP”状态还是“RUN”状态,PC机都可以按1.1所列的命令对PLC进行读、写操作。这里仅给出PC机与PLC通信所用多字符帧的格式及简单示例,实际应用时只需将多字符帧中的字符ASCII码(十六进制)按顺序赋予相应的字符数组
m_WriteBuff,m_ReadBuff,即可实现对PLC的操作。
(1) 读操作
img]周奉磊-b7.jpg border=0>
(2) 写操作
微机对PLC软设备进行写操作的多字符帧的编制格式如下表所示:
img]周奉磊-b8.jpg border=0>
PLC接收到写操作多字符帧格式后,若接收到数据有效,则应答$(0x24),该字符帧如下表所示:
img]周奉磊-b9.jpg border=0>
若接收数据无效或和校验出错,则应答字符!(0X21),该字符帧如下表所示:
img]周奉磊-b10.jpg border=0>
3.5 关闭串口设备
PC机与PLC通信完毕后,PC机关闭一个已打开的串口设备只需如下一条语句即可完成。
File.Close();
4 应用实例
以上介绍了利用MFC实现PC与FX2系列PLC串行通讯的基本方法及其关键部分程序代码。上面的程序代码为基础,不仅可以编制用于以PLC为现场主控机的监控系统软件,可编制出微机与其他具有串行通信能力设备的串行通信程序。本人已成功使用VC5.0实现PLC与上位机之间的通信,并应用于青岛大学纺织服装学院开发的掉毛量测试仪。该测试仪控制系统采用PLC控制步进电机方案,有效地提高了工作效率,使操作人员通过PC的显示可以监测并控制仪器的工作。兔毛织物掉毛量测试仪已可靠运行一年,实践证明它具有控制灵活、使用简单、功能扩充方便、抗干扰性能强的特点。没有出现任何通讯连接的问题
1 引言
随着国民经济的快速发展,高速列车大大提高了交通运输效率,也增加了对安全性的要求,如何在列车高速运行的情况下保证铁路设备的安全问题也变得越发重要。以原有的人工维修保障体制保证设备的安全,不仅费时费力,难以适应发展后的铁路系统的各种客观需要。根据以往我们开发工业监控系统的经验,结合铁路系统的特点,开发了适合铁路系统的微机监测系统,利用其采集大量信号,通过这些信号可以了解设备的运行状况并分析故障产生原因,它在保证铁路列车安全运行、及时发现故障、分析故障及保证铁路维修体制改革实现状态修方面发挥了不可缺少的作用。利用PLC作为微机监测系统的数据采集机可以保证其高可靠性要求。
2 需求分析
铁路系统关系到人民生命财产的安全,铁道信号微机监测系统必须具备以下特点:
(1) 高可靠性
监测系统在寿命期限内能在恶劣条件下平稳可靠运行,将故障率降至低;
(2) 抗干扰性强
微机监测系统是暴露在铁路沿线运行的,所处的环境相对恶劣,为了提高数据采集和数据传输的可靠性,避免发生错误报警,系统必须具有较强的抗干扰性;
(3) 可扩展性与可维护性
与铁路系统的扩建相对应,监测系统应该易于扩展和维护;
(4) 高性价比
完成状态检修的微机监测系统作为列车的辅助设备,不应投入太多资金,应该在低成本下操作。
根据系统要求的高可靠性和强抗干扰性,选用PLC作为系统的采集机。系统实现要解决的关键问题就是PLC的资源较少,我们必须经过合理分配,有效利用有限的资源。
以广深铁路线某站为例,需要采集1024个开关量,128路轨道电压,6路外供电压,40路转辙机电流,768路电缆绝缘值,50路电源屏电压。设计铁道信号微机监测系统时,必须根据铁路系统运行特点和要求,采取一些特殊的技术和方法,建立适用的全面反映铁路系统及设备的宏观运行状态的系统,更有效的管理整个铁路系统的运行。
3 系统构成
3.1 系统总体结构
总体上看,本论文所要介绍的GSWJ型铁道信号微机监测系统结构可分为三部分:即采集电路—前置部分;下位机—采集机;上位机—监测机三个部分。各部分的作用分析如下:
(1) 采集电路
·对所有被监测量实现保护、隔离,将隔离后的信号转换为标准电压或电流信号;
·下位机(采集机)的控制下,将所有代表被监测参数的标准电压或电流信号,分类依次送至PLC相应的数据采集口。
(2) 下位机(采集机)
依照程序或上位机发出的检测命令,向采集电路发出相应的控制信号,对采集电路送至采集口的信号进行采集,对采集的数据进行相应的综合,并将所采集的数据整理后存入相应的数据缓冲区,完成与上位机数据通讯。根据本站需求,本系统采用OMRONCS1系列PLC作为数据采集机;
(3) 上位机(监测机)
·通讯管理:上、下位机之间各种类型数据通讯的管理;
·数据管理:对采集的各类数据建立数据库,各种参数、图表、曲线的绘制,以及显示、查询和打印各种报警信息。
本系统中,利用Dephi语言编写上位机程序,实现通讯管理和数据管理。
3.2系统实现的几个关键问题
从系统的需求分析可以看出,铁道信号微机监测系统需要采集的数据量大,对可靠性和安全性很高,需要系统在低成本方式下运作,如何合理配置,使资源得到有效利用是设计重点和难点,下面阐述几个关键问题的解决方法。
(1) 系统采集方式的选择
铁路系统中,由于监测的信息点多,且各种被监测量要求的采集周期不同,如开关量要求的采集周期为250ms,轨道电压的采集周期为2min,如果采用常规的点对点采集,会大大增加系统成本,系统采用分类集中的信号采集方式,将同类信号集中并作相应的保护,经过切换,利用一个A/D口输入。由于本系统是用于广深铁路线上,地处南方多雷击地区,电气化的高速铁路本身会产生高达几万伏的冲击电压,监测系统必须保证有很强的抗干扰性。系统采用欧姆龙公司的CS1系列PLC作为采集机,对所有被采集的信号都作了隔离和保护。
图1 各种被监测量的并联式结构采集方框图
如图1所示,系统采用并联式结构,这样的结构方式将被采集的物理量按类集中,分为开关量和模拟量两大类,采集回路结构清晰,易于发现故障。
(2) 开关量采集方法
开关量采集回路如图2所示。
图2 开关量采集方框图
开关量采集原理:4位开关量输出信号经过译码得到16位地址,根据地址将1024个开关量分成16组采集,每次采集64位,利用两块32口的开关量输入模块。
(3) 模拟量采集方法
根据铁道部有关规程,外供电压、轨道电压、转辙机电流等模拟量要求不同的采集方式,例如外供电压和轨道电压采用巡测采集方式,即巡回检测采集;转辙机电流采用中断式采集方式,即当转辙机发生动作时才采集相应的数据;绝缘检测的采集方式是命令式,这是因为绝缘检测是带电检测,在保证列车安全运行的情况下,必须由工作人员通过上位机发出指令采集相应的绝缘值。根据这些不同要求,系统中利用不同的模拟量采集回路实现。图3示出128路轨道电压采集回路框图。由前置电路通过隔离、滤波、保护等前置电路处理采集的模拟信号,变成1~5V标准电压信号,经过两级切换,在PLC中经A/D转换后,用0-4000的数字量线性表示。
图3 128路轨道电压采集回路框图
(4) PLC与上位机通信流程
上位机与PLC的通信流程大致如下:
系统监测的信息点多,采集方式不同,系统实现的另一个的难点就是对不同数据的通讯管理。系统需要采集的数据有1024个开关量,128路轨道电压信号,64路外供电信号,16路转辙机电流等,由于采用串口与上位机通讯,通讯资源有限[1],按照铁道部有关规定,将数据的优先级规定为:开关量信号,外供电压信号,转辙机电流信号,轨道电压信号,对优先级高的数据优先处理,程序流程如图4所示。
图4 程序流程框图
采用这种通讯方式的特点是程序结构简单清晰,通信简单,可扩展性强,能保证重要数据的优先传送。缺点是通讯速度较慢,在调试中发现,128路轨道电压全部传到PLC中需要大约3s,但在铁路系统中,这样的通讯速度已能满足要求。
4 程序流程分析
(1) 程序说明
主程序给每一类被采集数据分配一个缓冲区[2],根据优先级处理数据,将需要通讯的数据写入通讯缓冲区中,与上位机通讯。
系统要求将变化的开关量传送到上位机进行显示,PLC程序中,给开关量分配两个存储单元D1和D2,将次采集的开关量存入D1,下一次采集到的数据存入D2,为开关量分配了一个环形数据缓冲区H1~H50,缓冲区中每个存储单元的存储容量为67个字,其中1024个开关量占64个字,一个标志字表示发生变化的开关量组,2个字用来表示开关量发生变化的时间(年,月,日,小时,分钟,秒,毫秒)。环形数据缓冲区的结构如图5所示。缓冲区作用是:将需要存储的开关量按顺序存入缓冲区,50个存储单元存满后,第51个数据再存入第1个存储单元,这样就将这个缓冲区循环利用,有效使用了PLC的有限资源。
图5 环形数据缓冲区的结构图
(2) 开关量采集程序流程
将次采集的开关量存入D1,下一次采集到的数据存入D2,比较D1和D2,看数据是否相等,如果相等,直接进行下一次巡视;如果不等,说明开关量发生变化,系统要求将变化的开关量送入上位机,此时将D2种的数据送入缓冲区Hi中,并设立标志,增加地址指针,用D2覆盖D1的数据,程序流程如图6所示:
图6 开关量采集流程框图
5 结束语
采用OMRONCS1系列PLC作为数据采集机的GSWJ微机监测系统已经在该站投入运行,5年来,系统运行正常,保证了铁路列车安全运行,并准确采集各项数据,及时发现故障和分析故障产生原因,系统的报表输出功能减轻了值班人员人工抄表的劳动强度。微机监测系统部分实现了铁路系统自动控制,从整体上提高了企业的管理水平,且各项技术指标均达到设计要求。