购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 网络层的概念

DF1协议涉及OSI网络模型的物理层、数据链路层和应用层。网络层介绍见表3-1。

表3-1 网络层介绍

DF1协议最大的特点是联合了ANSI x3.28规范中的D1(数据透明性)和F1(双向同时传输兼内部响应)。数据透明性是指报文格式简单和数据的可读性,双向同时传输兼内部响应是指在物理层的RXD和TXD上数据是同时传输的。DF1支持全双工或半双工通信,对应不同的物理层网络拓扑,全双工通信需要基于RS-232、RS-422等进行网络部署,半双工通信需要基于RS-485进行网络部署。

3.1.1 DF1相关层介绍

1.物理层

物理层是一组电缆和接口模块,用来提供节点间通信的通道。一个节点作为网络上的连接点,通常具有唯一的地址。

当计算机连接到DH、DH+、DH485或ControlNet link上时,接口模块是DF1 link(RS-232)与Network link(DH、DH+、DH485或ControlNet link)之间的接口。DF1物理层连接如图3-1所示。

图3-1 DF1物理层连接

(1)DF1 link

一个DF1 link提供:

1)半双工协议的主从通信;

2)全双工协议的点对点通信。

(2)Network link

点对点通信能使用的网络连接类型见表3-2。

表3-2 网络连接类型

(续)

2.软件层

DF1和Network(DH、DH+和DH485)用软件的两层完成连接:

● 数据链路层;

● 应用层。

图3-2显示的是软件层的工作原理。

图3-2 软件层的工作原理

(1)数据链路层

该层控制着物理层上的通信流并具有以下功能:

1)确定物理介质上的编码。

2)控制谁传输数据,谁使用仲裁协议。

3)将数据包从源节点传输到物理链接上的目标节点。

根据连接类型的不同,数据链路层需要做的动作也不同。数据链路层的需求见表3-3。

表3-3 数据链路层的需求

(续)

(2)应用层

该层控制和执行两个节点规定的实际命令并具有以下功能:

1)数据库和应用处理接口。

2)解释命令。

3)将用户的数据格式化为数据包。

应用层的节点通常分为两种:

1)发送者,接收到一个用户信号,然后发送信息并等待回复,再发送结果给用户。

2)接收者,等待网络连接上的消息,当接收到消息时,执行操作并回复消息给发送者。

3.消息包结构

无论消息的功能或目的地是什么,网络上所有的消息都具有相同的基本结构。消息的基本结构见表3-4。

表3-4 消息的基本结构

下文将就协议和数据两部分展开详细的描述。

3.1.2 DF1协议描述

如果计算机连接一个接口模块,那么必须在计算机上编程以生成适合协议的字符序列,再发送给接口模块,通过DF1协议可以实现点对点通信。DF1协议是数据链路层协议,是一种用编程规则解释通过物理连接传输的信号,有如下特点:

● 从连接的一端到另一端传递一条没有错误的消息。它不关心消息的内容、功能信息或信息的最终目的。例如,全双工DF1协议完成无差错检查BCC或CRC,并且把检查结果附到每一个发送或者接收的信息的节尾。如果BCC或者CRC可接收,则返回一个ACK;如果BCC或者CRC不可接收,则返回一个NAK。

● 用错误代码指示失败。在通信字符内部,协议能够划分消息并检测信号错误,错误后可重试,以控制消息流。

DF1协议主要分两类:DF1半双工协议(主从通信)和DF1全双工协议(点对点通信)。

DF1半双工主从协议提供一种多支路单主多从网络通信,主站通过定时轮询从站启动通信。半双工协议是一种支持一主多从通信方式的协议,允许2到255个节点通过modem同时连接到单一链路上。如果只有一个从站,从站可以直接与主站相连。

DF1全双工协议是点对点的通信协议,主要特点有:在点对点链路中允许同时收发数据,在多支路链路中的交互模块具有数据仲裁功能,高性能的协议实现程序尽可能从传输媒介中获得更大的数据流量。当通过AB通信模块连接交互模块时,通信模块自动完成仲裁功能。如果系统对实时性要求不高,则采用半双工通信模式;反之采用全双工通信模式。

全双工与半双工通信的控制字符、数据帧格式、数据处理流程等均不同,需要区别处理。

由于计算机本身没有RS-485接口,再加上全双工通信效率更高,因此本书将着重介绍全双工协议。

1.全双工协议控制字符

全双工协议支持点对点的连接,允许双向同步传输。在端点连接上,接口模块可以仲裁连接上传输的顺序等信息。

(1)字符传输

AB PLC通过RS-232接口发送串行数据,一次10bit到11bit(带奇偶校验)。如果数据长度是8bit,那么奇偶校验被保留,但要确认计算机是否符合这种模式。字符传输格式见表3-5。

表3-5 字符传输格式

(2)传输的字符

全双工协议都是面向字符的,它们使用表3-6中的ASCII控制字符进行控制,第7位加一个0,扩展到8位。

表3-6 控制字符

(续)

字符组是对连接协议具有特定含义的一个或者多个位的序列。字符组包含的字符必须一个接着一个,中间不能有其他字母。DF1协议将表3-6中列出的字符组合成控制和数据字符,控制字符是DF1协议读取特定消息时所需的固定符号,数据字符是包含特定消息应用数据的可变符号。全双工控制字符见表3-7。

表3-7 全双工控制字符

2.用DF1的全双工协议发送和接收数据

在全双工协议中,设备共享相同的数据电路,并且两个设备可以同时“通话”。全双工协议可以比作双车道桥:汽车可以同时在两个方向上行驶。

全双工协议连接两个物理电路,使双向消息同时传输(命令或者回复消息包)。这两个物理电路提供四条逻辑传输路径。全双工消息传输机制如图3-3所示。

图3-3 全双工消息传输机制

1)在电路1中,发送者A向接收者B发送消息(路径1),接收者A发送响应控制字符(DLE ACK、DLE NAK)到发送者B(路径3)。

2)在电路2中,发送者B向接收者A发送消息(路径4),接收者B发送响应控制字符(DLE ACK、DLE NAK)到发送者A(路径2)。

3)电路1中的所有消息和字符都是沿着相同的方向(A到B)移动,电路2中的消息和字符以相反的方向(B到A)移动。

3.全双工的协议环境

AB PLC使用发送器和接收器实现DF1的接收和发送。下面就以发送器和接收器来定义协议环境。

1)发送器需要知道哪里接收它发送的信息。

● 根据发送器的要求一次发一条信息。

● 在传输下一条信息之前,需要通知传输是否成功。

2)接收器必须具有处理消息的机制,见表3-8。

表3-8 接收器消息处理机制

从发送器A到接收器B(路径1)的消息符号以及从接收器B到发送器A(路径2)的响应代码的发送和接收协议环境如图3-4所示。

图3-4 发送和接收协议环境

4.消息特征

理想状态下,数据链路层协议与在该层上传输的内容或者消息包的格式(链路层数据)没关系,然而全双工协议对数据内容做了规定。

1)链路层数据最小为6字节。

2)链路层数据最大大小取决于应用层命令。

3)一些协议的执行要求链路层数据的第1个字节匹配节点地址,例如1771-kg模块的点对点通信。

4)作为重复消息检测算法的一部分,接收器将链路层数据的第2、3、5和6字节与前一消息中的相同字节进行比较,如果字节之间没有差异,则消息归类为前一消息的重传。读者可以设置AB PLC接口模块的参数,使其不执行重复消息检测。

5.发送器和接收器传输消息

在全双工协议中,消息源(提供消息包的软件)通过发送器(发送数据的设备)发送数据,然后接收器(接收数据的设备)接收到接收器(接收数据的软件)。

1)发送消息逻辑图如图3-5所示。

图3-5 发送消息逻辑图

2)接收器必须能够对有问题的情况做出反应,以下就是接收数据的过程中可能出现的一些问题:

①接收器已满,无法接收下一条消息。

②消息可能包含奇偶校验错误。

③BCC或CRC校验码不可用。

④DLE STX或DLE ETX BCC/CRC丢失。

⑤消息太长或太短。

⑥消息外发生错误的控制字符或数据字符。

⑦消息内发生错误的控制字符。

⑧DLE ACK反馈丢失导致发送器重复发送了同一条消息给接收器。

接收消息逻辑图如图3-6所示。

图3-6 接收消息逻辑图

3)一个完整的发送和接收过程如图3-7所示。

图3-7 发送和接收过程

3.1.3 DF1消息帧结构

1.数据链路层消息帧

数据链路层帧的特点如下:

● 全双工协议在不同的网络层实现其消息字段;

● 末个轮询和消息帧的末尾有1字节的BCC字段或2字节的CRC字段。

下面就开始介绍消息帧结构。

全双工协议实现不同的消息帧,这取决于网络层。图3-8显示了全双工消息帧的结构。

图3-8 全双工消息帧的结构

BCC/CRC字段包含DLE STX和DLE ETX之间的所有应用层数据的8位和的二进制补码。它不包括任何响应字符,可以使用块校验符(BCC)或者16位循环冗余校验(CRC16)对BCC/CRC字段进行错误检查。

2.BCC和CRC

在每一个轮询帧和每个消息帧的末尾,有1字节的BCC(块检查字符)域,或者2字节的CRC(循环冗余检查)域。通过开关设置或者软件配置选择BCC或CRC。任一域都能验证每个消息帧传输的准确性。下面对这两种校验方法分别进行介绍。

(1)BCC校验方法

BCC算法提供了中等级别的数据安全性,但是使用时注意以下两点:

● 在传输的过程中,不能检测到字节的移位。

● 不能检测帧内零的插入或删除。

以全双工协议BCC计算为例,如果一个消息帧包含十进制数据08、09、06、00、02、04和03,那么BCC消息帧如图3-9所示。

图3-9 BCC消息帧

APP DATA部分的和是32,那么转换为十六进制就是20 Hex。BCC校验是这个和的二补数(即二进制补码)运算,本例的二补数运算结果就是E0 Hex。二补数是一种用二进制位表示有号数的方法,也是一种将数字的正负号进行编号的方式。一个数字的二补数就是将该数字做原位的反运算(即二进制反码),再将结果加1,即为该数字的二补数。二补数算法如图3-10所示。

图3-10 二补数算法

要点:若要传输10 Hex,则必须使用数据字符DLE DLE表示。但是,这些DLE数据中只有一个包含在BCC总和中,例如传输十六进制数据08、09、06、00、04和03,消息帧如图3-11所示。

图3-11 含有10 Hex的消息帧

在上面的例子里,应用层数据的字节总和是2E Hex,因为只有一个DLE包含在BCC中,所以BCC是D2 Hex。

注意 如果BCC的校验和是10 Hex,则将其发送为“10”而不是“10 10”,即BCC不会被视为数据。

(2)CRC校验方法

AB PLC采用CRC-16/ARC算法。下面说明这种CRC算法的计算方法。

1)在消息帧开始时,发送器清除16位用于存储CRC值的寄存器。

2)把第1个8位二进制数据(即通信信息帧的第1个字节)与16位CRC寄存器的低8位相异或,把结果放于CRC寄存器中,高8位数据不变。

3)把CRC寄存器的内容右移一位(朝低位),用0填补最高位,并检查右移后的移出位。

4)如果移出位为0,则重复第3步(再次右移一位);如果移出位为1,则CRC寄存器与A001(1010000000000001)进行异或。

5)重复步骤3和步骤4,直到右移8次,这样整个8位数据全部进行了处理。

6)重复步骤2到步骤5,进行通信信息帧下一个字节的处理。

7)该通信信息帧所有字节按上述步骤计算完成后,将得到的16位CRC寄存器的高、低字节进行交换。

8)最后得到的CRC寄存器内容即为CRC码。

9)ETX值传送完后,传送CRC寄存器中的值。接收器也计算CRC值,并将其与接收到的CRC值进行比较,以验证收到的数据的准确性。

下面是个实际的帧,你可以用下面的字符串验证CRC计算程序。按照上面的步骤,需要计算的CRC字符段为DLE STX到DLE ETX之间的字符,那么需要校验的就是07 11 41 00 53 B9 00 00 00 00 00 00 00 00 00 00 00 00+03(ETX),如图3-12所示。

图3-12 CRC校验例子

3.1.4 应用层数据包

本节主要讲解应用层软件程序设计和应用层使用的消息包结构。应用层主要使用应用程序发送和接收消息。应用程序分为两种,即命令发起者和命令执行者,这两种应用程序的功能见表3-9。

表3-9 命令发起者和命令执行者的功能

在AB PLC内部,Allen Bradley异步接口模块使用路由子程序和消息序列,当模块接收到异步连接上的消息时,它将消息放入排队序列。然后,路由子程序从序列里选出消息,并通过DH、DH+或DH485网络传输消息。模块还对从网络接收的消息进行排序,路由子程序接收到这些消息,并通过异步连接重新传输它们。

1.消息包格式

大部分设备发送和接收消息包的结构如图3-13所示。

图3-13 发送和接收消息包的结构

这些字段在链路上从左向右传输,具体解释见表3-10。

表3-10 消息包字段具体解释

注意 SRC、CMD和TNS的组合是每个消息包里的唯一标识,必须与上一个消息包中的相应字符段不同。如果相同,则忽略该消息,并将其视为一个副本;如果接收模块启用了“忽略重复消息”选项,则此消息将被忽略。

下面对每个字段进行更详细的讲解。

(1)DST和SRC

通过交换相应命令消息的DST和SRC,形成应答消息的DST和SRC,如图3-14所示。

图3-14 DST和SRC交换

(2)CMD和FNC

这两个字段一起工作,定义命令消息在目的节点要执行的内容。这些字段的内容由应用程序产生。消息格式取决于CMD和FNC的值,CMD为命令类型,FNC为命令类型下的特定功能,CMD格式如图3-15所示。

图3-15 CMD格式

举例:PLC-2指令enter download mode

发送=00000111(07 Hex)

应答=01000111(47 Hex)

高优先级发送(DH only)=00100111(27 Hex)

高优先级应答(DH only)=01100111(67 Hex)

(3)STS和EXT STS

这些字段表示消息传输的状态,传输正确返回0,传输错误返回非零字符,解释见表3-11。

表3-11 STS和EXT STS解释

注:只有当STS=F0时,消息才包括EXT STS部分。

STS用不同的位来表示应用层和链路层的传输错误信息,其位解析如图3-16所示。

有关STS和EXT STS错误代码的更多信息,参见3.2.2节。

图3-16 STS位解析

图3-17 TNS字段

(4)TNS

TNS包含唯一的16位标识符,通过维护一个16位计数器来生成这个数字。每次应用程序创建新消息时递增计数器,并将计数器值存储在新消息的两个TNS字节中。多任务环境必须使用TNS计数器,并且读取和增加TNS必须是不可分割的。TNS包含两字节,发送时低字节在前,高字节在后。TNS字段如图3-17所示,TNS值的分配见表3-12。

表3-12 TNS值的分配

注意 不要在应答消息中更改TNS值,应答消息直接把命令TNS复制过去就行。如果更改此值,则命令启动器不能匹配其命令与相应的应答消息。

(5)ADDR

ADDR(地址)包含命令执行器中要执行命令的存储器位置的开始字节地址,但SLC500处理器除外,它的ADDR被解释为字地址。

SLC 5/02、SLC 5/03和SLC 5/04处理器可以将CIF寻址模式位S:2/8设置为1,以将ADDR的解释更改为字节地址,使其与其他PLC处理器兼容。例如,如果命令要从命令执行器读取数据,那么ADDR指定要读取数据第1字节的地址。ADDR字段如图3-18所示。

在某些情况下,当从基本命令集向PLC-3、PLC-5、PLC-5/250或SLC500处理器发送命令时,必须创建特殊文件以接收数据。

图3-18 ADDR字段

注意 ADDR字段指定的是在PLC数据表中字节的地址,而不是字的地址。在后文中有如何解释PLC字到字节地址转换的相关内容。

(6)SIZE

消息要传输的数据字节数。此字段出现在read命令中,其中指定响应节点在其应答消息中必须返回的数据字节数。其大小随命令的类型而变化。PLC-5和PLC-5/250键入读写命令,该字段指元素的数量,而不是字节。在PLC-5中键入read和写命令,该字段为两字节长:先传输低字节,后传输高字节。

2.通信指令

此部分叙述了发送通信指令给Allen Bradley PLC时应该使用的格式,并列出了通信指令的约定。下面开始描述指令如何使用。这些命令的消息包包括STS,可能还有包含状态和错误代码信息的EXT STS字段。有关这些字符的更多信息,请参阅3.2.2节。如果有些PLC数据涉及安全,不想被这些指令影响,那么需要使用以下的设置提前做数据保护:使用PLC-5/11、-5/20、5/30、-5/40、-5/60或-5/80处理器,可以指定权限,保护数据文件不被写入访问DH+链接;使用SLC 5/02、5/03或5/04处理器,可以指定静态文件保护,保护数据文件不被写入并防止从任何通信通道访问。

在一些情况下,接口模块能够通过设置PLC/SLC点来拒绝命令输入,具体要看PLC的手册描述。

表3-13(见本书配套资源包)为DF1通信指令,是PLC型号和对应指令的列表,第1列为命令,第2列为CMD(十六进制),第3列为FNC(十六进制),第1行其他部分为PLC型号,对应的列有√的意思是这种PLC支持这个命令。如果向PLC发送不支持的指令,则会发生不可预知的错误。

由于指令和PLC型号太多,我们着重讲一下具有代表性的MicroLogix1000相关指令。如果要了解其他指令,请自行查阅相关PLC手册。下面开始介绍指令,C为发送指令,R为指令的回复。

(1)change mode

1)改变MicroLogix PLC模式的指令,指令消息如图3-19所示。

图3-19 MicroLogix PLC change mode指令消息

2)改变SLC 5系列(包括500、5/03、5/04)的模式,只有钥匙在REM位置才起作用,指令消息如图3-20所示。

图3-20 SLC PLC change mode指令消息

(2)close file

关闭PLC的文件,当程序文件被打开并写完后将其关闭,指令消息如图3-21所示。

图3-21 close file指令消息

(3)diagnostic status

从接口模块读取状态模块的信息,返回的状态内容在下面的数据部分,状态信息随接口模块的类型而变化,指令消息如图3-22所示。

图3-22 diagnostic status指令消息

(4)disable force

取消I/O的强制功能,所有的强制将被取消,指令消息如图3-23所示。

图3-23 disable force指令消息

(5)download completed

下载完整系统后使用,使处理器回到之前的模式,指令消息如图3-24所示。

图3-24 download completed指令消息

(6)echo

检查通信连接上传输的完整性。命令消息将最多243字节的数据传输到节点接口模块。接收模块应对此进行回复,并通过将相同的数据传回原始节点来执行命令,指令消息如图3-25所示。

图3-25 echo指令消息

(7)initialize memory

重置处理器的内存目录,不重置通信设置,指令消息如图3-26所示。

图3-26 initialize memory指令消息

(8)open file

打开PLC处理器的文件,如果文件成功打开,则返回一个标签(低字节,高字节),指令消息如图3-27所示。

图3-27 open file指令消息

指令消息里的Tag用于命令protected type file read或者protected type file write,Tag也可用于关闭文件。如果回复有错误,那么Tag也可能被EXT STS代替。

(9)protected typed file read

从PLC打开的文件读取数据,指令消息如图3-28所示。

图3-28 protected typed file read指令消息

其中,Offset是文件中读取数据起始地址的偏移量;Size是读取数据的大小,MicroLogix 1000为0~248字节,SLC 500、5/01、5/02为0~96字节。

(10)protected typed file write

将数据写入PLC,对于MicroLogix 1000,这个命令可用于更新终端ID。(为此,Size=02h,Tag=4176,Offset=0000,File tpye=90,两个字节的数据就是终端ID,低字节优先。)指令消息如图3-29所示。

图3-29 protected type file write指令消息

其中,Offset是文件中读取数据起始地址的偏移量,Size是读取数据的大小,MicroLogix 1000为0~241字节,SLC 500、5/01、5/02为0~89字节。

(11)protected typed logical read with three address fields

从PLC的逻辑模块读取数据,指令消息如图3-30所示,特定命令消息部分字节解释见表3-14。

图3-30 protected typed logical read with three address fields指令消息

表3-14 特定命令消息部分字节解释

(12)protected typed logical write with three address fields

将数据写入PLC的逻辑模块,指令消息如图3-31所示,特定命令消息部分字节解释见表3-15。

图3-31 protected typed logical write with three address fields指令消息

表3-15 特定命令消息部分字节解释

对PLC文件的读写需要了解每个类型PLC文件的存储规则,我们以MicroLogix 1000的内存文件为例,其所包含的数据类型组织如下。

1)O0,输出文件Output (file 0),存储输出模块的状态。

2)I1,输入文件Input (file 1),存储输入模块的状态。

3)S2,状态文件Status (file 2),存储控制器操作信息,用于控制器故障诊断和程序操作。系统状态文件向用户提供用户程序所使用指令的相关信息,指示错误的诊断信息、处理器方式、扫描时间、波特率、系统节点地址等数据。熟悉状态文件中每个字的含义可以为编程诊断和调试带来方便。

4)B3,位文件Bit (file 3),用于存储内部继电器逻辑。

5)T4,计时器Timer (file 4),存储计时器累加值、预设值以及状态位。

6)C5,计数器Counter (file 5),存储计数器累加值、预设值以及状态位。

7)R6,控制Control (file 6),存储数据的长度、位指针位置以及位状态,用于需要文件操作的一些指令,如移位寄存器指令和顺序器指令。

8)N7,整数Integer (file 7),存储数字值和位信息,用于放置一个16位的字。

每个数据文件类型被标示为一个字母和一个数字文件号,见表3-16。

表3-16 文件类型对应文件号

数据文件的类型要结合表3-14、表3-15和表3-16一起来定义,数据文件的地址由文件名称、文件号、元素名、字号及位构成,相互之间用一定的分隔符分开,不同数据类型的每个元素具有的字数不同,有单字元素(输入/输出文件)和三字元素(计时器和计数器文件)。

(13)read diagnostic counter

从接口模块的PROM或者RAM里读取最多244字节的数据,可以使用此命令读取模块的诊断计时器和计数器,指令消息如图3-32所示。

图3-32 read diagnostic counter指令消息

(14)reset diagnostic counter

重置节点接口中的所有诊断计时器和计数器模块为零,指令消息如图3-33所示。

图3-33 reset diagnostic counter指令消息

(15)read link parameter

读取DH485参数,指令消息如图3-34所示。

图3-34 read link parameter指令消息

(16)set link parameter

设置DH485参数,指令消息如图3-35所示。

图3-35 set link parameter指令消息

(17)unprotected read

从公共接口文件(CIF)读取数据。SLC 500 CIF是数据文件9,MicroLogix 1000 CIF是整数文件7。这个命令用于读取PLC中的保护文件,指令消息如图3-36所示。

图3-36 unprotected read指令消息

其中,Address为CIF文件里的逻辑偏移,Size为从偏移地址开始的字节数。

(18)unprotected write

写数据到CIF。SLC 500 CIF是数据文件9,MicroLogix 1000 CIF是整数文件7,指令消息如图3-37所示。

图3-37 unprotected write指令消息

其中,Address为CIF文件里的逻辑偏移,Data为要写入的数据。

注意 以上大部分指令的应答消息都含有ETX STS,但是只有在出现错误时,才可以将EXT STS字段附加到应答包中。 9s1pKoWPvlZAeZOMk17H9kHoeko0WKWEOeNkvuY5Pbyd9CPgNeTYbT1Pe4+9NGVE

点击中间区域
呼出菜单
上一章
目录
下一章
×