OPC XML
原作者:Marko Mattlio.
OPC XML研究是基于OPC XML 的0.31草稿版本说明书的。
1、 OPC简介
OPC基金会定义了一组基于OLE/COM的接口来在使用COM的系统中进行实时自动化数据交换,这些接口主要适用于使用微软操作系统的基于PC的客户端。
定义接口的目的是发展所有的自动化设备和通讯系统的通用接口,使它们像MES与ERP一样,在彼此之间或与其它系统之间进行通讯。
图1:专用接口与OPC
OPC已经被分为几个独立的工作组,它们着力于不同的领域:数据访问,报警与事件,历史数据访问,安全,批处理和XML。
除了安全与XML个,所有的工作组都有定义了在它们各自领域内的OPC接口。安全工作组致力于OPC内部的安全,而XML工作组试图发展一种灵活的、连贯的规则与格式来用XML表示生产底层数据,如数据访问、报警与事件那样,它也能从OPC接口中读到同样的数据。
2、 OPC XML说明书
OPC XML将提供一套具有电子商务功能的OPC集成方案,OPC基金会的市场总监与美国NI公司的工业自动化市场经理说:“OPC XML 是实现从控制设备,生产底层自动化系统到贯穿整个制造业的信息化应用之间的制造数据共享的关键”。
2.1背景
OPC基金会已经定义了下列接口:数据访问服务,事件服务,批处理服务与历史数据服务,这些服务包含了对企业有用的信息,目前通过基于OLE/COM的接口提供给企业应用。
XML,扩展标记语言,和基于XML的模式语言为描述与交换协作应用程序之间的结构信息提供了又一种方法。XML这种技术,可以在一和更加广阔的平台中得到应用,这一点,比OLE/COM优越。OPC-XML是OPC基金会采用XML系列技术来方便地交换生产数据。
2.2 基础
OPC XML说明书的早期版本列出了许多可能的传输XML的方法,如SOAP,HTTP,BizTalk,Socket.最新的版本着重介绍了SOAP1.1和它的内部传输方法,HTTP和MSMQ。
OPC XML定型为一种方式:[经允许它的结构住处在SOAP住处中作为一个SOAP整体进行输送。这样,OPC XML错误信息的处理就通过SOAP错误元素和OPC错误信息来实现。SOAP的错误信息发送整体的成功/失败信息,而单个错误则通过OPC错误来传送。
2.3 OPC XML接口
OPC XML 说明书定义了一套模式语言来标记这些接口。
l 读:ReadRequest, ReadReply
l 写:WriteRequest, WriteReply
l 订阅:SubscriptionRequest, SubscriptionReply, SubscriptionCallback
l 取消订阅:SubscriptionCancelRequest, SubscriptionCancelReply
这些接口通过以下四种交换方法来实现:
l DataRequest/DataReponse
l WriteRequest/WriteResponse
l CancelDataRequest/CancelDataResponse
l
BrowseRequest/BrowseResponse
由于这些语言不定,有待改动,故在此不详细解释了。
2.3.1数据请求
数据请求是请求OPC数据,有同步(请求-回应)与异步(订阅-更新)两种方式。它通过读取请求和订阅请求来实现。
2.3.2 数据响应
数据响应是对数据请求的响应。如果是同步请求,那么请求一次,回答一次,如果是异步请求,则是包括初始值与错误代码,此后,服务器发送包含发生值改变的条目的回应。
2.3.3 写请求
写请求是指写过程控制值到一个特定条目的请求。如果超过了特定的过期时间,服务器没有收到请求的话,那就什么也写不上。
2.3.4 写响应
写响应就是对写请求的响应,它给出从写控制值到特定条目过程中存在的所有错误。
2.3.5 取消数据请求
取消数据请求就是取消特定数据请求的要求,如果数据请求是订阅请求,所有后续数据更新都被取消,如果请求不是订阅,则是请求服务器释放分配给这个请求的资源。取消数据请求是由SubscriptionCancelRequest.来实现的。
2.3.6 取消数据响应
取消数据响应就是对取消数据请求的响应,它显示出取消动作是否成功。
2.3.7 浏览请求
浏览请求就是请求显示有服务器地址空间的特定位置的“枝”和“叶”的列表的请求,返回信息将显示“真实”存在于服务器地址空间的结构。或者能提供提示。请求的内容应包括浏览的“开始点”,空的请求默认是浏览“根”。
2.3.8浏览响应
浏览响应就是对浏览请求的响应,返回值则是位于服务器地址空间特定位置的“枝叶”
2.4 OPC XML服务的实现
OPC XML说明书并没有说明如何实现这个服务,但是工作组正计划在将来的WINDOW2000 平台上实现这个功能。
3 SOAP
3.1 SOAP简介
SOAP为使用XML在分权式、分布式环境上中的点进行有结构的信息交换提供了一个简单的轻量协议。SOAP本身并没有定义任何应用语义,如编程模型或实现特别的语义。它仅定义了一套简单的机制来表语义,这是通过提供一个模块性封装模型来实现的。同时SOAP为在模块内数据封装定义了一套编码机制。这样,从信息系统到RPC这样如此不同的系统中都能使用SOAP。
3.2 SOAP消息结构
一个SOAP封装文档有两部分:SOAP头部份和SOAP主体部份,SOAP头部份包括传输信息,这个信息是用户自定义的,它的内容取决于你的应用。SOAP主体部份包括要传输的实际数据。
图2:SOAP消息结构
3.3简单的SOAP示例
SOAP消息包括HTTP请求。
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAPENV:
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m="Some-URI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
SOAP响应包括HTTP响应。
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAPENV:
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse xmlns:m="Some-URI">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>