西门子6ES7221-1BF22-0XA8产品信息
可编程控制器PLC(ProgrammableLogicController)具有可靠性高、通用性强、编程简单、体积小、安装维护方便等优点,在工业控制中得到了广泛应用。
在工业控制系统中,可能存在不同厂家生产的、多种型号的可编程控制器PLC。为了便于系统集成,一般采用基于OPC(OLEfor ProcessContr01)规范的接口进行数据交换,为此,需要设计、开发面向PLC的OPC服务器。
1 OPC服务器开发工具
面向PLC的OPC服务器开发需要完成以下两个方面工作:一方面,需要根据PLC的通信协议实现上位机服务器软件与PLC的数据交换;另一方面,需要合理设计服务器软件的架构与接口,使之符合OPC技术规范。
由于OPC服务器是基于COM技术的,这就要求程序设计人员必须非常熟悉COM技术,而精通COM技术是有一定难度的,OPC服务器的源码级开发是相当复杂的,一般由的软件公司进行开发。
为了便于OPC技术的推广和应用,国内外许多单位推出了OPC服务器快速开发工具包。这种工具包将微软公司的OLE/COM/DCOM技术和OPC的技术细节进行了隐藏,使用户开发工作集中在数据采集和处理任务上,从而简化了OPC服务器的开发。
基于工具包的OPC服务器开发,主要任务是熟悉工具包的API接口函数,通过调用工具包的API接口函数实现OPC服务器的功能,为应用软件提供符合OPC规范的接口。
2 OPC服务器设计与开发
2.1软件设计
基于工具包的面向PLC的OPC服务器开发的首要任务是设计OPC对象与接口、OPC服务器界面,进行OPC服务器与PLC的通信设计,以实现OPC服务器与PLC的数据交换,具体的软件架构如图1所示。
OPC对象与接口是OPC服务器与客户端程序进行交互的部分。应进行OPC服务器对象设计,即定义服务器名称ProgID和类标识符CLSID。服务器名称ProgID可以自由确定;类标识符CLSID是一个128字节的数据,是用来标识一个COM对象的,可用微软自带的工具GUIDGEN.EXE快速确定。根据OPC项的管理要求设计OPC组对象,如果OPC项较少,可以直接利用工具包默认的一个OPC组对象。后确定OPC项对象,一个OPC项可以对应于PLC内存中的若干寄存器,一般根据PLC的具体控制要求进行设计,并确定可读项与可写项。
OPC服务器与PLC的通信模块是面向PLC的OPC服务器的重要组成部分,OPC可读项的数据就是通过该模块采集PLC中相应寄存器的信息获得的;OPC可写项的数据就是通过该模块写入PLC中相应寄存器的。
服务器程序界面可以为用户提供友好的交互平台,便于观察数据项的变化,以及对数据项进行管理和设置。
2.2软件开发
在采用工具包开发面向PLC的OPC服务器时,主要是利用工具包提供的API接口函数进行如下的操作:
1)工具包动态库初始化
OPC服务器开始运行时,应进行工具包动态库初始化,以及设置OPC服务器的高刷新频率,这是OPC服务器得以运行的基础。
2)OPC服务器信息设置
主要是设置服务器的运行状态、版本号、厂商信息等。
3)OPC项的创建与删除
在OPC服务器开始运行时创建OPC项,在OPC服务器运行结束时删除OPC项。
4)OPC项数据的更新
OPC服务器需要周期地更新OPC项的值、质量和时间戳,即将数据存储区中的数据更新到相应的OPC项。当客户端程序请求写数据时,OPC运行库调用写回调函数,并利用服务器与PLC的通信模块将数据写入PLC中的相应寄存器中;当客户请求读数据时,OPC运行库调用读回调函数,返回相应的OPC项的数据。
服务器与PLC的通信模块是基于PLC的通信接口方式进行开发的。例如串口通信,其是根据PLC的通信协议采用串口通信控件或API函数编程来实现数据交换的。
5)回调函数注册
工具包中有三个回调函数:读回调函数、写回调函数和断开回函数。只有注册了这三个回调函数后,OPC服务器才能和客户端程序按照OPC技术规范进行正常通信。
6)OPC服务器注册和注销
OPC服务器安装到计算机后,应将服务器名称ProgID和类标识符CLSID等信息进行注册。在OPC服务器注册后,OPC客户端程序才能在本机或局域网上检索到该OPC服务器,从而与该OPC服务器建立连接与数据交换。注销是将计算机系统中的OPC服务器信息清除。
OPC服务器是一个进程外组件,其在运行过程中对工具包接口函数的调用流程如图2所示。
3 设计实例
3.1 PLC控制对象
Denford公司的FMS(FlexibleManufacturingSystem)教学演示系统由一台数控车床、一台数控铣床、两台机器手和一条传送带组成,该系统可以通过数字I/O接口进行控制,各设备的I/O接口数如表1所示。
由表1可以看出,该蹦S的控制器需要有13个数字输入口采集设备的状态信息,需要11个数字输出口发送控制命令。欧姆龙公司生产的CPMlA一30CDR—A—V型PLC有18个数字输入口和12数字输出口,满足该FMS控制的接口要求。为了满足该FMS控制系统快速重构的要求,其控制系统必须是基于OPC规范接口的,即按照图3所示的体系结构进行控制。需要为图3所示的PLC开发OPC服务器。
3.2 OPC服务器设计
由表1和图3所示的CPMlA.30CDR.A—V型PLC控翩对象的具体要求可知,该OPC服务器主要与PLC的输入与输出口进行数据交换.在该OPC服务器中设计定义了6个OPC项,其中4个OPC数据项为可读项:Tagln0CH、TagIn1CH、TagIn10CH、1.agIn11CH,分别用于读取该PLC的输入端000通道与001通道、输出端010通道与011通道的数值.即采集FMS硬件设备的状态信息;2个OPC数据项为可写项:TagOut10CH、TagOut11CH,分别用于对该PLC的输出端010通道与011通道写数值,即向FMS硬件设备发送控制命令。
服务器与PLc的通信功能模块是采用串口通信控件MSComm实现的,具体的通信协议是由CPMlA-PLC手册中的读出输入输出继电器内容和写入输入输出继电器区中的命令格式和响应格式确定的。
开发的OPC服务器主界面如图4所示,具有注册和注销、OPC项的创建与删除、OPC项数据的更新等功能。在该OPC服务器安装、注册后,利用图4所示的OPC客户端软件进行了性能测试,结果表明该OPC服务器符合OPC接口规范要求,可以在本机或局城网上进行访问,满足图3所示的FMS控制要求。
图4 CPMIA-30CDR型PLC的OPC服务器界面
4 结束语
本文研究了面向PLC的OPc服务器的快速实现方法,设计了一用于Denford公司FMS控制的PLC的OPC服务器,运行结果表明采用本文研究的方法所开发的OPC服务器符合OPC技术规范要求,具有一定的工程应用价值
湿度传感器,分为电阻式和电容式两种,产品的基本形式都为在基片涂覆感湿材料形成感湿膜。空气中的水蒸汽吸附于感湿材料后,元件的阻抗、介质常数发生很大的变化,从而制成湿敏元件。
国内外各厂家的湿度传感器产品水平不一,质量价格都相差较大,用户如何选择性能价格比优的理想产品确有一定难度,需要作深入的了解。湿度传感器具有如下特点:
1.1 精度和长期稳定性
湿度传感器的精度应达到±2%~±5%RH,达不到这个水平很难作为计量器具使用,湿度传感器要达到±2%~±3%RH的精度是比较困难的,通常产品资料中给出的特性是在常温(20℃±10℃)和洁净的气体中测量的。在实际使用中,由于尘土、油污及有害气体的影响,使用时间一长,会产生老化,精度下降,湿度传感器的精度水平要结合其长期稳定性去判断,一般说来,长期稳定性和使用寿命是影响湿度传感器质量的头等问题,年漂移量控制在1%RH水平的产品很少,一般都在±2%左右,甚至更高。
1.2 湿度传感器的温度系数
湿敏元件除对环境湿度敏感外,对温度亦十分敏感,其温度系数一般在0.2~0.8%RH/℃范围内,有的湿敏元件在不同的相对湿度下,其温度系数又有差别。温漂非线性,这需要在电路上加温度补偿式。采用单片机软件补偿,或无温度补偿的湿度传感器是保证不了全温范围的精度的,湿度传感器温漂曲线的线性化直接影响到补偿的效果,非线性的温漂往往补偿不出较好的效果,只有采用硬件温度跟随性补偿才会获得真实的补偿效果。湿度传感器工作的温度范围也是重要参数。多数湿敏元件难以在40℃以上正常工作。
1.3 湿度传感器的供电
金属氧化物陶瓷,高分子聚合物和氯化锂等湿敏材料施加直流电压时,会导致性能变化,甚至失效,这类湿度传感器不能用直流电压或有直流成份的交流电压。必须是交流电供电。
1.4 互换性
目前,湿度传感器普遍存在着互换性差的现象,同一型号的传感器不能互换,严重影响了使用效果,给维修、调试增加了困难,有些厂家作出了种种努力,(但互换性仍很差)取得了较好效果。
1.5 湿度校正
校正湿度要比校正温度困难得多。温度标定往往用一根标准温度计作标准即可,而湿度的标定标准较难实现,干湿球温度计和一些常见的指针式湿度计是不能用来作标定的,精度无法保证,因其要求环境条件非常严格,一般情况,(好在湿度环境适合的条件下)在缺乏完善的检定设备时,通常用简单的饱和盐溶液检定法,并测量其温度在工程实际中,应用为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。
PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌握,或得不到**的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术为方便。即当我们不完全了解一个系统和被控对象﹐或不能通过有效的测量手段来获得系统参数时,适合用PID控制技术。PID控制,实际中也有PI和PD控制。
PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。
比例(P)控制 比例控制是一种简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-stateerror)。
积分(I)控制 在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(Systemwith Steady-stateError)。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差减小,直到等于零。比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。
微分(D)控制 在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性
有关使用系统功能块SFB12的说明:
REQ参数通过输入的上升沿启动一个任务。在DONE或ERROR位还没有置位前,该作业一定不能复位和重启动。在每发送一个作业后相应会置位这个两位中的一个。之后 REQ 参数就可以触发下一个发送任务。为确保功能性,在系统功能块的REQ输入处至少要有一个上升沿。
如果ERROR位置位,需要判断参数“STATUS”,以便能检索相关出错的详细信息,从而能直接清除它。有必要的话,可对此“STATUS”作一般的判断。因为有一种情况(STATUS CODE:11) 下,ERROR位不一定被置位。
当连接建立后,“ID”参数包含了连接参数。
在相互连接的两个系统(站)中, "R-ID" 必须是相同的,并且在系统中是唯一的。
只有在调用系统功能块时,参数“SD_1” (ANY类型)的长度才被评估,并且依据它的值建立发送缓冲区。该值规定了通信数据的大量。后续的调用中,只评估 LEN 参数并依据参数定义的数据量传输数据。
“ID” 和 “R_ID”不可动态赋值,因为它们只有在调用时被评估和设置。它们不可在后续的调用里被更改。
有关使用系统功能块SFB13 的说明:
参数“EN_R”可永远为 1。因为此系统功能块异步工作。
对于参数“ID”和 “R_ID”,用于系统功能块 SFB12 的第 3 点和第 4 点同样适用于它。
对于参数“RD_1”用于系统功能块SFB12的第 5 点同样适用于它。
上述通信过程完成后,不是“NDR”就是“ERROR”被置位。只有在NDR位已经置位后,才能访问接收缓冲区里的数据(保证数据完整性)。
只有当 ERROR 位已置位,才能评价“STATUS”,就像系统功能块SFB12的第 2 点里所述的那样。
由于PLC 编程软件的不同,西门子S7-200与S7-300/400系列PLC用于梯形图编程的指令有所区别,具体如表9-1.3所示。图中有部分指令为非通用,只能在S7-200中使用(或只能在S7-300/400中使用)。
(1)触点装载指令
在S7-200 PLC中,与其他公司的PLC-样,对于与梯形图的母线相连接的开始触点,需要采用触点装载指令LD作为开始。在S7-300/400中,则是直接以逻辑运算指令代替触点装载指令(见图9-1.6)。
[例1]对于图9-1.6所示的梯形图,在S7-200中的指令表程序为:
在S7-300/400中的指令表程序为:
Network 1
A IO.I
A 10.2
AN 10.3
= MO.O
Network 2
A(
O IO.I
0 10.2
O I0.3
)
AN I0.4
MO.1
(2)括号的使用
与数学运算一样,在S7-300/400PLC中,逻辑运算遵守“先与后或”的原则进行,对于需要先进行“或”运算的场合,需要通过括号来调整运算的先后次序,括号的意义与数学运算相同。在PLC编程时,对于左括号“(”,应紧跟逻辑指令代码之后,如“A(”、“O(”等;右括号应单独作为一个指令行,参见例9-1中在S7-300/400中的指令表程序。(信息来源:www.dqjsw.com.cn)
(3)“异或”与“同或”指令
当需要对两个信号进行“异或”或者“同或”运算时,在S7-300/400PLC中可以直接使用“异或”与“同或”指令。
【例2】对于图9-1.7所示的梯形图,在S7-200中由于没有“异或”、“同或”指令,编程时只能使用“堆栈”操作指令“OLD”实现,指令表程序如下:但在S7-300/400中则可以直接使用“异或”、“同或”指令实现,指令表程序如下:
Networkl
XI0.1
XI0.2
=
Network2
X I0.1
XN 10.2
= MO.1
(4)结果“置位”、“清除”、“保存”指令
在S7-300/400PLC中,利用指令SET、CLR、SAVE可以直接对当前的逻辑运算结果进行置位、复位与保存操作。
力了可靠地检测、保存、记忆S7程序中的逻辑运算、数学运算指令的执行结果状态,在S7-300/400PLC中,设有一个专用的16位状态寄存器。状态寄存器中有2个状态位与逻辑指令的结果有关。
①RLO位:RLO位称为“逻辑运算结果”状态位,用于存放逻辑运算、逻辑比较指令的执行结果:
②BR位:BR位称为“布尔运算结果”状态位。当处理的程序段中既有位逻辑运算,又有字逻辑运算时,BR用于存放字逻辑运算指令的执行状况,当“字逻辑”运算指令被正确执行时,该位为“1”,否则为“0”。
通过指令SET、CLR,可以无条件将PLC的逻辑指令执行结果状态寄存器的RLO位直接设置成“1”或“0”,而不论前面的执行情况任何。通过指令SAVE,则可以将RLO位的状态写入到BR中。