当前位置:网站首页 > 编程语言 > 正文

104协议和modbus协议(104协议和modbus协议区别 dlt)



104规约是基于TCP/IP协议的网络规约,一般用于变电站向调度主站上传站内遥信、遥测、遥脉数据,并接受调度下发的遥控、遥调命令。也可以在变电站内对下与其他设备通讯用,一般用于光伏电站的逆变器通讯。

在104通讯中,主站作为客户端,子站作为服务器端。子站端口一般为2404。

主站与子站通讯的一般流程是:

NO.

内容

1

子站监听2404端口,主站嵌套字(IP+端口号)向子站发送TCP握手报文,从而建立起TCP连接。

2

主站先发送建立连接的报文(U帧),子站回应报文(U帧)建立连接。

3

主站发送总招报文(I帧),子站回应确认报文(I帧),然后上传全遥信和全遥测(I帧)。

4

主站发送分组召唤报文(I帧),比如遥脉总招报文。子站回应遥脉总召(I帧)。

5

子站遥测或者遥信数据有变化的时候,会主动上送变化遥测和变化遥信。主站每隔一段时间或者每收到固定数量的变化数据之后,对子站的数据进行确认。

6

主站长时间未收到子站报文时,主动下发链路测试报文(U帧),子站回应链路测试报文(U帧)。

7

主站会定时下发对时报文和总召报文。

104中有两个常用参数:K和W,其取值范围为1-32767。

K一般用于约束子站,表示发送方在有K个I格式报文未得到对方的确认时,将停止数据传送(非断开连接),默认值为12。

W一般用来约束主站,表示接收方最迟在接收了W个I格式报文后应发出S格式的确认。默认值为8。

104还规定了几个超时时间,即T0、T1、T2、T3和T4,它们的取值范围为1-255s。

名字

作用

T0

规定了主站和子站建立一次TCP连接的最大允许时间。

T1

规定发送方发送一个I格式报文或U格式报文后,必须在T1的时间内得到接收方的确认,否则发送方认为TCP连接出现问题并重新建立连接。

T2

规定接收方在接收到I格式报文后,若经过T2时间后未再收到新的I格式报文,则必须向发送方发送S格式帧对已经接收到的I格式报文进行认可,显然T2必须小于T1。

T3

规定调度端或子站每接收一帧I帧、S帧或者U帧将重新触发计时器T3,若在T3内未接收到任何报文,将向对方发送测试链路帧。

T4

规定主站下发的对时报文,经过T4时间未收到子站的确认报文,则用当前时间重发对时报文,这个过程不得超过3次。T4默认为8s。

主站端和子站之间的TCP连接在实际运行中可能经常进行关闭和重建,这发生在4种情况下:

  1. 主站端和子站之间的I格式报文传送出现丢失、错序或者发送U格式报文得不到应答时,双方均可主动关闭TCP连接,然后进行重建;
  2. 子站上送的I格式报文(一般是变化遥测)未确认数量达到K值,然后子站停止发送数据进行等待,T1延时之后仍未能收到确认的S格式报文,那么子站主动断开TCP连接。
  3. 主站系统重新启动后将与各个子站重新建立TCP连接;
  4. 子站合上电源或由于自恢复而重新启动后,将重建连接;
  5. 子站收到主站端的U帧停止报文后,将关闭连接并重新初始化,然后重建连接。

104规约报文分类及作用如下表所示:

报文分类

作用

固定帧短报文

U帧报文

用作启动链路、停止链路和测试链路。固定长度6字节。

S帧报文

用于主站确认子站上送的五遥信息。固定长度6字节。

可变长度长报文

I帧报文

带有ASDU报文,也就是数据部分。I帧用来执行五遥的传输,以及总召、对时等功能。本身带有编号,用来做数据确认。报文长度依照ASDU长度的不同而不同。

I帧报文如下面左图所示,S帧和U帧报文如下面右图所示:

应用服务数据单元APDU就是整个104规约报文,包含应用规约控制信息APCI和应用服务数据单元ASDU两部分。APCI负责着报文的来往,以保证ASDU的正确传输。

以主站总召报文为例:

68 0e 00 00 00 00 64 01 06 00 01 00 00 00 00 14

68:起始字符,1个字节,固定为68H

0e:该字节之后的数据长度,1个字节

00 00 00 00:控制域,4个字节,后面会单独介绍

64 01 06 00 01 00 00 00 00 14:ASDU报文,后面单独讲解

其他I帧报文结构相同,只是ASDU报文的差别。

以主站确认子站I帧报文为例68 04 01 00 0a 00

68:起始字符,固定为68H

04:该字节之后的数据长度,S帧报文中固定为04H

01 00 0a 00:控制域

以主站启动链路为例68 04 07 00 00 00

68:起始字符,固定为68H

04:该字节之后的数据长度,S帧报文中固定为04H

07 00 00 00:控制域

控制域有两个作用:一是区分I、S、U三种报文,二是存放报文编号。

这三种报文的控制域如下:

I帧报文:

S帧报文:

U帧报文:

测试、停止和开启这三个2biT数据,低biT为ACT,置1表示激活,是主站发往从站的;高biT为CON,置1表示确认,是从站相应主站的。所以U帧的控制域只有以下6种:

68 04 07 00 00 00 :主站开启链路

68 04 0B 00 00 00 :从站响应开启链路

68 04 13 00 00 00 :主站停止链路

68 04 23 00 00 00 :从站响应停止链路

68 04 43 00 00 00 :主站测试链路

68 04 83 00 00 00 :从站响应测试链路

I帧与S帧中的发送序号和接收序号用来防止I帧报文在传送过程中丢失或者重复。发送方每发送一个I格式报文,其发送序号应加1,接收方每接收到一个与其接收序号相等的I格式报文后,其接收序号也应加1。由于代表序号的最后一位未使用(一直为0),所以报文中“序号”像是以“2”为步长进行递增。

当子站发送了若干帧I格式报文后,需要主站用S格式报文予以确认,S格式报文会将子站发送的发送序号小于等于其接受序号的报文全部确认。S格式和U格式报文的发送不会改变子站发送的I格式报文中的发送序号序列。

ASDU报文是104报文的核心,存储着五遥数据以及总召和对时的命令。类比Modbus规约,五遥的数据也可以理解为是存在寄存器中,五遥数据的上送就是子站通过响应总召或者主动上送变化信息的方式上传给主站,主站根据ASDU类型标识来区分是数据类型,再根据信息体地址来解析数据。

注意:104规约中,所有长度大于1个字节的数据都是低字节在前。

02版本的104规约信息体地址如下表所示:

遥信

遥测

遥控

遥调

遥脉

信息体地址

0001H--4000H

4001H--5000H

6001H--6100H

6201H--6400H

6401H--6600H

ASDU报文的结构如下图:

ASDU类型标识

1个字节

可变结构限定词

1个字节

传送原因

2个字节,低字节在前

公共地址

2个字节,低字节在前

信息体地址

3个字节,低字节在前

信息体元素

N

………

………

………

………

常见类型如下表:

子站上送

主站下发

类型标识

描述

类型标识

描述

01H

单点信息(遥信)1字节

2dH

单点遥控命令

02H

带3字节时标的单点信息(SOE)

2eH

双点遥控命令

03H

双点信息(遥信)1字节

2fH

步调节命令

04H

带3字节时标的双点信息(SOE)

30H

遥调命令,归一化值

05H

步位置信息

31H

遥调命令,标度化值

07H

32比特串

32H

遥调命令,单精度浮点数值

09H

测量值,规一化值

33H

遥调命令,32比特串

0bH

测量值,标度化值

3aH

带7字节时标的单点遥控

0dH

测量值, 单精度浮点值

3bH

带7字节时标的双点遥控

0eH

带3字节时标的单精度浮点数

3cH

带7字节时标的步调节命令

0fH

累计量

3dH

带7字节时标的归一化值遥调

14H

带状态检出的成组单点信息

3eH

带7字节时标的标度化值遥调

15H

不带品质描述的归一化值

3fH

带7字节时标的单精度浮点数遥调

1eH

带7字节时标的单点信息(SOE)

40H

带7字节时标的32比特位

1fH

带7字节时标的双点信息(SOE)

64H

总召唤

20H

带7字节时标的步位置信息(SOE)

65H

电度量总召唤

21H

带7字节时标的比特串

66H

读命令

22H

带7字节时标的归一化值

67H

时钟同步命令

23H

带7字节时标的标度化值

68H

测试命令

24H

带7字节时标的单精度浮点数

69H

复位进程命令

25H

带7字节时标的累计量

6aH

延时传输命令

26H

带7字节时标的继电保护装置事件

6bH

带7字节时标的测试命令

27H

带7字节时标的继电保护成组启动事件

28H

带7字节时标的继保成组输出电路信息

表格中标红部分是常见的类型标识。

传送原因COT占2个字节,按bit展开如下表:

低字节

高字节

bit

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

T

P/N

传送原因

源发地址

T=0未试验,T=1试验。一般 T= 0。

P/N=0肯定,P/N=1否定。P/N=1说明该报文无效,一般P/N=0。

源发地址:用来记录来时哪个主站的响应数据,一般写 0。

常见的传送原因如下表:

类型标识

描述

03H

突变信息

05H

请求、被请求

06H

激活

07H

激活确认

47H

否定激活

08H

停止激活

09H

停止激活确认

0aH

激活终止

14H

响应总召

25H

响应遥脉总召

2CH

未知类型的ASDU类型

2DH

未知传输原因

2EH

未知ASDU公共地址

2FH

未知信息对象地址

主站下发总召

68 04 XX XX XX XX 64 01 06 00 01 00 00 00 00 14

子站回应总召报文

68 04 XX XX XX XX 64 01 07 00 01 00 00 00 00 14

64:ASDU类型,指明本报文的作用或者数据类型,64H表示总召。

01:可变结构限定词,用来表明本帧报文中的数据结构。内部结构如下表:

SQ=0,表示后面数据的信息体地址不连续,信息体地址和信息成对出现,一一对应。

SQ=1,表示后面数据的信息体地址连续,只有第一个信息体元素有地址,其他信息体元素地址从第一个信息体地址起,逐步加一。遥控、遥调和总召报文的可变结构限定词都为01H,表示后面只有一个信息体。

06 00:传送原因,指明本帧报文产生的原因,低字节在前,00 06H代表激活,即主站要求。子站响应00 07H,代表确认激活。

01 00:公共地址,低字节在前,00 01H可以理解为子站地址,因为主站可以用一个104链路连接多个子站,为了区分子站的报文,就需要用到这个地址。实际工程中一般是主站和子站一对一通讯,该地址默认为1。

00 00 00:信息体地址,低字节在前,00 00 00H的地址是特殊地址,表明本帧报文没有数据,是功能性的报文,总召、对时等。

14:代表总召。

主站下发对时

68 04 XX XX XX XX 67 01 06 00 01 00 00 00 00 8e 6d 2c 04 1b 0c 14

子站回应对时:

68 04 XX XX XX XX 67 01 07 00 01 00 00 00 00 8e 6d 2c 04 1b 0c 14

67:ASDU类型,表示对时。

8e 6d 2c 04 1b 0c 14:7字节时间,8e 6dH代表秒和毫秒,低字节在前,6d 8eH=28046D,即28秒46毫秒。2cH代表分,即44分钟。04H代表小时(24小时制),即4点。1bH代表日期,即27号。0cH代表月份,即12月。14H代表年,即2020年。

字节1

字节2

字节3

字节4

字节5

字节6

字节7

秒+毫秒

小时

子站上送遥测(整型)

68 04 XX XX XX XX 15 04 03 00 01 00 01 40 00 40 06 00 04 40 00 40 06 00 06 40 00 80 0c 00 07 40 00 80 0c 00

子站上送遥测(浮点数)

68 04 XX XX XX XX 0d 87 03 00 01 00 d2 40 00 04 f4 a7 43 00 a3 ef ac 43 00 04 f4 a7 43 00 60 ca 4e 44 00 b4 6d 51 44 00 60 ca 4e 44 00 50 fb 97 43 00

子站上送遥测(3字节时标浮点数):

68 04 XX XX XX XX 0e 01 03 00 01 00 01 40 00 00 00 40 40 00 62 ac 1c

子站上送遥测(7字节时标浮点数):

68 04 XX XX XX XX 24 01 03 00 01 00 01 40 00 00 00 40 40 00 34 a1 0e 10 1b 04 17

15代表整型遥测(即码值),占2个字节,0d、0e、24H代表的短浮点数占4个字节,都是低字节在前。每个数据后面都带有一个字节的品质描述。后面带有3字节或7字节的时标。

04表示后面是4个地址不连续的遥测,87表示后面跟着7个点号连续的遥测。

03 00表示本次报文传输原因为“突变”。

01 00表示应用层地址为1。

01 40 00 、d2 40 00表示点号,低位在前,也就是4001H、40d2H。

老一点的调度(比如Open3000系统)都是要求我们上传整型数据,主站或者子站端还要设置系数,以便将整型数据转换为实际的浮点数。现在调度(比如D5000系统)都是要求子站直接上传类型为0dH的单精度四字节浮点数。

62 ac 1c34 a1 0e 10 1b 04 17:3字节时标和7字节时标。ac62H表示秒和毫秒,等于44130D,表示44秒,130毫秒。1cH表示分钟,为28分钟。3字节时标就是取自7字节时标的前三个字节,结构如下:

字节1

字节2

字节3

秒+毫秒

子站上送遥信

68 04 XX XX XX XX 01 02 03 00 01 00 07 00 00 00 09 00 00 01

子站上送SOE

68 04 XX XX XX XX 1e 02 03 00 01 00 07 00 00 00 8e 6f 2c 04 1b 0c 14 09 00 00 01 8e 6f 2c 04 1b 0c 14

子站上送类型为01H长度为1个字节的单点遥信,00H表示分位,01H表示合位。如果是类型为03H长度为1个字节的双点遥信,那就是01H表示分位,02H表示合位。

SOE报文就是在每个遥信后面添加7字节的时标,表明发生这些变位的子站时间。时标解析方法与对时报文中的相同。7字节时标解释时间参考遥测中7字节时标解析。

遥控分两种,单点遥控和双点遥控。单点遥控指的是指利用报文中1个bit位代表“遥分”与“遥合”,双点遥控指的是利用报文中的2个bit位代表“遥分”与“遥合”。

单点遥控报文如下:

主站下发遥控选择68 04 XX XX XX XX 2d 01 06 00 01 00 04 60 00 81

子站回应遥控选择68 04 XX XX XX XX 2d 01 07 00 01 00 04 60 00 81

主站下发遥控执行68 04 XX XX XX XX 2d 01 06 00 01 00 04 60 00 01

子站回应遥控执行68 04 XX XX XX XX 2d 01 07 00 01 00 04 60 00 01

子站遥控执行完毕68 04 XX XX XX XX 2d 01 0a 00 01 00 04 60 00 01

2d表示单点遥控,双点遥控为2e

功能码00 06表示激活,00 07表示激活成功,00 08表示撤销激活,00 0a表示激活完毕。

数据81表示单点控合的选择,01表示单点控合的执行。如果是单点控分则是8000

如果主站选择直控的策略,那么就没有遥控选择这一步了。

如果是双点遥控,ASDU类型为2e,最后一个字节81表示控分的选择,82表示控合的选择,01表示控分的执行,02表示控合的执行。其他报文与单点遥控一样。

现场常见的是下发4字节浮点数遥调,ASDU类型是32H,常见的报文如下:

主站下发遥调选择68 04 XX XX XX XX 32 01 06 00 01 00 01 62 00 00 00 7a 44 80

子站回应遥调选择68 04 XX XX XX XX 32 01 07 00 01 00 01 62 00 00 00 7a 44 80

主站下发遥调执行68 04 XX XX XX XX 32 01 06 00 01 00 01 62 00 00 00 7a 44 00

子站回应遥调执行68 04 XX XX XX XX 32 01 07 00 01 00 01 62 00 00 00 7a 44 00

32表示浮点类型的遥调指令。

01是可变结构限定词,表示报文中只有一个数据。

06 00表示激活,07 00表示确认激活。

01 00表示厂站地址,低字节在前。

01 62 00是信息体地址,低字节在前,实际是6201H。

00 00 7a 44是遥调指令值,4字节浮点数,低字节在前低字在前,实际是44 7a 00 00H,表示1000。

主站报文用红色标注,子站报文用绿色标注。

68 04 07 00 00 00//启动数据传输

68 04 0b 00 00 00//响应数据传输

68 0e 00 00 00 00 64 01 06 00 01 00 00 00 00 14//总召

68 0e 00 00 02 00 64 01 07 00 01 00 00 00 00 14//响应总召

68 1d 02 00 02 00 15 88 14 00 01 00 01 07 00 40 06 40 06 80 0c 80 0c 00 00 00 00 00 00 00 00//响应总召的遥测

68 15 04 00 02 00 01 88 14 00 01 00 01 00 00 00 00 00 00 00 00 00 00//响应总召的遥测

68 0e 06 00 02 00 64 01 0a 00 01 00 00 00 00 14//回应主站,总召数据传输完毕

68 14 02 00 08 00 67 01 06 00 01 00 00 00 00 ed 27 28 11 8a 08 06//遥脉总召

68 14 08 00 04 00 67 01 07 00 01 00 00 00 00 ed 27 28 11 8a 08 06//响应遥脉总召

68 04 01 00 0a 00//确认前面这5帧I格式报文

68 04 83 00 00 00//测试链路,

68 04 43 00 00 00//响应测试

68 04 83 00 00 00

68 04 43 00 00 00

68 1e 0a 00 04 00 15 04 03 00 01 00 01 07 00 40 06 02 07 00 40 06 03 07 00 80 0c 04 07 00 80 0c//上送变化遥测

68 04 01 00 0c 00//t2时间后没有新的I格式报文,予以确认

68 16 0c 00 04 00 01 03 03 00 01 00 01 00 00 01 03 00 00 01 02 00 00 01//上送3个变化遥信,地址不连续

68 2b 0e 00 04 00 1e 03 03 00 01 00 01 00 00 01 ca 8b 16 11 0a 08 06 03 00 00 01 ca 8b 16 11 0a 08 06 02 00 00 01 ca 8b 16 11 0a 08 06//上送这3个变化遥信的SOE,也就是在每个遥信后面添加7字节的时标

68 04 01 00 0e 00//t2时间后没有新的I格式报文,予以确认

68 0e 04 00 10 00 2e 01 06 00 01 00 04 60 00 81//双点遥控选择,分

68 0e 10 00 06 00 2e 01 07 00 01 00 04 60 00 81//确认遥控选择,分

68 0e 06 00 12 00 2e 01 06 00 01 00 04 60 00 01//双点遥控执行,分

68 0e 12 00 08 00 2e 01 07 00 01 00 04 60 00 01//确认遥控执行,分

68 0e 14 00 08 00 2e 01 0a 00 01 00 04 60 00 01//遥控结束

68 0e 16 00 08 00 01 01 03 00 01 00 05 00 00 00 //上送1个变化遥信,分

68 15 18 00 08 00 1e 01 03 00 01 00 05 00 00 00 ca 8b 16 11 0a 08 06 //上送这1个变化遥信的SOE

68 04 01 00 18 00//t2时间后没有新的I格式报文,予以确认

68 14 08 00 1a 00 67 01 06 00 01 00 00 00 00 01 02 03 04 81 09 05//对时报文

68 14 1c 00 10 00 67 01 07 00 01 00 00 00 00 01 02 03 04 81 09 05//响应对时报文

68 04 83 00 00 00//测试链路

68 04 43 00 00 00//响应测试

68 04 83 00 00 00//测试链路

68 04 43 00 00 00//响应测试

68 04 83 00 00 00//测试链路

68 04 43 00 00 00//响应测试

到此这篇104协议和modbus协议(104协议和modbus协议区别 dlt)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 学籍认证码是什么(学籍认证码是什么意思)2024-12-04 14:36:04
  • 星露谷黄金时钟代码(星露谷物语黄金钟id)2024-12-04 14:36:04
  • yml文件不生效(yml文件用什么打开并编辑)2024-12-04 14:36:04
  • max3488原理图(max3488的作用)2024-12-04 14:36:04
  • ssh免密登录失败怎么办(sshd免密登录)2024-12-04 14:36:04
  • win32gui是什么库(win32gui.enumwindows)2024-12-04 14:36:04
  • ngff接口和sata接口(ngff与sata3)2024-12-04 14:36:04
  • u盘制作pe系统启动盘 Win7(u盘制作pe系统启动盘后无法读取)2024-12-04 14:36:04
  • 双系统如何卸载另一个系统(双系统如何卸载另一个系统)2024-12-04 14:36:04
  • 打印机共享修复合集(打印机共享失效)2024-12-04 14:36:04
  • 全屏图片