第五章:Modbus通信最新发展1OPCServer及Client系统1.1何谓OPCOPC为OLEforProcessControl的缩写。是工业界最先进的资料交换标准。回顾自动控制系统的发展,无论是DCS、PLC、监控套装或控制器等系统,都会面临系统整合的瓶颈。各系统无法有效共享资料,对于相同的控制设备,每个厂牌的监控系统都要设计一套自有的通信Driver。当MIS系统需要现场实时信息时,也需要一连串复杂的信息接口才能达到所要的功能。面对以上种种状况,由一群工业自动化领导厂商,诸如Fisher-Rosemount、RockwellSoftware、Opto32、Intellution、IntuitiveTechnology及Microsoft等,于1996年共同成OPCFoundation,希望建立一个业界标准接口规格。由目前信息使用的发展方向来看,大多数的client端使用的系统为MSWindows,故使用OLE的架构有利与大多数的使用者整合,且利用现有的COM、DCOM、ActiveX等技术,可快速将系统建立完成,现有系统所要变动的项目最少等优点。故当OPC架构提出后,不到数年间已成为业界的标准,且成为自控系统都必须具备的通信功能。1.2OPC基本架构对于工厂自动化信息架构可分为三个主要层面:zPlantFloor:仪表信号、现场控制器、各种资料收集设备等。此层次有各种的现场运转信息,设定系数、各种command等信息,需要与上层系统作资料交换。zProcessFloor:此为DCS、SCADA等统合控制及操作系统,此控制结果要下传至现场设备,也要将执行结果上传至MIS系统。zBusinessFloor:全公司或全厂的管理系统,需要现场实时信息做回馈,也要将生产排程计划等资料下载至下层系统。系统会使用Database、Spreadsheet、MES套装等工具或系统。OPC就是一套介于以上三层系统间的通信标准接口规格。只要依据此接口规格所开发的软件系统,就可以做到系统间或设备间的资料交换,而不会受到不同系统或设备的限制。应用系统架构图:图(5-1):OPC接口基本架构图应用系统(A)OPCClientOPCServerVendorAOPCServerVendorBEthernetOPCServerVendorC应用系统(B)OPCClientzOPCServer可依需求设计而提供此方面的服务,例如连接不同的自控设备,或特殊的数据处理及计算功能。zOPCClient可同时连接数个OPCServer以存取所要的资料。应用系统可为具有OPCClient的套装监控系统,或自行开发的报表系统。z符合MSCOM、DCOM架构,可以取入网络内任一个OPCServer的服务。z由OPCClient的角度来看,可达到下列的利益:¾Client的开发者不需考虑Driver的设计,此由OPCServer厂商提供此服务。¾不需重复投入Driver的开发,只须向市场上购买该Driver的OPCServer即可。¾即使不同操作系统或自控设备也可通信,只要符合OPC接口规格。¾当自控设备硬件改变时,只要更新OPCServer即可。符合使用者的最大弹性需求。¾以往两个监控系统,不可能同时对同一个控制设备做通信,如今透过同一窗口OPCServer即可做到。¾目前有太多的应用软件开发者,使用VB、Delphi、PowerBuilder等等,以往对于存取现场实时信息束手无策,如今藉由OPCServer的联机达到完美的地步。zOPC如同一条无形的线连接自控硬设备与应用软件系统,也可将OPCServer视同对象,买来即可使用,非常便利。OPC接口架构图:图(5-2):OPC接口系统架构图OPCCustomInterfaceInterfacePCAutomationLocalorRemoteOPCServer(sharedbymemoryclient)SeverDataCacheVB应用系统OPCAutomationWrapperPhysicalDeviceorDatabaseC++应用系统系统资料的交换可分为两大部分,一为与自控设备的连接,此依不同设备有不同的通信协议,需要设计不同的OPCServer与其相对应。另一为与Server与Client间的通信,此部份既为OPC的COM接口规格。如同大部分COM的设计方式,OPC也是client/server架构。其中Client要顾及大部分应用系统的开发者,简单易用、快速上线等原则,多数开发工具都具备OPCClient功能。另外Server方面需要应付多数个Client的资料要求,且要面对不同自控硬件而有不同的通信协议,故要以C++开发工具才可掌控所有的系统设计功能,都以专业公司设计各种OPCServer,以提供使用者选择。1.3OPC主要功能OPC主要功能是工业界一种资料交换的通信接口标准。对于第一阶段的功能为三大类:OnlineDataAccess、AlarmandEventHandling、HistoricalDataAccess等。其它功能如:Security、batch、Historicalalarmandeventdataaccess等属于下一次版本。OPC架构为COM的接口,希望能达到原则为:简单易用、适合多数厂商所需、提供高级语言的功能、有效率的资料交换等。所以OPC规格包含:一组customCOMInterface以及OLEAutomationInterface以供VB、Excel等使用。并且利用DCOM技术以作为RemoteClient的接口。zOnlineDataAccess:此为最基本的功能,也是绝大多数应用程序的需求。此包含Device、Group、Item等三种层次的对象,以对应一个现场的信号点。Device定义针对某一个特定的自控设备,具有该系统的通信协议。Group为某一群特定组合的资料,例如:Group代表一个特定的操作画面或报表的数据群。最后Item就对应某一个信号点,此信号点依据控制设备的规格可以读取或写入,又信号种类可有不同的资料型式,例如:DI/O以Boolean表示、AI/O以整数或实数表示。OPCClient可设定通信间隔的PollingRate以因应资料的更新速率。每一个OPCItem具有Value、Quality及TimeStamp等三种数值。Value为VARIANT资料型态,表示信号真正数值可为实数、整数、Boolean或字符串等型式。Quality表示该信号的品质,例如:通信断线时,品质为Bad。TimeStamp纪录该信号取入的时间。zAlarmandEventHandling:此方面的Interface是定义,当有特定的Alarm或Event发生时,会被通知的OPCClient。同时也允许OPCClient对Server做设定,以决定何种状态需要被通知。发生不正常的状况称为Alarm,例如:某一点AI发生超上限或超下限,或者某一个马达油位不足跳脱的DIAlarm等。Event是发生一件被定义的事件,需要OPCclient被告知,例如:操作员激活主马达,控制系数被修改,系统发生不正常状况等。IOPCEventServerInterface提供下列OPCClient使用方法:¾定义OPCEventServer所要提供的Alarm及Event的型式。¾将定义的Alarm及Event登录于Server上,并具有过滤(Filter)功能以取入特定的Event等。¾Server如何处理所定义的Alarm及Event。¾Server提供查询Alarm及Event的相关画面。zHistoricalDataAccess:目前大多数的历史趋势资料,都以自订的规格提供资料,各系统间并无兼容性。故需要再定义共同的规范,以做到随插随用的环境。为了适合各方面使用者的不同需求需要考虑到下列资料型式:¾SimpleTrenddataservers:只提供单纯的原始资料,也就是由OnlineDataAccessserver传过来的资料,包含TimeValueandQuality。¾Complexdatacompressionandanalysisservers:除了原始资料的储存外,更提供资料加工,例如:各种统计分析功能、资料比较等,也提供资料批注的功能,更为便利使用。1.4ModbusOPCServerDemoSystem本书提供Modbus及Modbus/TCP等两种OPCServer试用版(TrialVersion),符合OPCDataAccessV1.0andV2.0规范,可以执行2小时的联机,当Demo时间到时,就不做联机功能。以下说明OPCServer的操作方法,并且将利用此OPCServer进一步说明,如何以VB程序设计一个OPCClient功能。图(5-3):OPCServerDevicePropertiesDialog画面首先选择Menu[Add][NewDevice],显示出DevicePropertiesDialogBox如上图所示,以建立一个新的Device。DialogBox的各字段说明如下:zName:DeviceName必须是唯一的zDeviceType:联机的ModiconPLCType或ModbusDevicezCommPort:所连接的CommPort总共有8个PortzAddress:ModbusAddress也就是每个ModbusDevice的IDNo.zTimeout:通信逾时时间,超过此时间表示通信断线zSimulation:选择此项目后,OPCServer不会实际通信,提供仿真数据,此可以用来当未接实际Modbus设备时,显示仿真信号值提供给其它OPCClient程序联机测试用。zWordSwap:当所接到的Modbus资料,其16bitinteger依据Protocol规定为HighByte在前,LowByte在后的顺序,但是某些Modbus设备所传送的资料格式相反,此利用此选项修正之。图(5-4):OPCServerGroupDefineDialog画面然后选择Menu[Add][NewGroup],显示出GroupDialogBox如上图,输入GroupName。图(5-5):OPCServerTAGPropertiesDefineDialog画面然后再选择Menu[Add][NewTag],显示出TagPropertiesDialogBox如上图,以建立一个新的TAG。DialogBox的各字段说明如下:zName:TAGName于此Group内,此Name必须是唯一的。zDescription:此TAG的说明,提供使用者更多的说明叙述。zLoactionandType:该TAG的Modbus信号Type,具有InputCoil、OutputCoil、InputRegister、OutputRegister等四种。Location表示该TAG的地址。zDataType:此TAG的资料型态。zNumberofbytes:所具有的Byte数zScaling:原始信号值是否需要再做工程数值Range的转换,详见下图zSimulationsignal:选择仿真计算方法。有Sin、Ramp、Random等三种方法。Scaling画面说明:Range转换的设定画面zRawMin:原始信号值RangeLowzRawMax:原始信号值RangeHighzUnit:工程单位zMin:信号工程值RangeLowzMax:信号工程值RangeLowzConversion:转换用公式。有Linear、SquareRoot等两种。图(5-6):信号工程单位转换定义画面选择Menu[Edit][Port]显示左边画面Modbus的COMPort系数设定Port:通信埠,共有COM1–COM8BaudRate:通信速度Parity:None、Odd、EvenFlow:RTS、CTS流程控制DataBits:资料位StopBits:停止位图(5-7):