首页 > 代码库 > PLC及其编程起步[.net]

PLC及其编程起步[.net]

声明:本人非专业人士,也未从事该领域的工作,若有错误地方,请多包涵。

概述

           在工业控制领域,常常提到PLC,也就是Programmable Logic Controller(PLC)。随着工业的发展,传统的智能设备之间及智能设备与控制系统之间采用专门驱动程序实现信息共享的通讯方式已不能满足工业控制系统的发展需要。因此,为了能够解决工业系统硬件设备的升级改变为软件系统带来的不便,更好的实现不同设备厂家硬件产品的集成互连,增强系统的稳定性与可靠性,工业自动化软件接口的标准化、统一化成为工业控制领域必须面临的一个问题。

      于是出现了PLC服务器,由服务器负责与底层的硬件通讯;PLC客户端不再直接与硬件直接通讯,而是通过PLC服务器中转。如此,客户端不需要再针对不同的硬件使用不同的通讯协议,而是使用统一的协议与PLC服务器通讯,大大简化了开发难度和时间。其架构示意如下图所示(图中使用的是OPC的服务器,下面会讲到)

DDE&OPC

        PLC服务器与客户端之间通讯方式大体分为2种:DDE和OPC。

1. DDE

DDE即动态数据交换,最早由微软提出。动态数据交换基于windows消息机制,各应用程序间通过传递消息进行对话交换信息。windows dde消息传递采用client/server模式,客户(client)是数据的请求和接受者,而服务器(server)是数据的提供者,两者之间通过请求、应答、传输三个步骤来完成数据的传送。dde协议使用服务(service)、主题(topic)和数据项(item)三级命名来标识dde所传递的数据单元。一般情况下,服务(service)就是应用程序的文件名,主题是对服务器有意义的信息单元。每次dde客户与服务程序之间的对话都是先由客户启动的,所以在每次客户启动之前,dde服务器应当首先投入运行。

    DDE的工作方式有冷连接(cool link)、温连接(warm link)和热连接(hot link)等3种。在冷连接方式下,当server中的数据发生变化后不主动通知client,但client可以随时从server读写数据;在温连接方式下,当server中的数据发生变化后马上通知client,client得到通知后将数据取回;在热连接方式下,当server中的数据发生变化后马上通知client,同时将变化的数据直接送给client。

    DDE的网络形式称为netdde,它包含了dde的全部特征,是动态数据交换(dde)的扩充,可以在跨越网络的计算机之间使用。采用netdde后,两个或更多网络上的应用能够通过dde共享来建立网络上不同工作站之间的连接,从而实现站站之间的动态信息共享。

    如果需要在.net平台开发PLC,可以使用NDde:https://ndde.codeplex.com/。这是一个开源库,dde的方式比较简单,基本上参照例子可以完成需要的功能。需要测试时,直接打开一个excel就可以作为服务器,连接格式:excel|sheet1!’r1c1’,“excel”是固定的,“sheet1”是指第一个sheet,“r1c1”是指第一行第一列。

    DDE已经逐渐被淘汰,微软也已经把DDE从新操作系统中去除(貌似xp是最后一版)。  

2.OPC

   OPC全称是OLE for Process Control相比较DDE复杂多。最初阶段的opc规范是由opc基金会的先驱fisher-rosemount、rockwell、opto 22、intellution、intuitive technology公司于1996年8月发布的,目前opc基金会成员在全球已超过300多个,其中包括世界上几乎所有主要的控制系统、仪器仪表、过程控制系统生产厂家。 

      opc以ole/com/dcom技术为基础,是ole(object linking and embedding)for process control的缩写,是微软公司的对象链接和嵌入技术在过程控制方面的应用。与dde一样,opc也采用client/server模式。opc服务器是数据源的提供者,数据源可以是plc、dcs、条形码读取器等控制设备,随控制系统的构成不同,作为数据源的opc服务器既可以是和opc应用程序在同一台计算机上运行的本地opc服务器,也可以是在另外计算机上运行的远程opc服务器。opc客户是数据的使用者,它按照opc接口规范从opc服务器获取所需要的数据。
      opc服务器主要包括三部分:服务器(server)、组(group)和数据项(item)。服务器对象保存服务器和服务器作为opc组对象容器的所有信息。opc组对象包括公共组和局部组(私有组)两种,公共组由多个客户共享,局部组只隶属于一个opc客户。一个组可能代表一个特殊设备的数据项,opc 客户可以通过组对象来读写数据,并可以设定opc服务器应该提供给opc client数据的更新速率。opc 数据项是读写数据的最小逻辑单位(在实际应用中,可能是物理设备的寄存器或寄存器的某一位),其数据值以variant形式表示,每个数据项包括值(value)、品质(quality)和时间戳(time stamp)3个变量。在一个组对象中,opc 客户可以加入多个opc数据项。
      opc客户与opc服务器的接口有自定义接口(custom interface)和自动化接口(automation interface)两种形式。自定义接口是一组com接口,主要用于采用c++语言的应用程序开发;自动化接口是自动化的ole接口,主要用于采用vb,delphi等基于脚本编程语言的应用程序开发。对于客户端应用程序的开发,采用自定义接口的方式运行效率高,但开发难度较大;采用自动化接口的方式运行效率低,但开发简单。这两种接口与opc服务器的通信方式如下图所示。

      OPC的数据访问主要有同步数据访问和异步数据访问两种方式。同步数据访问时,opc服务器在将按照opc应用程序要求的数据返回之前,opc应用程序一直处于等待状态,也就是说,同步方式的数据访问在要求的动作没有完成前不能执行任何opc应用程序侧的处理。与之相比,异步方式的数据访问在对opc服务器提出数据访问要求后,立即返回到opc应用程序侧的主处理程序中,opc服务器完成数据访问时通知opc应用程序,opc应用程序从而得到数据访问结果。当opc应用程序采用自动化接口访问opc服务器时,同步和异步数据操作分别由syncread、syncwrite和asyncread、asyncwrite四个opc组对象的方法函数来实现。

 

OPC版本

      OPC发展至今,存在3个版本,这也是初次接触的人会搞不清的地方。

      version 1.0:OPC Classic

      version 2.0:OPC Unified Architecture (UA)

      version 3.0:OPC .NET 4.0 (formerly OPC Express Interface or OPC Xi) ,is based on Microsoft’s .NET Framework and uses Windows                   Communications Foundation (WCF) in place of COM/DCOM. The specification includes backward compatibility with OPC Classic.

 

OPC Version 1.0

      现在大多数的服务器都支持1.0的版本。下面主要说说这个版本,也是我接触过的版本。

      OPC Classic中又分为下面三个部分:   

数据采集技术(DA):OPC技术通常在数据采集软件中广泛应用。现在众多硬件厂商提供的产品均带有标准的OPC接口,OPC实现了应用程序和工业控制设    备之间高效、灵活的数据读写,可以编制符合标准OPC接口的客户端应用软件完成数据的采集任务。   

历史数据访问(HDA):OPC提供了读取存储在过程数据存档文件、数据库或远程终端设备中的历史数据以及对其操作、编辑的方法。 

报警和事件处理(AE):OPC提供了OPC服务器发生异常时,以及OPC服务器设定事件到来时向OPC客户发送通知的一种机制,通过使用OPC技术,能够更好的捕捉控制过程中的各种报警和事件并给予相应的处理。


开发资源

.net库: 去OPC基金会的官网下载,https://opcfoundation.org/。不过貌似要是会员才行。所以去网上能搜到,csdn就有,注意版本。

 测试工具:

     支持V1.0的工具, 下载matrikonopc的免费工具就行matrikonopc explorer, matrikonopc server for simulation,官网http://www.matrikonopc.com/。

     支持V2.0的工具,下载unified-automation提供的服务器、客户端,官网http://www.unified-automation.com/

     支持V3.0的工具,3.0没研究过,不知道。:(

             例子:相比DDE,使用OPC的二次开发库,想实现需要的功能还是有点难度的(针对第一次弄的人)。会在另一篇blog里面贴些网上收集的代码。


PLC及其编程起步[.net]