iec104协议 java_GitHub - delikely/IEC104_microgrid: iec104协议主站客户端程序,属于微电网管理系统一部分...-程序员宅基地

技术标签: iec104协议 java  

IEC104_microgrid

iec104协议主站客户端程序,属于微电网管理系统一部分

一 IEC104协议介绍

1 IEC104简要说明

IEC104是一种基于TCP/IP的电力行业通信协议,主要用于数据远程监控等功能。通信有一般有主要发送数据、接收命令的从站服务端和接收数据、发送命令的主站客户端构成。采用应答式数据传输,一般上行数据为遥信、遥测,下行信息为遥控、遥调。

2 IEC104帧格式

IEC104的通用帧格式如图

IEC104%E5%B8%A7%E6%A0%BC%E5%BC%8F.png

其中APCI为控制信息部分,ASDU为存储数据单元,APDU为长度等于APCI+ASDU-2,即减去起始字节和APDU长度字节。

IEC104有3种帧格式,分别为U帧即控制报文帧、S帧即监视帧和I帧即信息传输帧。

1)U帧:只包括APCI部分,主要有启动帧、停止帧、测试帧。U帧具体格式如图

fb6465a6e8e89320387dd4ded8e8a279.png

2)S帧:只包含APCI部分。S帧格式如图

42ce4528c754caa8d2806ccc7aee4bd9.png

3)I帧:包含APCI+APDU部分。I帧格式如图

65ab969d8b0752bea5081d8ce958c8cb.png

发送序号和接收序列号是保证数据完整性的条件。

类型标识定义发送数据的格式。

可变结构体定义发送数据信息是有序还是无序,有序即一个信息体地址,元素的对应地址会在此信息地址基础上依次加1。无序即1个地址对应一个元素。

传输原因定义记录传送的原因,用以对传输数据进行归类。

3 IEC104规约流程

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

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

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

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

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

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

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

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

二 IEC104通信主站程序总体设计实现

根据项目需求和IEC104通信规约设计&#

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33278577/article/details/114861798

智能推荐

VS2019生成一个Mydll.DLL并用另一个mytest.exe调用(静态)。_vs2019生成dll-程序员宅基地

文章浏览阅读1k次。VS2019生成一个Mydll.DLL并用另一个mytest.exe调用(静态)。_vs2019生成dll

【python】获取某一天是星期几_python 读取星期几报错-程序员宅基地

文章浏览阅读2.1k次,点赞2次,收藏6次。方法一:import re;import time;import datetime;anyday=datetime.datetime(2019,12,11).strftime("%w")print anyday方法二:from datetime import datetimedayOfWeek = datetime.now().isoweekday() ###返回数字1-7代..._python 读取星期几报错

2020年毕业生腾讯校园招聘提前批——后台开发——面试经验——分享给大家交流经验。_腾讯2020秋招提前批-程序员宅基地

文章浏览阅读5k次,点赞9次,收藏11次。个人博客地址:代码集结地,点击访问我的个人博客,不定时发布各种信息嘻嘻。前言:本人现在也已经大三下学期了,从大一下学到现在,也算是学了两年的编程,间间断断学过很多编程知识,C语言能说掌握有点自大,但是毕竟很经常使用STM32,所以也不差。掌握的很好的有Python、LinuxShell(Bash)、Django(Python的一个WEB框架)、爬虫(使用Python的requests和..._腾讯2020秋招提前批

activiti6.0(二)节点处理人_activiti6 用户处理人 和候选人 表达式-程序员宅基地

文章浏览阅读3.2k次,点赞2次,收藏8次。1. 候选人和处理人候选人:candidateUser 处理人,指派人:assignee一个task可以有多个候选人,但是只能有一个处理人activiti6.0的数据库表结构中 ,identityLink表保存用户和task之间一对多的候选关系。处理人assignee直接是task表中的一个字段通常情况下,系统根据流程的定义,自动为一个task指定候选人。比如..._activiti6 用户处理人 和候选人 表达式

数据结构与算法分析——java语言描述第三版图论部分java实现,使用邻接表实现图论相关算法。_《数据结构与算法分析:java语言描述》中的代码-程序员宅基地

文章浏览阅读442次,点赞3次,收藏2次。这篇文章是笔者,学习《数据结构与算法分析——java语言描述第三版》一书的第九章图论部分,根据书中的提示加上自己的理解,编写的源代码。注意点:1.使用HashMap + LinkedList的方式来实现邻接表。2.实现了广度优先搜索,及其应用(无圈图中的单源最短路径问题,关键路径分析),深度优先搜索及其应用(无向图中的割点寻找)3.后续还会陆续更新第九章的其他问题。import java.util..._《数据结构与算法分析:java语言描述》中的代码

jquery.js:5 Uncaught TypeError: Illegal invocation_jquery.min.js:5 uncaught typeerror: illegal invoca-程序员宅基地

文章浏览阅读906次。jquery.js:5 Uncaught TypeError: Illegal invocation解决String与Long类型转换注意:不然mapper不能识别!正确写法:Long.parseLong(xxx)_jquery.min.js:5 uncaught typeerror: illegal invocation

随便推点

统计学方法&机器学习实战(四) 朴素贝叶斯算法_multinamialnb方法-程序员宅基地

文章浏览阅读1.1k次。理论难点:理论知识强烈推荐看Jack Cui 真是讲得非常好,理论也太通俗了。这部分实现难点:_multinamialnb方法

Linux/Android之获取当前进程ID/进程名/进程路径(十六)_android获取当前进程pid-程序员宅基地

文章浏览阅读3.4k次。【代码】Linux/Android之获取当前进程ID/进程名/进程路径(十六)_android获取当前进程pid

CentOS 6.5安装配置Cacti_centos6.5下cacti服务器安装-程序员宅基地

文章浏览阅读1.2k次。CentOS 6.5安装配置Cacti 一、安装http + php + mysql 环境[root@test ~]# yum -y install httpd mysql mysql-server php php-mysqlphp-mbstring mysql-devel wget 二、安装依赖包 [root@test ~]# yum -y install net-snmpnet-snmp-d..._centos6.5下cacti服务器安装

[软件下载]Skype for Windows 1.1.0.81 Beta_skypebeta-程序员宅基地

文章浏览阅读1.8k次。Skype 是一种简单的免费软件,使您能够在数分钟之内在世界上的任何角落拨打免费电话。 Skype 是 KaZaA 开发人员的又一杰作,它使用全新的 P2P(对等)技术将您与其他 Skype 用户相连接。 如果您已厌倦支付极不合理的电话服务费,那么 Skype 是您的解决之道! Skype可以快速简便地装入您的电脑。 您只需下载并注册,在数分钟之内,您便可以使用 PC 耳机通过 Sky_skypebeta

关于SpringBoot 2.0,Pageable 无法注入,提示缺少默认构造方法的解决办法_spring boot 2.0构造其注入失败-程序员宅基地

文章浏览阅读207次。关于SpringBoot 2.0,Pageable 无法注入,提示缺少默认构造方法的解决办法_spring boot 2.0构造其注入失败

Failed with exception MetaException(message:javax.jdo.JDODataStoreException: Error(s) were found whi...-程序员宅基地

文章浏览阅读527次。hive (db_emp)> load data local inpath '/opt/datas/emp.txt' into table emp_part partition(`date`='2018120');在加载数据到HDFS上时,报错:Failed with exception MetaException(message:javax.jdo.JDODataStoreExce..._failed with exception metaexception