美化西门子标准报文1通信规约 10页
- 格式:pptx
- 大小:1.10 MB
- 文档页数:10
第1章绪论❖ 1.1 PLC控制网络的基本特点和通信功能❖ 1.2 数据通信❖ 1.3 工业局域网概述❖ 1.4 S7-300/400 PLC的通信网络概述1.1 PLC控制网络的基本特点和通信功能❖ 1.PLC控制网络的基本特点1)传输介质和链接组件标准化2)传输高可靠性3)良好的系统扩展性4)良好的覆盖面积5)较高的数据传输速率❖ 2.PLC的通信功能1)远程控制2)PLC局域网络系统3)PLC与上位机进行点对点通信1.2 数据通信❖具有一定的编码、格式和位长要求的数字信号成为数据信息。
❖数据通信是将数据信息通过适当的传送线路从一台机器传送到另一台机器。
❖数据通信系统的任务是把地理位置不同的计算机和PLC及其他数字设备连接起来,高效率地完成数据的传送、信息交换和通信处理三项任务。
❖数据通信系统组成传送设备传送控制设备传送协议通信软件1.2.1 数据传输方式的分类❖ 1.串行传输与并行传输1)串行传输数据在一个信道上按位顺序传输的方式。
特点:一或两根传输线远距离传输成本低速度慢2)并行传输数据在多个信道同时传输的方式。
特点:传输速度快传输线多,成本高2.频带传输与基带传输1)频带传输把信号调制到某一频带上的传输方式。
三种调制方式:调幅调频调相2)基带传输数据传输系统对信号不做任何调制,直接传输数据的传输方式。
PLC网络大多采用基带传输。
基带传输方式使整个频带范围都用来传输某一数字信号,常用于半双工通信。
频带传输时,在同一传输线路上可用频带分割的方法将频带划分为几个信道,同时传输多路信号,常用于全双工通信。
3.异步传输和同步传输1)异步传输异步传输也称为起止式传输,它是利用起止法来达到收发同步的。
在异步传输中,被传输的数据编码为一串脉冲,每一个传输的字符都有一个附加的起始位和多个停止位。
字节传输由起始位“0”开始,然后是被编码的字节。
通常低位在前,高位在后,接下来是校验位(可省略),最后是停止位“1”(可以是1位、1.5位或2位,用以表示字符的结束)。
一、DL/T667-1999(IEC60870-5-103)通信规约1. 通信接口1.1 接口标准:RS232、RS485、光纤。
1.2 通信格式:异步,1位起始位,8位数据位,1位偶校验位,1位停止位。
字符和字节传输由低至高。
线路空闲状态为1。
1.3 通信速率:可变。
默认96001.4 通信方式:主从一对多,Polling方式。
2. 报文格式60870-5-103通信规约有固定帧长报文和可变帧长报文两种报文格式,前者主要用于传送“召唤、命令、确认、应答”等信息,后者主要用于传送“命令”和“数据”等信息。
2.1 固定帧长报文10 H 启动字符CODE 控制域ADDR 地址域C S 代码和16 H 结束字符注:代码和=控制域+地址域(不考虑溢出位,即256模和)2.268 H ————启动字符1(1byte)Length ————长度(1byte)Length ————长度(重复)(1byte)68 H ————启动字符2(重复)(1byte)CODE ————控制域(1byte)ADDR ————地址域(1byte)ASDU ————链路用户数据[(length-2)byte]C S————代码和(1byte)16 H ————结束字符(1byte)注:(1)代码和=控制域+地址域+ ASDU代码和(不考虑溢出位,即256模和)(2)ASDU为“链路用户数据”包,具体格式将在下文介绍(3)Length=ASDU字节数+22.3 控制域控制域分“主从”和“从主”两种情况。
(1)“主从”报文的控制域D7 D6 D5 D4 D3 D2 D1 D0备用PRM FCB FCV 功能码0 11(A)PRM(启动报文位)表明信息传输方向,PRM=1由主站至子站;PRM=0由子站至主站。
(B)FCB(桢记数位)。
FCB = 0 / 1——主站每向从站发送新一轮的“发送/确认”或“请求/响应”传输服务时,将FCB取反。
TPC和西门子SMART200 PLC通讯说明S7-200 SMART CPU 模块本体集成1个以太网接口和一个RS485接口,通过扩展CM01信号版,其通讯端口数量最多可增到3个。
串口支持下列协议:PPI、ModbusRTU、USS、自由口通讯通讯连接方式:<1>采用标准串口型号的西门子PC/PPI电缆。
<2>采用RS232/485转换器连接,RS485的A正B负与PLC编程口3正8负连接。
<3>TPC触摸屏的RS485接口的A正B负与PLC编程口3正8负连接。
注意:1.只支持串口型号的PPI电缆,不支持USB型号的PPI电缆,使用时请注意。
2.TPC触摸屏的DB9针的口里面7、8脚为RS485的正和负。
1 PPI协议通讯SMART200通讯参数设置:SMART200 PLC可以通过西门子STEP 7-MicroWIN SMART配置波特率和PLC地址。
当为SMART200修改参数后,需要将改动参数的系统块下载至SMART200。
每台SMART200 CPU的默认波特率为9.6 kbps(即: 9600 bps),默认PLC地址为2(数据位,停止位,校验位固定为8位、1位,偶校验)。
通讯参数设置方法:1、将电脑本地网卡的IP 设置和PLC的IP在同一个网段内,PLC默认IP为192.168.2.12、通过网线连接好电脑和PLC连接好,运行西门子STEP 7-MicroWIN SMART软件,双击通讯,更新可访问的设备,找到所连接PLC的IP,选择后点击确认。
3、双击系统块,打开通讯部分,设置RS485端口的通讯参数,设置地址和波特率,默认波特率为9.6 kbps(即: 9600 bps),默认PLC地址为2。
4、MCGS添加西门子PPI驱动,通用串口父设备使用默认参数设置,如下图“西门子_S7200PPI”子设备参数设置如下:设备地址:PLC设备地址,可设定范围1-31,默认值为2。
Modbus_RTU通讯规约(本协议采用主从问答方式)一、Modbus通讯协议概述Modbus通讯规约允许TDS系列仪表/变送器与施耐德、西门子、AB、GE等多个国际著名品牌的可编程顺序控制器(PLC)、RTU、SCADA系统、DCS或与第三方具有Modbus兼容的监控系统之间进行信息交换和数据传送。
TDS系列仪表/变送器只要简单地增加一套基于计算机(或工控机)的监控软件(如:组态王、Intouch、iFIX、synall等)就可以构成一套工况监控系统。
1、广泛的系统集成TDS系列仪表/变送器提供了标准的RS-485/422通讯接口及ModBus通讯协议,这个通讯协议已广泛被国内外工控行业作为系统集成的标准。
2、通讯数据的类型及格式●信息传输为异步方式,并以字节为单位。
主站和从站之间传递的通讯信息为1:10位格式:(1位起始位,8位数据位,1位停止位,无奇偶校验)2:11位格式:(1位起始位,8位数据位,2位停止位,无奇偶校验)3:11位格式:(1位起始位,8位数据位,1位停止位,1位奇校验)4:11位格式:(1位起始位,8位数据位,1位停止位,1位偶校验)仪表出厂按第2种方式,11位格式:(1位起始位,8位数据位,2位停止位,无奇偶校验),设置方法参看详细的使用说明书。
仪表无此项设置参数为第2种方式。
●通讯数据(信息帧)格式输波特率计算(9600bps约为5ms),信息帧中表示为起始结构(T1–T2–T3–T4),T1、T2、T3、T4分别代表一个字节的静止时间。
当最后一个字节传输完,数据总线静止时间(即无数据时间)还需大于3.5个字节后,才可以开始发送新的数据,信息帧中表示为停止结构(T1–T2–T3–T4)。
一条完整的信息帧必须是连续的信息流,字节间的间隔时间小于1.5个字节。
TDS系列仪表/变送器收到完整的信息帧后延时250ms左右将数据连续送出,当收到本机地址码、正确的功能码后,但无法接收全后面的完整数据信息帧则在2秒左右后回复初始接收状态。
IEC104规约报文说明(104报文解释的比较好的文本)IEC104规约调试小结调试广西中调IEC-104规约时对报文作了如下的分析,不对地方请指正。
一、四遥信息体基地址范围“可设置104调度规约”有1997年和2002年两个版本,在流程上没有什么变化,02版只是在97版上扩展了遥测、遥信等信息体基体址,区别如下:三、以公共地址字节数=2,传输原因字节数=2,信息体地址字节数=3为例对一些基本的报文分析第一步:首次握手(U帧)发送→激活传输启动:68(启动符)04(长度)07(控制域)00 00 00接收→确认激活传输启动:68(启动符)04(长度)0B(控制域)00 00 00第二步:总召唤(I帧)召唤YC、YX(可变长I帧)初始化后定时发送总召唤,每次总召唤的间隔时间一般设为15分钟召唤一次,不同的主站系统设置不同。
发送→总召唤:68(启动符)0E(长度)00 00(发送序号)00 00(接收序号)64(类型标示)01(可变结构限定词)06 00(传输原因)01 00(公共地址即RTU地址)00 00 00(信息体地址)14(区分是总召唤还是分组召唤,02年修改后的规约中没有分组召唤)接收→S帧:注意:记录接收到的长帧,双方可以按频率发送,比如接收8帧I帧回答一帧S帧,也可以要求接收1帧I帧就应答1帧S帧。
68 04 01 00 02 00接收→总召唤确认(发送帧的镜像,除传送原因不同):68(启动符)0E(长度)00 00(发送序号)00 00(接收序号)64(类型标示)01(可变结构限定词)07 00(传输原因)01 00(公共地址即RTU地址)00 00 00(信息体地址)14(同上)发送→S帧:注意:记录接收到的长帧,双方可以按频率发送,比如接收8帧I帧回答一帧S帧,也可以要求接收1帧I帧就应答1帧S帧。
68 04 01 00 02 00接收→YX帧(以类型标识1为例):68(启动符)1A(长度)02 00(发送序号)02 00(接收序号)01(类型标示,单点遥信)04(可变结构限定词,有4个遥信上送)14 00(传输原因,响应总召唤)01 00(公共地址即RTU地址)03 00 00(信息体地址,第3号遥信)00(遥信分)发送→S帧:68 04 01 00 04 00接收→YX帧(以类型标识3为例):68(启动符)1E(长度)04 00(发送序号)02 00(接收序号)03(类型标示,双点遥信)05(可变结构限定词,有5个遥信上送)14 00(传输原因,响应总召唤)01 00(公共地址)01 00 00(信息体地址,第1号遥信)02(遥信合)06 00 00(信息体地址,第6号遥信)02(遥信合)0A 00 00(信息体地址,第10号遥信)01(遥信分)0B 00 00(信息体地址,第11号遥信)02(遥信合)0C 00 00(信息体地址,第12号遥信)01(遥信分)发送→S帧:68 04 01 00 06 00接收→YC帧(以类型标识9为例):68(启动符)13(长度)06 00(发送序号)02 00(接收序号)09(类型标示,带品质描述的遥测)82(可变结构限定词,有2个连续遥测上送)14 00(传输原因,响应总召唤)01 00(公共地址)01 07 00(信息体地址,从0X0701开始第0号遥测)A1 10(遥测值10A1)00(品质描述)89 15(遥测值1589)00(品质描述)发送→S帧:68 04 01 00 08 00接收→结束总召唤帧:68(启动符)0E(长度)08 00(发送序号)02 00(接收序号)64(类型标示)01(可变结构限定词)0A 00(传输原因)01 00(公共地址)00 00 00(信息体地址)14(区分是总召唤还是分组召唤,02年修改后的规约中没有分组召唤)发送→S帧:68 04 01 00 0A 00第二步:发送对时报文(通过设置RTU参数表中的”对间间隔”,单位是分钟,一般是20分钟)发送→对时命令:68(启动符)14(长度)02 00(发送序号)0A 00(接收序号)67(类型标示)01(可变结构限定词)06 00(传输原因)01 00(公共地址)00 00 00(信息体地址)01(毫秒低位)02(毫秒高位)03(分钟)04(时)81(日与星期)09(月)05(年)接收→对时确认:68(启动符)14(长度)0C 00(发送序号)02 00(接收序号)67(类型标示)01(可变结构限定词)07 00(传输原因)01 00(公共地址)00 00 00(信息体地址)**(毫秒低位)**(毫秒高位)**(分钟)04(时)81(日与星期)09(月)05(年)发送→S帧:68 04 01 00 0E 00第三步:电度总召唤(如果没有电度此步骤可以省略且可以在对时之前以送.通过设置参数中”全数据扫描间隔”,单位是分钟一般是15分钟召唤一交,如果不需要召唤电度一定要将参数中的电度个数设为0)发送→召唤电度:68(启动符)0E(长度)04 00(发送序号)0E 00(接收序号)65(类型标示)01(可变结构限定词)06 00(传输原因)01 00(公共地址)00 00 00(信息体地址)45(QCC)接收→召唤确认(发送帧的镜像,除传送原因不同) :68(启动符)0E(长度)10 00(发送序号)06 00(接收序号)65(类型标示)01(可变结构限定词)07 00(传输原因)01 00(公共地址)00 00 00(信息体地址)45(QCC)发送→S帧:68 04 01 00 12 00接收→电度数据:68(启动符)1A(长度)12 00(发送序号)06 00(接收序号)0F (类型标示)02(可变结构限定词,有两个电度量上送)05 00(传输原因)01 00(公共地址)01 0C 00(信息体地址,从0X0C01开始第0号电度)00 00 00 00(电度值)00(描述信息)02 0C 00(信息体地址,从0X0C01开始第1号电度)00 00 00 00(电度值)01(描述信息)发送→S帧:68 04 01 00 14 00接收→结束总召唤帧:68(启动符)0E(长度)14 00(发送序号)06 00(接收序号)65(类型标示)01(可变结构限定词)0A 00(传输原因)01 00(公共地址)00 00 00(信息体地址)45(QCC)发送→S帧:68 04 01 00 16 00第四步:如果RTU有变化数据主动上送主动上送变位遥信,类型标识为1或3接收→变位遥信:68(启动符)0E(长度)16 00(发送序号)06 00(接收序号)01(类型标示,单点遥信)01(可变结构限定词,有1个变位遥信上送)03 00(传输原因,表突发事件)01 00(公共地址即RTU地址)03 00 00(信息体地址,第3号遥信)00(遥信分)发送→S帧:68 04 01 00 18 00接收→变位遥信:68(启动符)0E(长度)18 00(发送序号)06 00(接收序号)03(类型标示,双点遥信)01(可变结构限定词,有1个变位遥信上送)03 00(传输原因,表突发事件)01 00(公共地址即RTU地址)06 00 00(信息体地址,第6号遥信)01(遥信分)发送→S帧:68 04 01 00 1a 00主动上送SOE,类型标识为0x1e或0x1f接收→SOE :68(启动符)15(长度)1a 00(发送序号)06 00(接收序号)1e (类型标示,单点遥信)01(可变结构限定词,有1个SOE)03 00(传输原因,表突发事件)01 00(公共地址即RTU地址)08 00 00(信息体地址,第8号遥信)00(遥信分)ad(毫秒低位)39(毫秒高位)1c(分钟)10(时)7a(日与星期)0b(月)05(年)发送→S帧:68 04 01 00 1c 00接收→SOE :68(启动符)15(长度)1c 00(发送序号)06 00(接收序号)1f (类型标示,双点遥信)01(可变结构限定词,有1个SOE)03 00(传输原因,表突发事件)01 00(公共地址即RTU地址)0a 00 00(信息体地址,第10遥信)01(遥信分)2f(毫秒低位)40(毫秒高位)1c(分钟)10(时)7a(日与星期)0b(月)05(年)第四步:如果主站超过一定时间没有下发报文或RTU也没有上送任何报文则双方都可以按频率发送U帧,测试帧发送→U帧:68 04 43 00 00 00接收→应答:68 04 83 00 00 00第五步:遥控发送→遥控预置:68(启动符)0e(长度)20 00(发送序号)06 00(接收序号)2e (类型标示)01(可变结构限定词)06 00(传输原因)01 00(公共地址即RTU地址)05 0b 00(信息体地址,遥控号=0xb05-0xb01=4)82(控合)接收→遥控返校:68(启动符)0e(长度)0e 00(发送序号)06 00(接收序号)2e (类型标示)01(可变结构限定词)07 00(传输原因)01 00(公共地址即RTU地址)05 0b 00(信息体地址,遥控号=0xb05-0xb01=4)82(控合)发送→遥控执行:68(启动符)0e(长度)04 00(发送序号)18 00(接收序号)2e (类型标示)01(可变结构限定词)06 00(传输原因)01 00(公共地址即RTU地址)05 0b 00(信息体地址,遥控号=0xb05-0xb01=4)02(控合)接收→执行确认:68(启动符)0e(长度)12 00(发送序号)08 00(接收序号)2e (类型标示)01(可变结构限定词)07 00(传输原因)01 00(公共地址即RTU地址)05 0b 00(信息体地址,遥控号=0xb05-0xb01=4)02(控合)发送→遥控撤消:68(启动符)0e(长度)04 00(发送序号)18 00(接收序号)2e (类型标示)01(可变结构限定词)08 00(传输原因)01 00(公共地址即RTU地址)05 0b 00(信息体地址,遥控号=0xb05-0xb01=4)02(控合)接收→撤消确认:68(启动符)0e(长度)12 00(发送序号)08 00(接收序号)2e (类型标示)01(可变结构限定词)09 00(传输原因)01 00(公共地址即RTU地址)05 0b 00(信息体地址,遥控号=0xb05-0xb01=4)02(控合)补充说明:1、报文中的长度指的是除启动字符与长度字节的所有字节。
101通信规约第一部分基本定义一、适用范围1、网络拓扑结构本规约适用的网络拓扑结构为点对点、多点对点、多点共线、多点环形、多点星形等,通道可以是全双工或半双工的情况。
2、传输方式传输方式分为非平衡方式和平衡方式传输两种。
非平衡方式传输:只有主站启动各种链路传输服务,子站只有当主站请求时才传输。
这种传输方式对于所有网络结构都可适用。
但是在点对点和多点对点的网络结构中,非平衡方式传输没有充分发挥这种网络的内在潜力。
平衡方式传输:主站和子站可以同时启动链路传输服务,所以必须有一对全双工的通道。
这里规定对于点对点和多点对点的网络结构采用平衡方式传输,对于多点共线、多点环形和多点星形的网络结构采用非平衡方式传输。
二、帧格式本规约采用的帧格式为FT1.2异步式字节传输帧格式1、FT1.2可变帧长帧格式其具体格式如下传输规定:(1)线路空闲状态为1(2)每个字符有1位启动位(0),8位数据位,1位偶校验位,1位停止位(1)(3)每个字符间无需线路空闲间隔。
(4)两帧之间的线路空闲间隔最少为33位(5)帧长度L包括控制域、地址域、用户数据的字节总数,L最大为250(6)帧校验和为控制域、地址域、用户数据中所有字节的算术和(不考虑溢出)(7)接收校验●由串行接口芯片检查每个字符的启动位、停止位、偶校验位●校验两个启动字符应一致、两个L值应一致,接收字符数L+6、帧校验和、结束字符无差错则数据有效。
●在校验中,若检出一个差错,则舍弃此帧数据。
2、FT1.2固定帧长帧格式具体格式如下:传输规定:(1)线路空闲状态为1(2)每个字符有1位启动位(0),8位数据位,1位偶校验位,1位停止位(1)(3)每个字符间无需线路空闲间隔。
(4)两帧之间的线路空闲间隔最少为33位(5)无帧长度L(6)帧校验和为控制域、地址域中所有字节的算术和(不考虑溢出)(7)接收校验●由串行接口芯片检查每个字符的启动位、停止位、偶校验位●检查启动字符、结束字符以确定此帧长度是否正确●检查校验和●在校验中,若检出一个差错,则舍弃此帧数据。
西门⼦S7报⽂解析1.报⽂的基本格式1.1 第1和第2个字节是:固定报⽂头03 00,这⾥我们就⽤到三种报⽂: a.初始化 b. 读 c.写,都是这种格式;1.2 第3和第4个字节是:整个报⽂的长度;其它部分就是各种报⽂的个性化处理了;下⾯分析⼤量报⽂的案例进⾏规律分析,为了便于对照,每种都⽤1200 和300 两种对照demo显⽰:2.初始化报⽂初始化报⽂分两个交互:2.1 交互⼀西门⼦1200:PC发出报⽂ ( [A18]=0x01 =CPUSlot)03 00 00 16 11 E0 00 00 00 01 00 C1 02 01 00 C2 02 01 01(cpuslot) C0 01 09PLC回复报⽂( B[10]=0x06 可能是西门⼦的⼩型号 B[22]=0x01=CPUSlot)03 00 00 16 11 D0 00 01 00 06 00 C0 01 09 C1 02 01 00 C2 02 01 01 (cpuslot)西门⼦300:PC发出报⽂ ( A[18]=0x02 =CPUSlot)03 00 00 16 11 E0 00 00 00 01 00 C1 02 01 00 C2 02 01 02(cpuslot) C0 01 09PLC回复报⽂ (B[10]=0x04 可能是西门⼦的⼩型号 B[22]=0x0=CPUSlot)03 00 00 16 11 D0 00 01 00 04 00 C0 01 09 C1 02 01 00 C2 02 01 02opc 对 1200 和 300 不⽤配置的不同点,就⼀个地⽅:前者 CPUSlot = 1 ,后者CPUSlot = 2;所以可以摸索规律是:a.pc发起第⼀个初始化报⽂的时候,第18个字节标识了CPUSlot ;b.plc回复报⽂和读取报⽂长度⼀样都是22个字节长度;c.plc回复报⽂的最后⼀个字节也是CPUSlot ,这个可以⽤来校验;d. plc回复的第10个字节⼀个是06,⼀个是04,这个好像是⼩型号的区别;细节摸索下来:1200该字节是06,314是04,315是03;咱写程序的时候,就不要考虑这个来校验了;2.2交互⼆PC发出报⽂03 00 00 19 02 F0 80 32 01 00 00 FF FF 00 08 00 00 F0 00 00 01 00 01 07 80PLC回复报⽂03 00 00 1B 02 F0 80 32 03 00 00 FF FF 00 08 00 00 00 00 F0 00 00 01 00 01 00 F0第⼆个初始化报⽂交互,通过1200 和314,315的对⽐,发现居然完全没有任何区别;所以我们可以把这个交互完全固话;到此,整个初始化处理就算结束了,正常在设计架构的时候,可以这么实现:在ClentSocket的onConnect(即正常连接上)的瞬间,pc给plc发起第⼀个初始请求,得到回复后(为了简单,就仅仅判断长度为22即可);⽴刻发起第⼆个固定的初始话请求,得到长度为24的报⽂后,就通过⼀个布尔变量通知整个系统可以正常读写;3.读操作读demo1:西门⼦1200: 读取DB10, count=17 ,offset=19PC发出报⽂(A[3]~A[4]=0x001F=31=读取报⽂总长度, A[12]~A[13]=0x001C=序列号,A[24]~A[25]=0x0011=17=读取请求count;A[26]~A[27]=0x000A=10=DB10, A[28]=0x84=读取的数据类型为DB块,A[29]~A[31]=0x000098=152=19*8=读取偏移量offset(bit为单位) ) 03 00 00 1F 02 F0 80 32 01 00 00 00 1C 00 0E 00 00 04 01 12 0A 10 02 00 11 00 0A 84 00 00 98PLC回复报⽂:(B[3]~B[4]=0x002A=42=回复报⽂总长度, B[12]~B[13]=0x001C=序列号,B[16]~B[17]=0x0015=21=读取请求count(17)+4B[24]~B[25]=0x0088=17*8=请求数据长度(bit为单位), B[26]~最后=数据值)03 00 00 2A 02 F0 80 32 03 00 00 00 1C 00 02 00 15 00 00 04 01 FF 04 00 88 13 14 15 16 17 00 00 00 00 00 00 00 00 00 00 00 00读demo2:西门⼦1200: 读取DB11, count=17 ,offset=19PC发出报⽂:(A[3]~A[4]=0x001F=31=读取报⽂总长度, A[12]~A[13]=0x008E=序列号,A[24]~A[25]=0x0011=17=读取请求count;A[26]~A[27]=0x000B=11=DB11, A[28]=0x84=读取的数据类型为DB块,A[29]~A[31]=0x000098=152=19*8=读取偏移量offset(bit为单位) ) 03 00 00 1F 02 F0 80 32 01 00 00 00 8E 00 0E 00 00 04 01 12 0A 10 02 00 11 00 0B 84 00 00 98PLC回复报⽂:(B[3]~B[4]=0x002A=42=回复报⽂总长度, B[12]~B[13]=0x001C=序列号,B[16]~B[17]=0x0015=21=读取请求count(17)+4B[24]~B[25]=0x0088=17*8=请求数据长度(bit为单位), B[26]~B[42]=数据值)03 00 00 2A 02 F0 80 32 03 00 00 00 8E 00 02 00 15 00 00 04 01 FF 04 00 88 13 14 15 16 17 18 00 00 00 00 00 00 00 00 21 22 23读demo3:西门⼦1200:读取DB11, count=16 ,offset=18PC发出报⽂:(A[3]~A[4]=0x001F=31=读取报⽂总长度, A[12]~A[13]=0x0013=序列号,A[24]~A[25]=0x0010=16=读取请求count;A[26]~A[27]=0x000B=11=DB11, A[28]=0x84=读取的数据类型为DB块,A[29]~A[31]=0x000090=146=18*8=读取偏移量offset(bit为单位) ) 03 00 00 1F 02 F0 80 32 01 00 00 00 13 00 0E 00 00 04 01 12 0A 10 02 00 10 00 0B 84 00 00 90PLC回复报⽂:(B[3]~B[4]=0x0029=41=回复报⽂总长度, B[12]~B[13]=0x0013=序列号,B[16]~B[17]=0x0014=20=读取请求count(16)+4B[24]~B[25]=0x0080=16*8=请求数据长度(bit为单位), B[26]~B[41]=数据值)03 00 00 29 02 F0 80 32 03 00 00 00 13 00 02 00 14 00 00 04 01 FF 04 00 80 00 13 14 15 16 17 18 00 00 00 00 00 00 00 00 21读demo4:西门⼦300 (314) 读取D50, count=20 ,offset=4000PC发出报⽂:(A[3]~A[4]=0x001F=31=读取报⽂总长度, A[12]~A[13]=0x0028=序列号,A[24]~A[25]=0x0014=20=读取请求count;A[26]~A[27]=0x0032=50=DB50, A[28]=0x84=读取的数据类型为DB块,A[29]~A[31]=0x007D00=32000=4000*8=读取偏移量offset(bit为单位) )03 00 00 1F02 F0 80 32 01 00 00 00 28 00 0E 00 00 04 01 12 0A 10 02 00 14 00 32 8400 7D 00PLC回复报⽂:(B[3]~B[4]=0x002D=45=回复报⽂总长度, B[12]~B[13]=0x0028=序列号,B[16]~B[17]=0x0018=24=读取请求count(20)+4B[24]~B[25]=0x00A0=20*8=请求数据长度(bit为单位), B[26]~B[45]=数据值)03 00 00 2D02 F0 80 32 03 00 00 00 28 00 02 00 18 00 00 04 01 FF 04 00 A0 00 04 0E AB 00 00 00 00 00 00 03 00 00 00 00 00 00 00 0000读demo5:西门⼦300 (315) 读取D10, count=100 ,offset=2PC发出报⽂:(A[3]~A[4]=0x001F=31=读取报⽂总长度, A[12]~A[13]=0x0003=序列号,A[24]~A[25]=0x0064=100=读取请求count;A[26]~A[27]=0x000A=10=DB10, A[28]=0x84=读取的数据类型为DB块,A[29]~A[31]=0x000010=16=2*8=读取偏移量offset(bit为单位) )03 00 00 1F 02 F0 80 32 01 00 00 00 03 00 0E 00 00 04 01 12 0A 10 02 00 64 00 0A 84 00 00 10PLC回复报⽂:(B[3]~B[4]=0x007D=125=回复报⽂总长度, B[12]~B[13]=0x0003=序列号,B[16]~B[17]=0x0068=104=读取请求count(100)+4B[24]~B[25]=0x0320=100*8=请求数据长度(bit为单位), B[26]~B[125]=数据值)03 00 00 7D 02 F0 80 32 03 00 00 00 03 00 02 00 68 00 00 04 01 FF 04 03 20 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00读demo6:西门⼦1200 读取X输⼊(input)两个byte:PC发出报⽂:(A[3]~A[4]=0x001F=31=读取报⽂总长度, A[12]~A[13]=0x0002=序列号,A[24]~A[25]=0x0002=2=读取请求count;A[26]~A[27]=0x000A=10=DB10[其实这⾥写什么都可以,因为input不属于DB块],A[28]=0x81=读取的数据类型为Input,A[29]~A[31]=0x000000=0=0*8=读取偏移量offset(bit为单位) )03 00 00 1F 02 F0 80 32 01 00 00 00 02 00 0E 00 00 04 01 12 0A 10 02 00 02 00 0A 81 00 00 00PLC回复报⽂:(B[3]~B[4]=0x001B=27=回复报⽂总长度, B[12]~B[13]=0x0002=序列号,B[16]~B[17]=0x0068=104=读取请求count(100)+4B[24]~B[25]=0x0320=100*8=请求数据长度(bit为单位), B[26]~B[27]=数据值)03 00 00 1B 02 F0 80 32 03 00 00 00 02 00 02 00 06 00 00 04 01 FF 04 00 10 08 00读demo7:西门⼦1200 读取Y输出(output)两个byte:PC发出报⽂:(A[3]~A[4]=0x001F=31=读取报⽂总长度, A[12]~A[13]=0x0001=序列号,A[24]~A[25]=0x0002=2=读取请求count;A[26]~A[27]=0x000A=10=DB10[其实这⾥写什么都可以,因为input不属于DB块],A[28]=0x82=读取的数据类型为Output,A[29]~A[31]=0x000000=0=0*8=读取偏移量offset(bit为单位) )03 00 00 1F 02 F0 80 32 01 00 00 00 01 00 0E 00 00 04 01 12 0A 10 02 00 02 00 0A 82 00 00 00PLC回复报⽂:(B[3]~B[4]=0x001B=27=回复报⽂总长度, B[12]~B[13]=0x0002=序列号,B[16]~B[17]=0x0068=104=读取请求count(100)+4B[24]~B[25]=0x0320=100*8=请求数据长度(bit为单位), B[26]~B[27]=数据值)03 00 00 1B 02 F0 80 32 03 00 00 00 01 00 02 00 06 00 00 04 01 FF 04 00 10 05 00读demo8:西门⼦1200 读取flag两个byte:03 00 00 1F 02 F0 80 32 01 00 00 05 65 00 0E 00 00 04 01 12 0A 10 02 00 02 00 09 83 00 00 00PLC回复报⽂:(B[3]~B[4]=0x001B=27=回复报⽂总长度, B[12]~B[13]=0x0565=序列号,B[16]~B[17]=0x0006=6=读取请求count(2)+4B[24]~B[25]=0x0010=2*8=请求数据长度(bit为单位), B[26]~B[27]=数据值)03 00 00 1B 02 F0 80 32 03 00 00 05 65 00 02 00 06 00 00 04 01 FF 04 00 10 FF 17根据以上8个报⽂的demo,摸索出⼤致规律如下(未必完全正确,但是应付项⽬可以了);A[1]~A[2]: 03 00 固定报⽂头;A[3]~A[4]: 00 1F 整个读取请求长度为0x1F= 31 ;A[5]~A[11]: 02 F0 80 32 01 00 00 固定6个字节;A[12]~A[13]: 两个字节,标识序列号,回复报⽂相同位置和这个完全⼀样;范围是0~65535;A[14]~A[23]:00 0E 00 00 04 01 12 0A 10 02 固定10个字节A[24]~A[25]:两个字节,访问数据的个数,以byte为单位;A[26]~A[27]: DB块的编号,⽐如DB50, 就是0x32=50, 两个字节,范围是0~65535(也许是⼀个1个字节,因为没有设置估DB255以上的数据块,所以不知道到底是⼏个字节,姑且认为是2个字节);A[28] : 访问数据块的类型:0x81-input ,0x82-output ,0x83-flag , 0x84-DB(这个最常见);A[29]~A[31]: 访问DB块的偏移量offset (地址+1以byte为单位); 3个字节,范围是0~16777216(⼀般⽤不到这么⼤)程序设计的时候,其实主要关注最后4个信息,即:1. A[24]~A[25]: 访问byte个数2. A[26]~A[27]: DB块编号3. A[28] : 数据块类型4.A[29]~A[31] :访问地址偏移量;相当于⾸地址编号B[1]~B[2]: 03 00 固定报⽂头B[3]~B[4]: 整个读取回复报⽂长度:25+读取长度;B[5]~B[11]: 02 F0 80 32 03 00 00 固定6个字节,和读取请求相同的位置⼏乎⼀样,就 B[9]=0x03 ;A[9]=0x01;B[12]~B[13]: 两个字节,标识序列号,回复报⽂相同位置和这个完全⼀样;范围是0~65535;B[14]~B[15]: 两个字节,固定为00 02;对应读取位置是 00 0E;正好 02+0E=10 ;有点补码的感觉,其实不需要关注规律,反正是固定的;B[16]~B[17]:两个字节,=请求读取的字节数+4;B[18]~B[23]:6个字节,固定为:00 00 04 01 FF 04 ;B[24]~B[25]:两个字节, 请求访问的byte个数*8 ;其实就是以⼆进制为单位的个数;由此可以看出,⼀⼝⽓最多访问的地址个数是8192;B[26]~ 最后⼀个:以offset作为⾸地址,所对应的各个byte的值;程序设计的时候,其实只要关注两个信息:1.校验B[3]~B[4]:校验长度正确;2.B[26]~最后⼀个 :获取对应的值;到这⾥读的处理就算结束了;⼏个⼩注意点:1. 对于不同信号的PLC,除了初始化的CPUSolt不同;正常读/写指令是⼀样的;2.读的时候,都是以byte为单位的,如果程序只需要bit,那么还是以Byte为单位去读,将读出的部分按bit再去分解;3.flag类型到底是什么,不是很清楚,有点类似三菱⾥的M点;这个也不需要去深究,⼀般项⽬⾥主要就是⽤DB块;4.读取的长度如果是N(以byte为单位),那么返回的长度就是N*8(以bit为单位);怎么判断长度是否要*8;主要看后⾯是不是紧挨着数据,如果是数据,就需要*8;offset都是以bit为单位的;5.正常读的操作都是DB块,所以在A[26]~A[27]这个字节写⼊DB块的编号,但是对于input,output,flags这三个类型,是不需要数据块编号的,不过我们可以随便写⼀个DB编号;4.写操作写demo1:西门⼦1200 写 db10.WORD18=0xFFFE=65534; 也就是: DB10.b18=0xFF; DB10.B19=0xFE;PC发出报⽂:(A[3]~A[4]=0x0025=37=读取报⽂总长度, A[12]~A[13]=0x0005=序列号,A[16]~A[17]=0x06=写⼊byte个数(2)+4 , A[23]=0x02=写⼊⽅式为byte, A[24]~A[25]=0x0002=2=写⼊个数count; A[26]~A[27]=0x000A=10=DB10,A[28]=0x84=写⼊的数据类型为DB块,A[29]~A[31]=0x000090=144=18*8=读取偏移量offset(bit为单位),A[32]~A[33]=0x0004=写⼊⽅式为Byte , A[34]~A[35]=0x0010=2*8=写⼊byte的个数(bit为单位) ,A[36]~A[37]= 写⼊数据)03 00 00 25 02 F0 80 32 01 00 00 00 05 00 0E 00 06 05 01 12 0A 10 02 00 02 00 0A 84 00 00 90 00 04 00 10 FF FEPLC回复报⽂:( B[12]~B[13]=0x0565=序列号,最后⼀个B[14]=0xFF表⽰写⼊)03 00 00 16 02 F0 80 32 03 00 00 00 05 00 02 00 01 00 00 05 01 FF1200 写⼊ DB10. X2.6=1 (这⾥是按bit写⼊)PC发出报⽂:(A[3]~A[4]=0x0024=36=读取报⽂总长度, A[12]~A[13]=0x0008=序列号,A[16]~A[17]=0x05=写⼊bit个数(1)+4A[26]~A[27]=0x000A=10=DB10,A[28]=0x84=写⼊的数据类型为DB块,A[29]~A[31]=0x000016=22=2*8+6=读取偏移量offset( bit为单位)A[32]~A[33]=0x0003=写⼊⽅式为bit , A[34]~A[35]=0x0001=写⼊bit的个数(bit为单位) ,A[36]= 写⼊数据[0或1])03 00 00 24 02 F0 80 32 01 00 00 00 08 00 0E 00 05 05 01 12 0A 10 01 00 01 00 0A 84 00 00 16 00 03 00 01 01PLC回复报⽂:( B[12]~B[13]=0x0565=序列号,最后⼀个B[14]=0xFF表⽰写⼊)03 00 00 16 02 F0 80 32 03 00 00 00 08 00 02 00 01 00 00 05 01 FF写demo3:1200 写⼊:output0=4PC发出报⽂:(A[3]~A[4]=0x0024=36=读取报⽂总长度, A[12]~A[13]=0x0008=序列号,A[16]~A[17]=0x05=写⼊byte个数(1)+4 ,A[23]=0x02=写⼊⽅式为byte,A[24]~A[25]=0x0001=1=写⼊个数count; A[26]~A[27]=0x0001=DB1(因为是output,所以DB块编号⽆所谓),A[28]=0x82=写⼊的数据类型为output,A[29]~A[31]=0x000000=读取偏移量offset( bit为单位)A[32]~A[33]=0x0004=写⼊⽅式为byte ,A[34]~A[35]=0x0008=1*8=写⼊byte的个数 ,A[36]= 写⼊数据)03 0000 24 02 F0 80 32 01 00 00 00 08 00 0E 00 05 05 01 12 0A 10 02 00 01 00 01 82 00 00 00 00 04 00 08 04PLC回复报⽂:( B[12]~B[13]=0x0565=序列号,最后⼀个B[14]=0xFF表⽰写⼊)03 00 00 16 02 F0 80 32 03 00 00 00 08 00 02 00 01 00 00 05 01 FF写demo4:1200 写输⼊:output 0.3=1PC发出报⽂:(A[3]~A[4]=0x0024=36=写⼊报⽂总长度, A[12]~A[13]=0x0003=序列号,A[16]~A[17]=0x05=写⼊bit个数(1)+4A[23]=0x01=写⼊⽅式为bit,A[24]~A[25]=0x0001=1=写⼊个数count; A[26]~A[27]=0x000A=10=DB10(因为是output,所以DB块编号⽆所谓),A[28]=0x82=写⼊的数据类型为output,A[29]~A[31]=0x000003=读取偏移量offset( bit为单位)A[32]~A[33]=0x0003=写⼊⽅式为bit , A[34]~A[35]=0x0001=写⼊bit的个数(bit为单位) ,A[36]= 写⼊数据[0或1])03 00 00 24 02 F0 80 32 01 00 00 00 03 00 0E 00 05 05 01 12 0A 10 01 00 01 00 01 82 00 00 03 00 03 00 01 01PLC回复报⽂:( B[12]~B[13]=0x0565=序列号,最后⼀个B[14]=0xFF表⽰写⼊)03 00 00 16 02 F0 80 32 03 00 00 00 03 00 02 00 01 00 00 05 01 FF根据以上4个报⽂的demo,摸索出⼤致规律如下(未必完全正确,但是应付项⽬可以了);A[1]~A[2]: 03 00 固定报⽂头;A[3]~A[4]: 整个报⽂长度:35+写⼊长度;A[5]~A[11]: 02 F0 80 32 01 00 00 固定6个字节(和读取的完全⼀样)A[12]~A[13]: 两个字节,标识序列号,回复报⽂相同位置和这个完全⼀样;范围是0~65535;A[14]~A[15]:00 0E 固定2个字节;A[16]~A[17]:写⼊长度+4;A[18]~A[22]: 05 01 12 0A 10 固定5个⾃⼰A[23] : 写⼊⽅式: 01-按bit写⼊; 02-按byte写⼊;A[24]~A[25]:两个字节,写⼊数据的个数(可能是byte或bit, 按A[23]来区分)A[26]~A[27]: DB块的编号A[28] : 写⼊数据块的类型:0x81-input ,0x82-output ,0x83-flag , 0x84-DB(这个最常见);A[29]~A[31]: 写⼊DB块的偏移量offset (地址+1以byte为单位); 3个字节,范围是0~16777216(⼀般⽤不到这么⼤)A[32]~A[33]:写⼊⽅式为: 03-按bit写⼊; 04-按byte写⼊;A[34]~A[35]:写⼊bit的个数(bit为单位)A[36]~最后:连续的写⼊值;B[1]~B[2]: 03 00 固定报⽂头;B[14]: FF 标识写⼊正常;到这⾥,初始化,读,写这3种⽅式都摸索完了,未必都正确,应付开发应该绰绰有余;在接下来的时间⾥,就需要把这些规律变成相应的程序;注意点:1.写⼊可以按byte和bit两种⽅法去操作;2.对于byte,可以⼀⼝⽓写连续多个byte, 理论上⼀条指令连续写bit也可以,但是实践下来,发现有问题,所以对于bit操作,我们就⼀个⼀个写吧;。
61850规约协议竭诚为您提供优质文档/双击可除61850规约协议篇一:iec61850通信规约简介同厂家的电子设备(ied)之间通过一种标准(协议)实现互操作和信息共享。
iec61850技术将成为电力系统信息技术的基础,对电力自动化技术的发展产生巨大的影响。
目前iec61850技术在变电站层和间隔层的技术已经成熟,已经到了批量推广的时机。
iec61850变电站通信网络和系统系列标准对于建设现代数字化变电站统一信息平台的意义,符合电力专用的通信产品提供商的进展以及工业以太网交换机的行业专用化趋势。
构建符合iec61850的现代数字化变电站众所周知,随着变电站自动化技术和现代网络通信技术的发展,iec61850标准已成为近年来数字化变电站自动化研究的热点问题之一。
所谓数字化变电站,就是使变电站的所有信息采集、传输、处理、输出过程由过去的模拟信息全部转换为数字信息,并建立与之相适应的通信网络和系统。
传统以来,国内主流的变电站自动化系统中广泛采用的是国际电工委员会iec于1997年颁布的继电保护信息接口配套标准iec60870-5-103规约。
由于该规约制定时间较早,受技术条件的限制,在以太网和智能数字化设备迅速发展的今天,其缺陷日益明显,如:(1)没有定义基于以太网的通信规范。
(2)没有标准的系统功能、二次智能设备的模型规范。
(3)缺乏权威的一致性测试。
(4)不支持元数据传送,没有统一的命名规范。
上述缺陷直接导致变电站自动化系统在建设过程中不同厂家设备之间互操作性较差,不同厂家设备之间互联需要规约转换设备,需要进行大量的信息对点工作,变电站自动化系统集成工作量增加,系统信息处理效率低下。
因此不难看到,随着变电站二次设备及系统的发展,设备一体化、信息一体化已成为必然的趋势,迫切需要一个统一的信息平台实现整个自动化系统。
为了统一变电站通信协议,统一数据模型,统一接口标准,实现数据交换的无缝连接,实现不同厂家产品的互操作,减少数据交换过程中不同协议间转换时的浪费,iectc57工作组在ieee协议uca2.0基础上,组织制定了iec61850——变电站通信网络和系统系列标准,并于20xx年正式发布。
104规约报文说明主站与子站通过IEC60870 -5-104 规约通讯协议说明目录目录 (1)、八―丄前言 (1)一、IEC60870-5-104 应用规约数据单元基本结构 (2)1.1 应用规约数据单元APDU (2)1.2 应用规约控制信息APCI (2)1.3 应用服务数据单元ASDU (3)二、IEC60870-5-104 规约的过程描述 (5)三、IEC60870-5-104 规约源码分析(报文分析) (5)3.1启动连接(U 格式) (5)3.2启动连接确认(U 格式) (6)3.3总召唤(I 格式) (6)3.4总召唤确认(I 格式) (6)3.5数据确认(S 格式) (6)3.6总召唤结束(I 格式) (7)3.7测试连接(U 格式) (7)3.8测试连接确认(U 格式) (7)3.9.遥信信息(I 格式) (7)3.9遥测信息(I 格式) (10)3.10 SOE 信息(I 格式) (11)根据全国电力系统控制及其通信标准委员会三届五次会议和最近出版的国标DL/T634.5.104:2002 对104 规约的参数选择做了如下说明:1、采用端正101 规约中的链路地址和短报文(指链路确认报文)2、采用召唤一级数据3、两个字节表示公共地址(站址)4、两个字节表示传送原因5、三个字节表示信息体地址上述3、4、 5 点与上一次通讯协议具体说明有冲突,为执行国际国内标准,建议根据上述要求对报文做如下修改。
IEC60870-5-104应用规约数据单元基本结构应用规约数据单元:APDU( Applicati on protocal data unit ) 应用规约控制信息:APCI (Application protocal control information )应用服务数据单ASDU( Applicati on protocal con trol unit )APDU=APCI + ASDU1.1应用规约数据单元APDU定义了启动字符、应用服务数据单元的长度规范、可传输一个完整的应用规约数据单丿元。
104规约(2002版)报文解析启动字符68H数据单元长度控制域1 控制域2 控制域3 控制域4 应用服务数据单元APCI应用规约控制信息ASDU应用服务数据单元APDU应用规约控制单元类型标示TYP可变结构体限定词VSQ 传送原因COT 应用服务数据单元公共地址信息体数据单元标识符信息体ASDU应用服务数据单元控制域定义了保护报文不至丢失和重复传送的控制信息,报文传输启动/停止,以及传输连接的监视等,控制域格式分为用于编号的信息传输(I格式),编号的监视功能(S格式)和未编号的控制功能(U格式)1、I格式:I格式通常包含ASDU,用来传输具体信息2、S格式:S格式通常用来可计数的确认功能3、U 格式:U 格式通常用来进行链路的启动,停止,测试等功能注意:报文全部为16进制1初始化主站下发: 68 04 07 00 00 00目的:给子站发请求链路状态命令。
报文解析:子站回答:68 04 0B 00 00 00目的:子站响应主站的链路状态。
报文解析:子站回答:68 0E 00 00 00 00 46 01 04 00 01 00 00 00 00 00680407000000启动字符 数据单元长度4 控制域1,U 帧:启动生效位置1 控制域2,U 帧默认0 控制域3,U 帧默认0 控制域4,U 帧默认0 68040B000000 启动字符 数据单元长度4 控制域1,U 帧:启动确认位置1 控制域2,U 帧默认0 控制域3,U 帧默认0 控制域4,U 帧默认0目的:初始化结束。
报文解析:初始化原因(COI)COI=CP8{UI7[1..7],BS1[8]}低7位=0表示当地电源合上=1表示当地手动复位=2表示远方复位=3到31为本配套标准的标准定义保留(兼容范围) =32到127为特定使用保留(专用范围)最高位(第8位)=0表示未改变当地参数的初始化 =1表示改变当地参数后的初始化2总召唤主站下发:68 0E 00 00 06 00 64 01 06 00 01 00 00 00 00 14目的:向地址为01的子站发总召唤命令。
103规约-初始化过程(示例)2007-06-2710:34以下是我中心与某厂家装置通信过程初始化报文,对部分报文加以分析,与各位分享。
M->S1Phy1040014116Dat PRM=1FCV=0Reset CU Address=01App注:主站复位通信单元,子站应删除缓冲区内的报文.S->M2Phy1020012116Dat PRM=0ACD=1DFC=0ACK Address=01AppM->S3Phy107A017B16Dat PRM=1FCB=1FCV=1Request user data class1Addre ss=01AppS->M4Phy6816166828010A810101FE F40001017B011206 010********C00E916Dat L=22PRM=0ACD=1DFC=0User data Address=01 Link user data=0A81...0C00App Generic data(=10)SQ=1Number of elements=1Cause of transmission:Spontaneous(=1)Common address=01Function type=254(Generic function type)INF=244(Read value or attribute of a single entry)Return information identifier(RII)=0Number of generic data sets(NGD):no=1,count=0,cont=0Generic identification number(GIN):group=1,entry=123 (ENTRY identifier)Kind of description(KOD):Actual value Generic data description:(datatype=18,datasize=6,number=1,cont=0)General identification data:(DPI=ON Time:valid, standard,12:17:29.974Supplementary information(SIN)=0)注:错误-采用通用分类服务上送的事件信息,在复位CU命令下仍然能够传输.按照规约,此时子站清空发送缓冲区,且应马上回复复位确认信息(ASDU5).M->S5Phy105A015B16Dat PRM=1FCB=0FCV=1Request user data class1Addre ss=01AppS->M6Phy6816166828010A810101FE F400010172011206 010********C00D716Dat L=22PRM=0ACD=1DFC=0User data Address=01 Link user data=0A81...0C00App Generic data(=10)SQ=1Number of elements=1Cause of transmission:Spontaneous(=1)Common address=01Function type=254(Generic function type) INF=244(Read value or attribute of a single entry)Return information identifier(RII)=0Number of generic data sets(NGD):no=1,count=0,cont=0Generic identification number(GIN):group=1,entry=114(ENTR Y identifier)Kind of description(KOD):Actual value Generic data description:(datatype=18,datasize=6,number=1,cont=0)General identification data:(DPI=ON Time:valid,stan dard,12:17:33.025Supplementary information(SIN)=0)M->S7Phy107A017B16Dat PRM=1FCB=1FCV=1Request user data class1Addre ss=01AppS->M8Phy6816166828010A810101FE F40001017F011206 010********C00E416Dat L=22PRM=0ACD=1DFC=0User data Address=01 Link user data=0A81...0C00App Generic data(=10)SQ=1Number of elements=1Cause of transmission:Spontaneous(=1)Common address=01Function type=254(Generic function type)INF=244(Read value or attribute of a single entry)Return information identifier(RII)=0Number of generic data sets(NGD):no=1,count=0,cont=0Generic identification number(GIN):group=1,entry=127 (ENTRY identifier)Kind of description(KOD):Actual value Generic data description:(datatype=18,datasize=6,number=1,cont=0)General identification data:(DPI=ON Time:valid, standard,12:17:33.025Supplementary information(SIN)=0)M->S9Phy105A015B16Dat PRM=1FCB=0FCV=1Request user data class1Addre ss=01AppS->M10Phy6816166828010A810101FE F40001017B011206 010235B7110C004A16Dat L=22PRM=0ACD=1DFC=0User data Address=01 Link user data=0A81...0C00App Generic data(=10)SQ=1Number of elements=1Cause of transmission:Spontaneous(=1)Common address=01Function type=254(Generic function type)INF=244(Read value or attribute of a single entry)Return information identifier(RII)=0Number of generic data sets(NGD):no=1,count=0,cont=0Generic identification number(GIN):group=1,entry=123 (ENTRY identifier)Kind of description(KOD):Actual value Generic data description:(datatype=18,datasize=6,number=1,cont=0)General identification data:(DPI=ON Time:valid, standard,12:17:46.901Supplementary information(SIN)=0)M->S11Phy107A017B16Dat PRM=1FCB=1FCV=1Request user data class1Add ress=01AppS->M12Phy6816166828010A810101FE F400010172011206 010189B7110C009416Dat L=22PRM=0ACD=1DFC=0User data Address=01 Link user data=0A81...0C00App Generic data(=10)SQ=1Number of elements=1Cause of transmission:Spontaneous(=1)Common address=01Function type=254(Generic function type)INF=244(Read value or attribute of a single entry)Return information identifier(RII)=0Number of generic data sets(NGD):no=1,count=0,cont=0Generic identification number(GIN):group=1,entry=114 (ENTRY identifier)Kind of description(KOD):Actual value Generic data description:(datatype=18,datasize=6,number=1,cont=0)General identification data:(DPI=OFF Time:valid, standard,12:17:46.985Supplementary information(SIN)=0)M->S13Phy105A015B16Dat PRM=1FCB=0FCV=1Request user data class1Addr ess=01AppS->M14Phy6816166828010A810101FE F40001017F011206 0101A4B7110C00BC16Dat L=22PRM=0ACD=1DFC=0User data Address=01 Link user data=0A81...0C00App Generic data(=10)SQ=1Number of elements=1Cause of transmission:Spontaneous(=1)Common address=01Function type=254(Generic function type) INF=244(Read value or attribute of a single entry)Return information identifier(RII)=0Number of generic data sets(NGD):no=1,count=0,cont=0Generic identification number(GIN):group=1,entry=127(ENT RY identifier)Kind of description(KOD):Actual value Generic data description:(datatype=18,datasize=6,number=1,cont=0)General identification data:(DPI=OFF Time:valid,st andard,12:17:47.012Supplementary information(SIN)=0)M->S15Phy107A017B16Dat PRM=1FCB=1FCV=1Request user data class1Addr ess=01AppS->M16Phy68151568280105810401010303554E49544544 203939313141B916Dat L=21PRM=0ACD=1DFC=0User data Address=01 Link user data=0581 (3141)App Identification(=5)SQ=1Number of elements=1Cause of transmission:Reset communication unit (CU)(=4)Common address=01unction type=1(Private)INF=3 (Reset CU)Compatibility level(COL)=3(With use of generic services)ASCII=XXXXManufacturer's internal software identification=XXX注:采用传输原因4回复主站复位CU命令.但响应优先级应较高(即在发送缓冲区内所有信息之前).M->S17Phy105A015B16Dat PRM=1FCB=0FCV=1Request user data class1Add ress=01AppS->M18Phy68151568080105810501010403554E495445 442039393131419B16Dat L=21PRM=0ACD=0DFC=0User data Address=01 Link user data=0581 (3141)App Identification(=5)SQ=1Number of elements=1Cause of transmission:Start/restart(=5)Common address=01Function type=1(Private)INF=4 (Start/restart)Compatibility level(COL)=3(With use of generic services)ASCII=UNITED9Manufacturer's internal software identification=911A 注:上送"启动/重启动"信号,其功能采用自定义功能类型FUN=1.M->S19Phy680F0F68730106810801FF00792D120C B60A04 8B16Dat L=15PRM=1FCB=1FCV=1User data/confirm expected Address=01Link user data=0681...0A04App Time synchronisation(=6)SQ=1Number of elements=1Cause of transmission:Time synchronisation(=8)Common address=01Function type=255(Global function type)INF=0(Initiation/End of general interrogation/Time synchronisation)Time:valid,standard,Fri22-10-200412:18:11.641注:初始化后主站发送时钟同步命令.S->M20Phy1020012116Dat PRM=0ACD=1DFC=0ACK Address=01AppM->S21Phy105A015B16Dat PRM=1FCB=0FCV=1Request user data class1Addr ess=01AppS->M22Phy680F0F68080106810801FF00792D120C B60A04 2016Dat L=15PRM=0ACD=0DFC=0User data Address=01 Link user data=0681...0A04App Time synchronisation(=6)SQ=1Number of elements=1Cause of transmission:Time synchronisation(=8)Common address=01Function type=255(Global function type)INF=0(Initiation/End of general interrogation/Time synchronisation)Time:valid,standard,Fri22-10-200412:18:11.641注:子站回应时间与主站一致,值得推敲.因为按标准规定时钟同步命令响应报文时间应为子站收到命令一刻的当地时间,也就说,一般响应报文和主站发的报文时间基本是不一样的.国内许多厂家都简单处理为一致,严格讲不符合规约的规定.M->S23Phy68090968730107810901FF00010616Dat L=9PRM=1FCB=1FCV=1User data/confirm expected Address=01Link user data=0781 (0001)App General interrogation(=7)SQ=1Number of elements=1Cause of transmission:Initiation of general interrogation(=9)Common address=01Function type=255(Global function type)INF=0(Initiation/End of general interrogation/Time synchronisation)Scan number(SCN)=1注:站初始化后的总召唤过程,值得注意的是很多厂家都不关心SCN扫描序号.实际上它很重要,子站可以根据不同的SCN区分主站不同批次的召唤命令并灵活处理.扫描序号的变化方式并没有规定,也就是说每次不同即可.S->M24Phy1020012116Dat PRM=0ACD=1DFC=0ACK Address=01AppM->S25Phy105A015B16Dat PRM=1FCB=0FCV=1Request user data class1AddrAppS->M26Phy680E0E68280101810901011202843E120C01AB 16Dat L=14PRM=0ACD=1DFC=0User data Address=01 Link user data=0181...0C01App Time-tagged message(=1)SQ=1Number of elements=1Cause of transmission:General interrogation(=9)Common address=01unction type=1(Private)INF=18 (Protection active)DPI=ONTime:valid,standard,12:18:16.004Supplementary information(SIN)=1(SIN means Scan number of the GI)注:很多人认为用ASDU1传送遥信效率不高(1次传1个点),但事实上规约就是这样的.当然行标对此进行了改进,采用了ASDU40/42/44/46作为总召唤用,可一帧传多个遥信.另外,行标还定义了ASDU41/43,作为传送状态变位报文,也是一帧多个遥信的,提高了通信效率,当然也加大了国内产品和国外产品的互联难度.M->S27Phy107A017B16Dat PRM=1FCB=1FCV=1Request user data class1Addr ess=01AppS->M28Phy68090968080108810A01FF00019D16Dat L=9PRM=0ACD=0DFC=0User data Address=01 Link user data=0881 (0001)App General interrogation termination(=8)SQ=1Number of elements=1Cause of transmission:Termination of general interrogation(=10)Common address=01Function type=255(Global function type)INF=0(Initiation/End of general interrogation/Time synchronisation)Scan number(SCN)=1注:总召唤结束,SCN扫描序号应与主站命令中相同.另外以上总召唤响应报文中的SIN(补充信息)也是与主站的SCN是相同的,这同样也便于了主站识别子站上送召唤信息的批次.M->S29Phy105B015C16Dat PRM=1FCB=0FCV=1Request user data class2AddrAppS->M30Phy1009010A16Dat PRM=0ACD=0DFC=0NACK:data not available Addre ss=01App以上是一个103规约站初始化的实例,有部分错误.反映出的主要问题就是:1.复位命令下设备发送缓冲区的清除问题.2.总召唤命令SCN与SIN/RII等的对应问题.3.复位命令响应的优先级问题.4.总召唤上送的状态量信息采用何种ASDU的效率问题.5.时钟同步命令应答帧的时标时间问题.6.自定义功能类型FUN所可能带来的互操作困难问题.。
一、DL/T667-1999(IEC60870-5-103)通信规约1. 通信接口1.1 接口标准:RS485。
1.2 通信格式:异步,1位起始位,8位数据位,1位偶校验位,1位停止位。
字符和字节传输由低至高。
线路空闲状态为1。
1.3 通信速率:可变。
默认96001.4 通信方式:主从一对多,Polling方式。
2. 报文格式60870-5-103通信规约有固定帧长报文和可变帧长报文两种报文格式,前者主要用于传送“召唤、命令、确认、应答”等信息,后者主要用于传送“命令”和“数据”等信息。
2.1 固定帧长报文启动字符控制域地址域代码和结束字符注:代码和=控制域+地址域(不考虑溢出位,即256模和)2.2————启动字符1(1byte)————长度(1byte)————长度(重复)(1byte)————启动字符2(重复)(1byte)————控制域(1byte)————地址域(1byte)————链路用户数据[(length-2)byte]————代码和(1byte)————结束字符(1byte)注:(1)代码和=控制域+地址域+ ASDU代码和(不考虑溢出位,即256模和)(2)ASDU为“链路用户数据”包,具体格式将在下文介绍(3)Length=ASDU字节数+22.3 控制域控制域分“主∧从”和“从∧主”两种情况。
(1)“主∧从”报文的控制域D7 D6 D5 D4 D3 D2 D1 D0备用PRM FCB FCV 功能码0 11(A)PRM(启动报文位)表明信息传输方向,PRM=1由主站至子站;PRM=0由子站至主站。
(B)FCB(桢记数位)。
FCB = 0 / 1——主站每向从站发送新一轮的“发送/确认”或“请求/响应”传输服务时,将FCB取反。
主站为每个从站保存一个FCB的拷贝,若超时未收到应答,则主站重发,重发报文的FCB保持不变,重发次数最多不超过3次。
若重发3次后仍未收到预期应答,则结束本轮传输服务。