密级分类号编号成绩本科生毕业设计(论文)外文翻译原文标题INTERFACINGTHECONTROLLOGIXPLCCONTROLLOGIXPLCOVERETHERNET/IPOVERETHERNET/IP译文标题基于ETHERNET/IP的CONTROLLOGIX系列PLC接口作者所在系别电子工程系作者所在专业自动化作者所在班级B04221作者姓名李晓云作者学号20044022115指导教师姓名孙东辉指导教师职称副教授完成时间2008年7月北华航天工业学院教务处制共5页第1页译文标题Labview编程基于internet的测量原文标题LABVIEWPROGRAMMINGFORINTERNET-BASEDMEASUREMENTS作者KorinneResendez;RayBachnak译名凯瑟米尔等国籍美国原文出处JournalofComputingSciencesinColleges,TexasA&MUniversityCorpusChristi;TexasA&MUniversityCorpusChristi,2003共5页第2页基于ETHERNET/IP的CONTROLLOGIX系列PLC的接口凯瑟米尔,L.R.戴勒丝,美国摘要由美国A-B公司生产的ControlLogix系列可编程序逻辑控制器(PLC)提供了多种接口类型:如以太网、ControlNet、DeviceNet、RS-232等等。ControlLogix以太网连接模块“1756-ENET”使用了EtherNet/IP、ControlNet等协议,并采用了专业的服务代码封装于以太网协议包中。针对“实验性物理和工业控制系统”(EPICS)开发的驱动程序使用了EtherNet/IP协议,从而使得控制器可以运行vxWorksRTOS、Win32和Unix/Linux的测试程序。现在来分析一下这个接口的特点和使用场合。1引言散裂中子源项目(SNS)的几个子系统使用了A-B公司的ControlLogix系列PLC。通过集成这些EPICS加速器控制系统和输入输出控制器(IOC),系统可以直接进行读取和写入PLC数据。有了输入输出控制器(IOC),Unix或Win32系统的计算机和所有装有以太网连接口的个人计算机都可以对PLC进行编程,但它同时要求必须使用相同的技术来传输PLC数据。在现有的综合布线、网络硬件、配置和维护等技术知识的支持下,该产品完全可以使用。2ETHERNET/IPControlNet是一种确定性的串行通信系统,它的协议模型同七层的ISOOSI模型相似,采用了从物理层到应用层分层方式。ControlNet2.0版本引入了数据包的TCP/IP封装,而代替了基于以太网(IP/UDP/TCP)的物理层和数据链路层,最终形成“基于以太网的ControlNet”,称为EtherNet/IP。默认地,使用TCP/IP的端口0xAF12连接到EtherNet/IP目标之后,遵循封装协议建立一个身份ID,就可以直接进行信息交换了。他们定义了目标对象控制和信息协议(CIP),此协议被列为ControlNet协议的一部分。对于ControlNet传送层,协议区别“无关联”和“关联”CIP信息。虽然他们封装方式不同,但都可以通过默认的TCP协议进行连接。3CONTROLLOGIX的以太网接口ControlLogix系列PLC使用ControlNet总线来联接本地I/O板卡作为平台,1756-ENET以太网模块支持EtherNet/IP。只要遵循EtherNet/IP协议,我们就可以使用SendRRData等封装命令,发送CIP消息即可:Service:Get_Attribute_Single(0x0E)Path:IdentityObject(class0x01,instance1),ProductName(attrib.7)作为回复,接口送回如下信息:Service:Get_Attribute_Single-Reply(0x8E)Response:length=12,“1756-ENET/A”CIP对象模型同样包括“模拟输入点”(0x0A)和“离散输入组”(0x1D)对象,但是到目前为止,我们一切试图使用它们来访问ControlLogix模拟或数字输入模块的行为都失败了。原因是没有一个标准的CIP对象可以用来访问PLC的标签名称。与此同时,A-B公司针对ControlLogix推出了新的CIP服务编码,包括使用CIP路径来命名梯形图逻辑标签、单独使用读写的服务代码以及结合了传输二进制数据格式而使用的一些传输协议。使用SendRRData封装命令来发送CIP数据到PLC,必须通过连接管理器对象1756-ENET模块来寻址,见下例:Service:CM_Unconnected_Send(0x52)Path:ConnectionManager(class0x06,instance1)encodedtimeout,embeddedmessagePath:Port1(backplane),Link#(slot#ofPLC)。这则消息是读取一个标签‘TEST’:共5页第3页Service:CIP_Read_Data(0x4C)Path:‘TEST’(ANSIextendedsymbolsegment)Elements:UINT1当从PLC的回复显示端口连接成功则连接管理器开始传输:Service:CIP_Read_Data-Reply(0xCC)Response:CA000080383B=REAL0.002815CIP_Write_Data服务(0x53)允许在PLC上通过相似嵌入修改标签。与其它通信协议相比,它对梯形逻辑图的要求并没有改变!CIP读写服务能够访问所有控制器标签而不需要预先在PLC编程的软件标记他们为“生产”或“消费”类型,这包括对I/O模块的接入:模拟输入模块可利用在槽1上的第一通道,即“Local:1:I.Ch0Data”.这种类型的传输称为明确无关联传输,因为标签名被明确地提出,各个协议包是单独寻址。对于连接信息,在PLC上的消息路由器被要求打开连接:Service:CM_Forward_Open(0x54Path:ConnectionManager(class0x06,instance1)timeout,connectionID,updateinterval,…ConnectionPath:Port1,Link0(backplane,PLCslot),MessageRouter(class0x02,instance1)回复信息中提供一个号码。CIP_Read_Data请求能够按照SendUnitData封装命令的连接消息立即发送,同时在信息前加上一个顺序编号,发送CM_Unconnected_Send消息则并不需要嵌入这些。4设计的方案因为ControlNet连接信息的优势不能在EtherNet/IP上体现,这时就可以使用无关联信息:以太网不预留带宽;通过TCP协议来保证传输。对于CIP_Read_Data请求,比起关联信息,无关联信息有效地压缩了信息,并且在传输中提高了3%的速率。而缺点是,客户端应用程序必须在建立更新连接时发送请求,或者更快。以太网的延迟将导致PLC断开连接。ControlLogix多请求服务(0x0A)是用作合并CIP_Read/Write_Data请求,即当总请求或期望的请求值的大小到达PLC的缓冲极限(大约500字节)的时候使用。5EPICS技术支持的实施根据请求的更新率,vxWorks驱动代码针对各个PLC在扫瞄列表中都安排了标签名。一周期内每个PLC将处理所有读写请求。EPICS设备的输入和输出驱动支持:模拟量、二进制数和多位记录类型。当使用单个数组元素或结构体元素,以及并非数组或结构体的全部时,标签名就必须使用标量值。可以处理的PLC数据类型包括BOOL、SINT、INT、DINT和REAL。也可以在运行时改变记录的配置,这些是不需要重新起动输入输出控制器(IOC)的,即所涉及的标签名记录能实时替换。当发生通信错误或超时,驱动将默认断开PLC连接并尝试再连接。数组元素进入数组时,驱动默认要求传输顺序是从第一个元素到请求最高的元素。这样就决定了传送时间会大量减少,但可能会产生其他作用:每当输出改变的记录超过一个元素时,输入输出控制器(IOC)总将重写整个数组。因为持续传输,同样的PLC数组被其它数据来源也修改了(由PanelView显示),输入输出控制器(IOC)对这些变动忽略而重写他们。数组传输同样是受到上述PLC缓冲极限和大小限制的。针对这些情况,记录配置允许个别的数组元素传输到工作区。对于输出记录,每当记录被处理时,驱动都将发送一个CIP_Write_Data消息。否则它将周期性地从PLC上读取标签,并且当记录内容不同时,在PLC上将不断更新输出记录值。驱动为各扫瞄列表保留统计信息(错误计数,最新/最小/最大传送时间)。模拟输入记录能够得到这些值。这样会出现一个问题,以BOOL数组为例,他们会被作为DINT值传输。对于一个模拟共5页第4页值记录,标签“TEST[5]”会被作为第5个元素标记“TEST”.。同样地当在BOOL数组中,结果会是标记第5个DINT,160-191位。所以对于二进制记录,所有数组被作为BOOL数组进行连通,并且“TEST[5]”会在对DINT[0](第5位)请求时传输。以上情况在PPC和奔腾输入输出控制器(IOC)68K上都作了测试。更底层的驱动层会依次处理其他的字节。另外,一条简单的命令行编程是可以在Unix和Win32上使用的,它允许作为一种对PLC标签读写的调试工具。6成果请看下面,使用MVME2100CPU与100baseT网络接口通过一个双倍速集线器连接到一个10baseTPLC。其它办公室个人计算机和Linux文件服务器连接到同样的集线器上。网络使用率一般在2%以下。若是传输标量REAL、BOOL或DINT,以及一组15个REAL或352个BOOL值,速度是平均11毫秒传输一个单个的标签。从EPICS驱动合并多个请求是由PLC决定并受缓冲极限限制的,大约15个标签,每个以15个字符命名,当单独的传输要求超过160ms时,合并后可能只需大约20ms。而当使用普通设置时,输入输出控制器(IOC)配置了352个二进制的输入记录,以10Hz扫描一个BOOL数组的元素。而120个模拟输入记录,以2Hz扫描的三个元素为40个REAL的数组。因为以太网的不确定性,由于网络拥挤这些传输的比例会随时间而变化,造成的传送时间如下面直方图。图1:3天内的传送时间。整个BOOL数组传输时间平均是在15ms内,所有REAL的数组传输了25ms,以便于记录能更容易地在选定的扫瞄速率上更新。对于这些测量值,PLC的“系统上限的时间”设置到了10%。在增加到50%以后同时连接CPU和PLC到网络交换器,单个标签的平均时间减少到了7ms。7结论在使用开放的A-B公司产品进行读写标签等操作时,遵循EtherNet/IP协议是十分重要的。EPICS使用起来很方便。在系统运行时也可以随意改变记录配置;传输中由PLC缓冲极限的限制从而自动地决定是否合并。对比其它协议,没有必要定义标签名为“生产者”或“消费者”,亦不要求为ControlNet传输预定一个网络带宽值。根据以太网的本身特性,传送速率会随时间自动变化。交换网络拓扑结构也使网络的不确定性减到了最小。为了达到所需的输出值,也可以将值放在数组里。这样保证了梯形逻辑图的可读性,传输数组元素时,标签名字尽量使用可理解的而非无意义的名称。CIP服务代码不允许读取PLC标签名字及类型等信息,但它可以使用更为友好的EPICS驱动。各明确信息的标签传输信息是双向的请求。测试的1756-ENET模块版本不支持隐性信息。理想的输入输出控制器(IOC)能读取标签并且能接共5页第5页受随时变动的异步通知或周期性更新,没有不确定性。对于目前的实施水平,已经可以在EPICS环境下成功