一、IEC104 协议概述

IEC104规约由国际电工委员会制定。IEC104规约把IEC101的应用服务数据单元(ASDU)用网络规约TCP/IP进行传输的标准,该标准为远动信息的网络传输提供了通信规约依据。采用104规约组合101规约的ASDU的方式后,可很好的保证规约的标准化和通信的可靠性。

104规约

104是厂站与配网主站进行通讯的规约,以以太网为载体,服务模式是平衡模式,用于远动控制通信的,用于调度自动化系统,厂站之间的通讯。

104规约的报文帧分为三类,I帧,S帧,U帧;

I帧为信息帧,用于传输数据,长度大于6个字节,为长帧;

S帧为确认帧,用于确认接收的I帧,长度为6个字节,为短帧;

U帧为控制帧,用于控制启动/停止/测试,长度为6个字节,为短帧;

长帧报文分为APCI和ASDU两个部分,统称为APDU,而短帧报文只有APCI部分;

APCI的6个字节的构成:起动字符68H,1个字节;后面的报文长度,1个字节(最大253);控制域位组,4个字节;区分I,S,U帧:

I帧的4字节控制域位组规定为:字节1和字节2位发送序号,字节3和字节4为接收序号;

注意:

1.由于字节1和字节3的最低位固定为0,不用于构成序号,所以在计算序号时,要先转换成十进制数值,再除以2;

2.由于低位字节在前,高位字节在后,所以计算时要先做颠倒;

S帧的字节1固定为01H,字节2固定为00H,字节3和字节4位接收序号计算时仍要注意以上两点;

U帧的字节2,3,4均固定为00H,字节1包含TESTFR,STARTDT,STOPDT三种功能,同时只能激活其中的一种功能;启动(STARTDT)和停止(STOPDT)都是由主站(104的客户端)发起的,先由主站发送生效报文,子站随后确认。而主站和子站都可发送测试(TESTFR)报文,由另一方确认。

客户端发起:(请求连接报文和确认连接报文)

STARTDT:68 04 07 00 00 00(启动激活);68 04 0B 00 00 00(启动确认)

07 = 00000111,最后两个1表示信息传输格式为U格式,倒数第3个1表示请求连接;

0B = 00001011,最后两个1表示信息传输格式为U格式,倒数第4个1表示连接确认;

客户端发起:

STOPDT:68 04 13 00 00 00(停止激活);68 04 23 00 00 00(停止确认)

客户端和服务器对发:

TESTFR:68 04 43 00 00 00 (测试激活); 68 04 83 00 00 00(测试确认)

104协议是101协议的网络版,101协议每次只能发送一个链路帧,而104协议可以连续发送多个链路帧,其传输效率明显高于101协议,而且具有TCP/IP的冲突检测和错误重传机制,具有比101协议更高的可靠性和稳定性,另外对通信延时的限制更宽松。

心跳机制

t0:TCP连接建立的超时时间,即RTU(服务器)端进入等待连接的状态后,若超过了此时间,主站(客户)端还没有connect()过来就主动退出等待连接的状态;规约推荐的缺省值为30秒;

t1:RTU端启动U格式测试过程后等待U格式测试应答的超时时间,若超过了此时间还没有收到主站端的U格式测试应答,就主动关闭TCP连接;规约推荐的缺省值为15秒;

t2:RTU端以突发的传送原因向主站端上送了变化信息或以激活结束的传送原因向主站端上送了总召唤/电度召唤结束后,等待主站端回S格式的超时时间,若超过了此时间还没有收到,就主动关闭TCP连接;规约推荐的缺省值为10秒;

t3:当RTU端和主站端之间没有实际的数据交换时,任何一端启动U格式测试过程的最大间隔时间;推荐的缺省值为20秒;

举例说明它的组成部分:

68  0E  00 00 00 00 64  01 07 00 01 00  00 00 00 14

68  0E  02 00 12 00  2D 01   06 00 01 00   02 60 00 81

启动字符  + APDU长度 + 4个控制域8位位组  + 类型标识  +  可变结构限定词(个数) + 传输原因  + 公共地址(ASDU地址)+  信息体地址 +  召唤限定词

常见的几种报文:

站初始化:

TX: 68 04 07 00 00 00 U格式启动帧

RX:68 04 0B 00 00 00 响应帧

链路测试:

TX:68 04 43 00 00 00 链路测试报文

RX:68 04 83 00 00 00 响应帧

对时:

TX:68  14  08 00 04 00 67 01 06 00 01 00 00 00 00 A4 92 06 0F EA 05 0F

RX:68  14 0A 00 04 00 67 01 07 00 01 00 00 00 00 A4 92 06 0F EA 05 0F

A4 92:即37540毫秒

06:6分

0F:15时

EA:111 01010 星期天 10号

05:5月

0F:2015年

常用的类型标识:

遥测:

09---带品质描述的遥测量,每个遥测值占三个字节

0A---带3个字节时标的且具有品质描述的遥测值,每个遥测值占6个字节

0B---不带时标的标度化值,每个遥测值占3个字节

0C---带3个字节时标的标度化值,每个遥测值占6个字节

0D---带品质描述的浮点值,每个遥测值占5个字节

0E---带3个字节时标且具有品质描述的浮点值,每个遥测值占8个字节

15---不带品质描述的遥测值,每个遥测值占2个字节

遥信:

01---不带时标的单点遥信,每个遥信占1个字节

03---不带时标的双点遥信,每个遥信占1个字节

14---具有状态变位检测的成组单点遥信,每个字节包括8个遥信

SOE:记录即事件顺序记录

02---带3个字节短时标的单点遥信

04---带3个字节短时标的双点遥信

1E---带7个字节时标的单点遥信

1F---带7个字节时标的双点遥信

遥调:

0F---不带时标的电度量,每个电度量占5个字节

10---带3个字节短时标的电度量,每个电度量占8个字节

25---带7个字节长时标的电度量,每个电度量占12个字节

其他:

2D---单点遥控

2E---双点遥控

2F---双点遥调

64---召唤全数据

65---召唤全电度

67---时钟同步

常用的传送原因列表:

1---周期,循环

2---背景扫描

3---突发,自发上传

4---初始化

5---请求或被请求

6---激活

7---激活确认

8---停止激活

9---停止激活确认

0A---激活结束

14---响应总召唤

IEC104规约流程

IEC104 规约作为网络通信规约,由客户端和服务端组成,服务端口默认为2404 。它的基本流程如下:

1. 由客户端向服务器建立连接,同时,发送链路启动帧。

2.服务端在收到链路启动帧后,向客户端发送启动确认帧。

3.客户端收到启动确认帧后,发送总召数据请求帧。

4.服务端收到总召数据请求后,发送总召数据响应帧,然后继续发送总召数据。总召数据发送完成后,发送总召数据结束帧。

5.客户端在收到总召数据结束帧后,发送对时请求帧。

6.服务器收到对时请求帧后,发送对时响应帧。

7.由服务器主动向客户端发送变化数据帧。同时,收到客户端发送的控制类命令,回复相应的操作结果。

8.客户端等到下一个数据总召周期,重复第4步之后的流程。

二、IEC104 报文格式

IEC104使用TCP协议通信,标准TCP端口号是2404。

APCI----------------------- Application Protocol Control Information 控制信息

ASDU -----------------------Application Service Data Unit  服务数据单元

APDU -----------------------Application Protocol Data Unit  规约数据单元

说明:

I帧:编号的信息传输帧,包含APCI和ASDU。控制域1的bit1=0,表示I帧。

S帧:编号监视帧。控制域1的bit1=1 ,bit2=0表示S帧,只包含APCI。

U帧:未编号的控制帧。控制域1的bit1=1, bit2=1表示U帧,只包含APCI。

U帧、控制功能帧

U 格式帧具有不计数的控制功能,包括启动、停止、测试帧。

长度为 6 个字节的固定帧长,用于控制报文。

C:表示确认    V:表示生效

控制域1的第一个bit=1,第二个bit=1定义了U帧。

启动帧:用于启动应用层传输

停止帧:用于停止应用层传输

测试帧:元数据传输时候,用于维持链路活动状态。

U帧只跟【控制域1】有关,不需要记表格,用的时候查就行了。

U 格式帧使用到以下三种命令:

1) 启动 U 帧,用于启动应用层传输控制命令

主站发送:680407000000 从站返回:68040B000000

07 0B为控制域

2) 停止 U 帧,用于停止应用层传输控制命令

主站发送:680413000000  从站返回:680423000000

13 23为控制域

3) 测试 U 帧,双方均无发送时,维持链路活动状态控制命令:

主站发送:680443000000  从站返回:680483000000

43 83为控制域

I帧、信息传输帧

I 帧的控制域包含发送序列号和接收序列号两个参数,两个序列号在每个 APDU 和每个方向上都应按顺序加一。

发送序列号和接受序列号在 0~32767 之间循环,发送方增加发送序列号而接受方增加接收序列号。

接收站认可连续正确 接收的一个 APDU 或者多个 APDU,将最后一个正确接收的 APDU 的发送序列号作为接收序列号返回。

这个接收序列号是对所有发送序列号小于或等于该号的 APDU 的有效确认。

如只在一个方向进行较长的数据传输,就得在另一个方向发送 S 格式认可这些 APDU。

这种方法应该在两个方向上采用。在创建一个 TCP 连接后,发送和接收序列号都被设置成 0。

控制域1的比特1=0定义了I格式,I格式的APDU包含ASDU。

其中,高位有8bit,低位有7bit。比如发送序列号1000,转换成2进制是 0000 0011  1110 1000 。

因为序列号是由7+8bit组成的,所以高位就是0000 0011,低位就是110 1000。

发送一个I帧报文,发送序列号+1,接收一个I报文,接收序列号+1。

TCP重连后,调度主站和子站的接收序号和发送序号都要清零。

S帧、确认帧

S 格式具有计数的监视功能, S 格式帧为短帧,长度 6 个字节。接收方接收到 I 帧数据,但本身没有信息要发送的情况下, S 帧用于确认接收到对方的帧。

控制域1的第一个bit1=1,第二个bit2=0定义了S帧。

主站发送 68 04 01 00 0e 00

从站回复 68 04 01 00 1a 00

ASDU类型标识

ASDU的格式

发送接收的步骤 

服务端,【收到的发送号】<【自己的接收号】------------报文重复

服务端,【收到的发送号】>【自己的接受号】----------------报文丢失

不管丢失还是重复,服务端需要断开连接重连。

k---默认值12,未被确认的I格式的最大数,适用于服务端,达到k指停止发文

w---默认值8,最迟收到w个I格式后必须确认。

t0 ----------默认30s--------建立连接超时---------客户端

t1-----------默认15秒-------发送或测试报文超时-----------服务端

t2-----------默认10秒------无报文时候,确认超时------客户端

t3--------默认20秒----------长期空闲,发测试帧超时----------双方

报文分析

时钟同步报文:

发包

Byte[0] 2d 为控制符 即为功能码

Byte[1] 01 可变结构限定词、若信息对象毫秒低位的地址不连续则为0、若信息对象的地址连续则为1

Byte[2] 06 传输的原因

Byte[3] 00 公共地址 即RTU站址

Byte[4] 01 00 信息体地址

接下来看IOA这个结构体内的

Byte[0] 00 00 00 信息体地址,数据点在数据库中的序号,低位在前高位在后

Byte[1][7] 09 88 1f 0a 0d 05 14 即为时间

  09 毫秒低位

  88 毫秒高位

  1f 分钟

  0a 时

  0d 日与星期

  05 月

  14 年

回包

与发包一致

其实他的I帧的都是发什么就回什么、确认信息以及控制是S帧的U帧

单点遥控:

发包

I帧共有两层、第一层为控制域与序列计数

Byte[0] 68 只要是IEC104规约那么开头规定的即为是68 也就为启动符吧

Byte[1] 0e 为长度 自此往后的长度

Byte[3][4] 1c 00  发送序号,计数

Byte[3][4] 1c 00  接收序号,计数

看下一层:

Byte[0] 2d 为控制符 即为功能码

Byte[1] 01 可变结构限定词、若信息对象的地址不连续则为0、若信息对象的地址连续则为1

Byte[2] 06 传输的原因

Byte[3] 00 公共地址 即RTU站址

Byte[4] 01 00 信息体地址

接下来看IOA这个结构体内的

Byte[0][2] IOA 00 00 00 信息体地址,数据点在数据库中的序号,低位在前高位在后

Byte[0][2] SCO 80  代表单点遥控的分合状态

回包

跟发包都是一样 I帧发送了数据 那么会有S或U帧确认或控制这个信息 所以I帧的回应包与发包一致

单点:

68 15 F8 05 DA 00 01 03 03 00 01 0B 72 00 00  01 75 00 00 00 78 00 00 01

双点:

68 15 F8 05 DA 00 03 03 03 00 01 0B 72 00 00  01 75 00 00 02 78 00 00 01

说明:0x01,0x03  ASDU类型:单点遥信数据。0x03  ASDU类型:双点遥信数据

0x03  可变机构限定词:第七位定义该帧应用数据的数目,低位在前高位在后。最高位不为1,表示每个应用数据前带有一个3个字节的信息体地址(inf),可以不是连续的。因为是遥测数据,所以每个信息体地址后都有一个1个字节的开关量数据。若最高位为1,见2总召遥测报文举例

0x0003  传送原因:定义数据上送的原因,低位在前高位在后。3表示变化上送,若20为召唤上送,1为主动上送等

0x0b01 公共地址:主站个子站设定的地址,低位在前高位在后。由主站方确定,子站严格按此地址设定

0x000075每个遥信数据的信息体地址:数据点在数据库中的序号,低位在前高位在后

0x01  信息体地址后的遥信数据值,单点可以为0或1;双点可以为0,1,2,3

总召唤上送遥信或告警报文(单点):

68 15 F8 05 DA 00 01 83 14 00 01 0B 72 00 00  01  00  01

遥信变位或告警报文(双点)举例:

68 15 F8 05 DA 00 03 83 14 00 01 0B 72 00 00  01  02  03

说明:定义同2召唤遥测。不同点在于遥测是3个字节一个量,遥信是一个字节

SOE(双点)报文:

68 15 F8 05 DA 00 1F 01 03 00 01 OB 72 00 00 02 78 49 35 0E 01 01 00

SOE(单点)报文举例:

68 15 F8 05 DA 00 1E 01 03 00 01 0B 72 00 00 01 78 49 35 0E 01 01 00

说明:前面定义同遥信。78 49 35 0E 01 01 00为动作时间,从后到前依次为年、月、日、时、分、毫秒(2字节)。时间为00年1月1日14时53分18808毫秒(18秒808毫秒)

三、IEC104 模拟器使用

这里介绍两个IEC104模拟器,模拟器下载,请移步:

(539条消息) IEC104模拟器,支持多种操作码,亲测可用_104模拟器,iec104模拟器-其它文档类资源-CSDN文库

(539条消息) IEC60870-104模拟器-网络基础文档类资源-CSDN文库

① 01_104_MASTER

首先要把本地IP改到和从站一个网段,并保证可ping通。

1. 工具界面。

2. 点击101_104,点‘配置’,选择104规约 。

3.  以下红框部分需要修改,从站地址根据实际情况填写,端口一般默认2404,当然可以主从站约定;公共地址也是,跟据实际情况填写,主从约定好是几就是几,然后点‘确定’ 。

4.  然后点击‘开始104通讯’ 。

5. 如果连接成功,会提示‘TCP/IP建立连接成功’,图中为失败情况,因为没连设备。

6. 连接正常后,不用召唤,数据会自动发送过来,但显示不全,需要执行总召。

7. 点击‘发送报文’,如果想要召唤某个点的数据,则在信息体地址处,输入点号,然后点发送,如果想要所有数据,则直接点发送,不用修改配置。

​​​​​​​

8.报文类型,有很多,100为总召,即召唤从站发来的所有数据,还有其他可模拟遥调发令的,例如:50为设点命令,短浮点数。

一般50、100这种的,在104里叫ASDU类型。

注:104规约,公共地址一定要对好。

② IEC60870-5-104ServerSimulator

第一步:打开程序

第二步、点击addServer

第三步,加载配置

第四步,启动服务

这时候就可以通过客户端连接了。

IEC104 模拟器使用教程相关推荐

  1. 手机zip模拟器_【教程】萌新手机krkr2模拟器运行教程

    你好啊,我是鱼谋人~ 这里是萌新手机模拟器运行教程 可能之前出的视频还是做的不够细致 有小可爱还是不太会玩 那么本期会以图片+文字的方式描述过程 本期以初彼为例,其他krkr2运行的游戏操作都是一样 ...

  2. 雷电模拟器 脚本_精灵盛典辅助雷电模拟器使用教程

    精灵盛典辅助雷电模拟器使用教程 精灵盛典雷电模拟器辅助挂机视频 一.雷电模拟器设置 1. 首先启动雷电模拟器,启动后点击图中所示三道杠按钮,然后点击"软件设置" 2. 进入设置界面 ...

  3. Android模拟器运行MIUI,电脑上玩小米枪战吃鸡手游 逍遥安卓模拟器设置教程

    原标题:电脑上玩小米枪战吃鸡手游 逍遥安卓模拟器设置教程 电脑上玩小米枪战手游,和绝地求生一样吃鸡的手游,使用逍遥安卓模拟器,电脑上大屏幕鼠标键盘操控,比手机屏幕更大,操作更爽. 首先你需要在逍遥安卓 ...

  4. EVE-ng模拟器安装教程和使用教程

    如果您想要EVE镜像的话,请联系作者便可获得. 文章目录 一.EVE-NG模拟器安装教程 二.EVE-ng模拟器使用教程 提前安装好"VMware Workstation Pro" ...

  5. 安卓模拟器按键_横跨了几代人的经典!PSP模拟器深度教程:模拟器系列008

    PSP是一代经典掌机,那时数码产品还未普及,PSP不仅有掌机的游戏的功能,还承担了MP4,MP3和电子书的功能,甚至能在PSP上聊QQ,最终PSP的全球销量为7000多万台,其魅力可见一斑 该平台上的 ...

  6. DJI Flight Simulator 大疆飞行模拟器 安装教程

    DJI Flight Simulator 大疆飞行模拟器 安装教程 大疆公司有一款无人机的飞行模拟器,下面是模拟器的下载教程 首先,到大疆官网的下载中心 点击左边的软件工具,再选择其他软件 找到DJI ...

  7. PacketTracer模拟器物联网教程2—MCU微控制器编程

    PacketTracer模拟器物联网教程2-MCU微控制器编程 注:新版内容已更新,如有需要请点击跳转 注:新版内容已更新,如有需要请点击跳转 一.目的 使用MCU微控制器实现对物联网设备的控制(使用 ...

  8. Fiddler + 海马模拟器转包教程

    Fiddler + 海马模拟器转包教程 转包用来做什么不说了, 整理一下步骤  1.安装Fiddler 下载地址 http://pan.baidu.com/s/18me0A  2.设置Fiddler: ...

  9. android模拟机怎么用,安卓模拟器怎么用?安卓模拟器安装教程

    安卓模拟器怎么用?安卓模拟器安装教程 工具准备 步骤一.首先我们直接下载安卓模拟器(BlueStacks). 大家百度搜索 BlueStacks 即可.第一个就是(带官网标志的那个哦); 步骤二.进入 ...

最新文章

  1. 用反向传导模拟共振并用共振频率作分类
  2. java 使用webmagic 爬虫框架爬取博客园数据
  3. java 装饰器模式
  4. Linux 中的文件锁
  5. Android插件化开发之动态加载的类型
  6. L1-056 猜数字 (20 分)
  7. 海滨学院计算机基础知识,北京交通大学海滨学院计算机基础考试卷-网络应用基础...
  8. Linux之vim编辑器的使用
  9. 惠普计算机图标不在桌面,我的电脑图标没了怎么办
  10. java为什么用咖啡?
  11. ​ClickHouse在手淘流量分析业务实践
  12. java 画笔粗细_Java初学记(四):一个简单的画图程序
  13. 自发光物体能被烘焙之后是否会影响周围的物体
  14. 如何批量给pdf文件命名?
  15. 系统分析师-资料总结-中
  16. AT2565 Chocolate Bar 洛谷
  17. 基于MATLAB车牌图像识别的设计与实现
  18. 数据结构——非线性结构(树与二叉树)
  19. free ebooks: http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books
  20. 中国古代神器 兵器详解

热门文章

  1. 2018教师评职称要可计算机吗,好消息!2018年教师职称评审:这几个变化,你了解了吗?...
  2. python内置模块_python_常用内置模块
  3. 计算机毕业论文选题推荐|软件工程|系列七
  4. P5.js开发之——通过createVideo向页面中添加视频
  5. 双十一豪礼,120份专属礼品免费送!
  6. AcWing算法基础课第一讲(2):高精度加减乘除、前缀和、差分
  7. scratch海底世界 电子学会图形化编程scratch等级考试一级真题和答案解析2020-12
  8. 使用mybatis完成简单的crud操作
  9. 第25讲 时序电路定时与异步交互
  10. 目标程序集不包含服务类型。可能需要调整此程序集的代码访问安全策略