n
1 DNP3通信规约概述
DNP 3.0(Distributed Network Protocol Version 3.0,简称DNP3,下同)规约是目前在欧洲及北美比较流行的一种开放性结构的规约,在国内正逐渐成为主流性通信规约之一。它可用于电力系统子站系统、RTU、智能电子设备(IEDS)以及主站系统之间的通信。由于目前大部分国外配电自动化(DA)设备都支持DNP3,为使电力设备具有兼容性和标准性,大部分与国外电力主站配套的FTU(馈线终端单元)都使用DNP3通讯规约,DNP3规约是一个开放性公共远动通信规约,现已成为主流远动通信规约之一,广泛应用于电力、城市供水等行业。
DNP3规约是一种分层的通信规约,与OS1参考模型所采用的7层结构不同的是,DNP3规
约采用了由物理层、链路层、应用层组成的3层增强性能结构(EPA),同时提供了一层称之为伪传输层的辅助层用于通信信息的分段处理,其与常规OSI参考模型比较如下图1所示:n
图1:DNP3的通讯模型n
1.1 DNP3 数据链路层
DNP3数据链路层规约文件规定了DNP3.0版的数据链路层、链路规约数据单元(1 PDU)以及数据链路服务和传输规程,采用FT3可变帧格式,其帧格式下图2所示意:n
图2:DNP3数据链路层帧格式n
从图2可以看出,1个FT3帧被定义为1个固定长度(10字节)的报头,随后是若干个可以选用的数据块(最大长度16字节),每个数据块附有1个16位的CRC校验码,总的链路层帧长度不超过256字节。n
1.2 DNP3 伪传输层
DNP3伪传输层用于在原方站和从方站之间传送超出链路规约数据单元(I PDU)所定义长度的信息。其格式如下图3所示:n
图3:DNP3伪传输层帧格式n
从图3可以看出,传输层报头TH为传输控制字,1个字节;数据块为应用用户数据,1~249个字节,由于数据链路层的FT3帧格式中的长度字的最大限制为255,因此传输层数据
块的最大长度为:255-5(链路层control + source +destination)-1(TH)=249。当应用层用户数据长度大于249字节时,传输层将以多帧报文方式传送,并每帧前加TH控制字,如1234=249+249+249+249+238,将分5帧传送。n
1.3 DNP3 应用层
DNP3应用层定义了应用层报文(APDU)的格式。其中主站被定义为发送请求报文的站,而从站则为从属设备,被请求回送报文的智能终端(1EDs)是事先规定了的。在DNP3中,只有被指定的主站能够发送应用层的请求报文,而从站则只能发送应用层的响应报文。应用层报文格式分别如下图4和图5所示:
Request Header
请求报头 Object Header对象标题 Data
数据 Object Header对象标题 Data
数据n
图4:DNP3应用层请求报文帧格式
图5:DNP3应用层响应报文帧格式n
1.4 DNP3 规约的主要特点
DNP3采用Polling Cycle或Poll Group的通讯机制,具有如下特点:
1)采用单一的变长FT3帧格式,既有利于不同长度信息的传输,又使得帧格式得到统一。
2)链路层报头带有源地址和目的地址,有利于采用多点共线物理层通道结构的数据传输。
3)支持主动上报(unsolicited response)的通信方式,有利于在故障发生时从站非请求主
动上报信息。n
2 配置WinCC Telecontrol与TMW Protocol Test Harness模拟软件进行DNP3规约通讯
下面将详细介绍如何配置WinCC Telecontrol作为主站与TMW Protocol Test Harness作为子站的进行DNP3规约通信,包括双方的通信连接握手过程,各种数据对象库(包括二进制输入对象、包括二进制输出对象、计数对象、模拟量输入对象、模拟量输出对象、时间对象、级类对象等)的数据交换机制原理和数据读写,通讯网络结构如下图6所示:n
图6:通讯网络结构n
2.1 硬件和软件需求n
在本文中涉及到硬件如下:n
(1) 由于WinCC Telecontrol安装后将集成到WinCC中,TMW Test Harness为PC模拟软件将安装在另外一台PC中,因此将涉及到两台PC机,对于PC机没有特殊要求,推荐使用配置较高的PC
所使用的软件如下:
(1) 本文档测试中使用到的Siemens Simatic WinCC软件如下图7所示:
图7:Simatic WinCC测试软件列表n
(2) TMW Protocol Test Harness,版本V2.0.43,含21天的Demo试用授权
关于TMW Protocol Test Harness软件的Demo版可以从以下连接中获取:
http://www.trianglemicroworks.com
2.2 TMW Protocol Test Harness模拟软件简介
TMW Protocol Test Harness PC模拟软件是TriangleMicroWorks公司推出的针对电力行业计算机模拟测试软件,支持多种电力通信规约,包括IEC60870-5-101、IEC60870-5-103、IEC60870-5-104及DNP3等电力远控规约,同时支持Modbus RTU/TCP通讯协议,能够作为上述通信规约的Master和Slave,非常适合于与第三方设备或软件进行模拟电力行业的各种环境测试。
对于TMW Protocol Test Harness PC模拟软件,在DNP3作为Slave站下其各种数据对象的地址分布如下表1所示:n
数据类型 | 数量 | 长度 | 所属类Class | 索引Index | 备注 |
单点数字位输入(Binary Input) | 40 | 8 Bit | Class1 | 0-39 | 单点输入信号,其中信号占1bit,其余7Bit为Flag |
双点数字位输入(Double Bit Input) | 40 | 8 Bit | Class1 | 0-39 | 双点输入信号,其中信号占2bit,其余6Bit为Flag |
数字输出(Binary Output) | 35 | 8 Bit | Class1 | 0-34 | 单点输出控制信号 |
计数器输入(Counter Input) | 30 | 32/16 Bit | Class3 | 0-29 | 计数器输入信号 |
冻结计数器(Frozen Counter ) | 30 | 32/16 Bit | Class3 | 0-29 | 冻结计数器信号 |
模拟量输入(Analog Input) | 75 | 32/16 Bit | Class2 | 0-74 | 模拟量输入信号 |
模拟量输出(Analog Output) | 25 | 32/16 Bit | Class0 | 0-24 | 模拟量输出控制信号 |
表1:TMW Protocol Test Harness PC模拟软件作为DNP3 Slave的数据对象分布n
下面将主要介绍如何组态WinCC Telecontrol获取表1中的数据。n
2.3 配置WinCC Telecontrol作为DNP3 主站(Master)项目组态
在操作系统的桌面下通过点击WinCC的快捷图标打开WinCC界面,并创建一个单用户项目文件,本例中命名为“DNP3_Test”,如下图8所示:n
图8:创建一个新的WinCC项目文件n
在新创建的项目中的驱动通道下通过“Tag Management->Add New Driver…”添加新驱动,选择tcChael来添加WinCC Telecontrol驱动通道,如下图9所示:n
图9:添加Tc Chael驱动通道n
添加Tcchael驱动通道后,通过“TELECONTROL->New Driver Coection..” 添加一个新的驱动连接,通道名称本例中设置为“TMW_Protocol_Test_Harness”,如下图10所示:n
图10:新建一个通道连接n
之后通过点击图9中的“Properties”来打开新建的通道连接的属性对话框,在属性对话框中的“AS View”下通过鼠标右键“->Add”DNPCONN” AS Source Node...”添加一个DNP3 Coection,本例中将节点名称命名为DNP_Coection”,在“Protocol Type”中选择协议类型为“TCP”,在”Coection Adress”中设置连接远程从站的IP地址,本例为安装了TMW Protocol Test Harness软件的PC IP地址192.168.0.120,”Coection Port”保持为缺省20000即可,如下图11所示:n
图11 :添加DNP3 Coectio
在图10中通过点击“Configure Coection Parameters”打开DNP3 Coection的参数设置对话框,对于”Parameters”和”Timeouts”参数保持缺省设置即可,点击“OK”确认设置,如下图12所示:n
图12:DNP3 Coection 的参数设置n
之后返回到通道连接的属性对话框,同样在属性对话框中的“AS View”下通过鼠标右键“->Add DNPRTU AS Source Node...”添加一个DNP3 RTU,本例中将节点名称命名为“DNP3_RTU”,在“Redundancy Mode””中设置DNP3连接的冗余模式,本例中选择非冗余模式”0-Single Coection(no redundancy)”,在”Polling”中设置DNP3的轮询模式,本例中设置为”Polling Cycle”,如图13所示:n
图13:DNP3_RTU 节点的参数设置n
注意:在DNP3的Polling模式中包括如下两种模式
“Polling Cycle”:循环轮询
“ Polling Group”:轮询组,每个组可以单独设定轮询周期及模式n
点击图13中的“Configure Coection”可以设置DNP3_RTU节点所关联的DNP3 Coection节点,本例中直接选择上面中所创建的DNP3_Coection,在”Link Address”中设置远程从站的链路地址,本例中为4,如下图14所示意:n
图14:组态DNP3_RTU所关联的DNP3_Coection节点n
点击图13中的“Configure Parameter”可以设置DNP3_RTU的其他参数,该参数保持缺省即可,如下图15所示,实际应用中对于”Opinion”、”Unsolicitated Responses”、”Time Delay Measurement”需要根据实际项目情况进行设置,具体含义如下:n
1)“opinion”
”Automatic Class Assignment” : 类别分配,表示是否将指定数据对象设为某一类别,本例中勾选
“Automatic Read of Dataset structures”:自动读取从站的数据结构,本例中勾选
2)”Unsolicitated Responses”
”Unsolicitated Responses”: 自发上送消息,设置是否支持主动上送没有请求的消息,本例中勾选Class1,2,3
“Automatic Read Current Value After CMD/SP”:设置是否在发出控制命令或设定值后自动读取当前值,本例中勾选
3 )”Time Delay Measurement”: 时间延迟测量,是否支持让应用计算某一从站的传输路径延迟,本例中勾选
图15 :DNP3_RTU的相关参数设置n
至此WInCC Telecontrol作为主站DNP3的参数设置已经全部完成.n
2.4 配置TMW Protocol Test Harness PC模拟软件作为DNP3 从站(Slave)项目组态
打开TMW Protocol Test Harness测试软件,通过点击快捷图标“ ”来打开协议选择对话框,在打开的协议选择对话框中,在”Protocol”中选择”DNP3”;在”Type”中选择”Slave”,之后点击”Open”按钮打开”DNP3 Slave”的详细设置对话框,如下图16所示:n
图16:在Protocol Test Harness软件中新建DNP3 Slave控制台n
在图16的DNP3 Slave的”Chael”选项框中,其相关参数设置如下 :n
“Chael name”:设置新建控制台的名称,由用户自定义,本例中为”My DNP3 Slave”
“Coection Type”:连接类型,本例中选择”TCP/IP”
其它参数保持缺省设置即可。
将图16的DNP3 Slave对话框切换到Session,如下图17所示:
图17:DNP3 Slave控制台的”Session”参数设置n
图17的相关参数设置如下:
“Link Layer Addresses”的”Soure”:源链路地址,必须与WinCC Telecontrol的目的地址一致
“Link Layer Addresses”的”Destination”:目的链路地址,必须与WinCC Telecontrol的源地址一致
“Predefined Database or Device Simulator”:选择”Default Database-Change values in Data Window”n其它参数保持缺省设置即可。
之后点击图17中的”Open”按钮,可以看到新建的DNP3 Salve控制台,如下图18所示:
图18:创建的DNP3 Slave控制台n
3 通讯测试
基于DNP3的特殊通讯机制,下面将逐一介绍WInCC Telecontrol作为主站与TMW Protocol Test Harness作为子站通讯的通信连接握手过程,各种数据对象库(包括二进制输入对象、二进制输出对象、计数对象、模拟量输入对象、模拟量输出对象、时间对象、级类对象等)的数据交换过程n
3.1 WinCC Telecontrol与TMW Protocol Test Harness通讯握手连接过程
WinCC Telecontrol参数设置完毕后在Runtime项目运行后与TMW Protocol Test Harness将完成如下DNP3数据交换过程:n
1) 根据设定的周期(测试时设定为10秒)完成对从站TMW Protocol Test Harness的Class 1/2/3类数据的数据更新请求,从站正常予以响应,此时从站的所有Class1/2/3类数据将更新到WinCC Telecontrol
2) 根据设定的周期(测试时设定为600秒)完成对从站TMW Protocol Test Harness的Class 0类数据的数据更新请求,从站正常予以响应,此时从站的所有Class0类数据将更新到WinCC Telecontrol
3) 根据设定的周期(测试时设定为300秒)完成对从站TMW Protocol Test Harness的时钟同步
3.2单点数字位输入(Binary Input)测试
对于单点数字位输入,其通信机制如下,从站TMW Protocol Test Harness支持带有相对时间的单点数字位输入,当在从站中更改该数据的Value或Flag时将会自发上送单点数字位输入报文给WinCC Telecontrol,WinCC Telecontrol正常解析报文,通过组态对应的单点数字位输入变量获取相应的Value和Flag。
对带有相对时间的单点数字位输入数据,当改变以下任意数值时从站将自发上送消息报文给主站:
1) 变量值Value-代表某个设备的实际状态,如开或关
2) 变量的质量状态Flag,包括了(Online、Restart、Comms Lost、Remote Forced、Local Forced、Chatter)
而WinCC Telecontrol解析到的此类对象数据的物理意义如下:
1) Value-代表某个设备的实际状态,如开或关代表了该点的实际状态
2) Flag-代表某个设备的质量状态,如Online、Restart、Comms Lost、Remote Forced、Local Forced、Chatter等
下面将介绍如何在WinCC画面组态单点数字位输入变量详细步骤。
在图10 所添加的驱动连接“TMW_Protocol_Test_Harness”中新增一个Bool变量,在本例中名称为“BI1_Value”,数据类型选择为“Binary tag”,如下图19所示:n
图19:添加DNP3单点数字位输入变量n
在图19添加的Bool变量中点击“Select”按钮,进入单点数字位输入变量地址属性设置对话框,在打开的属性对话框中分别设置如下 :n
“AS_Node”:选择在图13 中所创建的“DNP_RTU”
“Data_Processing Mode”: “RP----Data is an input signal(DI;AI;counter) read from RTU
“Class”:从表1中可以看出单点数字位输入变量所属类为1,因此选择1
“Index”:索引号,代表变量的索引地址,从表1中可以知道为0-39,本例中设置为1
“Group”:变量组号,选择”2-Binary Input Event”
“Variation”:代表变量变体,选择”2.3-Wirh Relative Time”,
“Flag”:选择该变量的实际状态或质量状态,选择”VALUE”
具体设置如下图20所示:
图20:DNP3单点数字位输入变量地址设置n
注意:对于图17中的关于”Variable Adress”中的设置,如该变量所属类、索引、组号、变体
等需要根据实际中的设备来具体定义,所有的相关地址信息可以从所通信的设备中获取,本例中的设置均是按照Protocol Test Harness软件的实际情况设置,各种不同设备其地址分布和原理不尽相同,对于其他类型数据亦如此n
按照同样的方式可以创建另外一个字节变量,本例中为” BI1_Flag”,该变量用来显示某个设备的实际质量状态,之后在WinCC中创建一个画面来调用“BI1_Value ”、 “BI1_Flag ” 、”变量,可以看到,当在TMW Protocol Test Harness软件中索引为1的单点数字位输入变量的Value或Flag值发生变化时(可在软件中手动更改用于模拟),将会自发上送消息给WinCC Telecontrol,“BI1_Value ”、 “BI1_Flag ”的值将随之发生更改,如下图21所示:n
图21:单点数字位输入变量通讯测试n
注意:在图21中的Falg值中,Flag将占用6bit ,而WinCC telecontrol进行报文解析后将直接转换成十进制数,因此如果用户想要直接显示跟Protocol Test Harness的直接效果,需要用户通过一些脚本或其他控件进行后续处理。n
3.3 双点数字位输入(Double Bit Input)测试
对于双点数字位输入变量,其通信机制如下,从站TMW Protocol Test Harness支持带
有相对时间双点数字位输入对象,当在从站中更改该对象的Value或Flag时将会主动发双点
数字位输入对象报文给WinCC Telecontrol,WinCC Telecontrol正常解析报文,通
过组态对应的双点数字位输入变量获取相应的Value和Flag
对带有相对时间的双点数字位输入对象数据,当改变以下任意数值时从站将主动上送报
文给主站:
1) 变量值Value-某个设备的实际位置,用2Bit表示(包括00 01 10 11,分别代表0,1,2,3)
2) 变量的质量状态Flag,包括了(Online、Restart、Comms Lost、Remote Forced、Local Forced、Chatter)
而WinCC Telecontrol解析到的此类对象数据的物理意义如下:
1) Value-代表了某个设备的实际位置或档位
2) Flag-代表某个设备的质量状态,如Online、Restart、Comms Lost、Remote Forced、Local Forced、Chatter等
关于双点数字位输入变量的WinCC组态可以参考3.2章节,其过程类似,在此不作详述n
3.4计数器输入(Counter Input)测试
对于计数器输入变量,其通信机制如下,从站TMW Protocol Test Harness支持不带时间的32位计数器值越限事件对象,当在从站中更改该对象的Value时将会在主站周期请求Class1/2/3类数据时发送计数器值越限事件对象报文给WinCC Telecontrol,WinCC Telecontrol正常解析报文,通过组态对应的计数器值越限事件对象变量获取相应的Value和Flag
对不带时间的32位计数器值越限事件对象数据,只有从站的计数器值发生变化时才会上送报文,而当Flag变化时是不会自行上送的,该机制与二进制变量有所不同
WinCC Telecontrol解析到此类对象数据的物理意义如下:
1) Value-代表了实际的计数器值
2) Flag-代表计数器的质量状态,包括Online、Restart、Comms Lost、Remote Forced、Local Forced、Roll Over、Discontinuity等
关于计数器输入变量的WinCC组态可以参考3.2章节,其过程类似,在此不作详述n
3.5 冻结计数器(Frozen Counter )测试
对于冻结计数器变量,其通信机制如下,从站TMW Protocol Test Harness支持不带时间的32位计数器冻结值越限事件对象,当在从站中将计数器值进行冻结操作时,从站将在周期请求Class1/2/3类数据时发计数器冻结值越限事件对象报文给WinCC Telecontrol,WinCC Telecontrol正常解析报文,通过组态对应的计数器冻结值值越限事件对象变量获取相应的Value和Flag
对不带时间的32位计数器冻结值越限事件对象数据,只有从站的冻结计数器值发生变化时才会上送报文,而当Flag变化时是不会上送的,该机制与二进制变量也有所不同
WinCC Telecontrol解析到的此类对象数据的物理意义如下:
1) Value-代表了实际的计数器冻结值
2) Flag-代表冻结计数器的质量状态,包括Online、Restart、Comms Lost、Remote Forced、Local Forced、Roll Over、Discontinuity等
另外还可以在WinCC中的画面中设置冻结计数器命令,当该命令发出后能够直接对从站TMW Protocol Test Harness进行冻结计数器操作,但与在从站进行冻结计数器命令不同,此时从站不会自发上送冻结计数器报文给WinCC,但会在周期请求Class0类数据中上送
关于冻结计数器变量的WinCC组态可以参考3.2章节,其过程类似,在此不作详述n
3.6 模拟量输入(Analog Input)测试
对于模拟量输入变量,其通信机制如下,从站TMW Protocol Test Harness支持不带时间的32位模拟输入值越限事件对象,当在从站中更改该对象的Value或Flag后将会在周期请求Class1/2/3类数据时上送计数器值越限事件对象报文给WinCC Telecontrol,WinCC Telecontrol正常解析报文,通过组态对应的模拟输入值越限事件对象变量获取相应的Value和Flag
对于不带时间的32位模拟输入值越限事件对象数据,当改变以下任意数值时从站将在周期扫描Class1/2/3类数据时上送报文给主站:
1) 变量值Value-实际的模拟量值,32Bit
2) 变量的质量状态Flag,包括了Online、Restart、Comms Lost、Remote Forced、Local Forced、Over Range、Reference Check
WinCC Telecontrol解析到的此类对象数据的物理意义如下:
1) Value-代表了实际的模拟量
2) Flag-该模拟量的实际各种状态,如超限、在线等
关于模拟量输入变量的WinCC组态可以参考3.2章节,其过程类似,在此不作详述n
3.7 模拟量输出(Analog Output)测试
对于模拟量输出变量,其通信机制如下,从站TMW Protocol Test Harness支持不带时间的32位模拟输出值越限事件对象,此类对象比较特殊,对象的Value或Flag数据变化只有在系统周期扫描Class0类数据时才会上传报文到WinCC中,并不能主动上送。
WinCC Telecontrol解析到的此类对象数据的物理意义如下:
1) Value-代表了实际的模拟输出值,
2) Flag-该模拟输出量的实际各种状态,包括Online、Restart、Comms Lost、Remote Forced、Local Forced等
关于模拟量输出变量的WinCC组态可以参考3.2章节,其过程类似,在此不作详述n
3.8 通讯测试小结
上述所描述的各种类型数据变量的通信机制均是基于TMW Protocol Test Harness来说明的,对于其他的支持DNP3的设备,其机制并不尽相同,该部分并没有在DNP3 的详细规范中进行约束,因此需要了解通信设备的具体定义。
另外需要说明的是创建的变量的长度需要根据DNP3规约中所定义来选择,例如对于模拟量输入或输出变量,可以创建一个16/32Bit的变量,需要根据实际设备的情况来确定,这样能够保证WinCC Telecontrol后台数据解析的准确性。
更多关于WinCC Telecontrol的信息可以参考以下连接:
48418455
关键词
WinCC Telecontrol,DNP3.0,数据链路层,伪传输层,应用层,数据对象,类,索引,计数器输入,冻结
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc329225.html