网址导航网站如何做毕节地seo
web/
2025/9/25 17:01:15/
文章来源:
网址导航网站如何做,毕节地seo,主题库 wordpress,php怎么做直播网站吗电力通信规约-104实战
概述 104规约在广泛应用于电力系统远动过程中#xff0c;主要用来进行数据传输和转发#xff0c;本文将结合实际开发实例来讲解104规约的真实使用情况。
实例讲解 因为个人技术栈是Java#xff0c;所以本篇将采用Java实例来进行讲解。首先我们搭建一…电力通信规约-104实战
概述 104规约在广泛应用于电力系统远动过程中主要用来进行数据传输和转发本文将结合实际开发实例来讲解104规约的真实使用情况。
实例讲解 因为个人技术栈是Java所以本篇将采用Java实例来进行讲解。首先我们搭建一个springboot的基础工程引入如下依赖
dependency groupIdorg.openmuc/groupId artifactIdj60870/artifactId version1.7.2/version /dependency 搭建好的项目之后我们进行核心类的设计整体结构如下图所示 接下来我将详细讲解一些这些核心类的作用和核心方法代码的说明首先我们需要实现采集通信连接管理的功能因为我这边使用的技术栈是spring boot要实现在程序启动之后就能够初始化连接这里我通过实现CommandLineRunner接口的方式来实现的。如下是采集通道类中的核心实现代码
for (AppConfig.IEC104ChannelConfig config : appConfig.getIec104channels()) {try {configs.add(config);IDataChannelAppConfig.IEC104ChannelConfig channel new IEC104Channel();channel.init(config);channelMap.put(config.getId(), channel);channelStatusMap.put(config.getId(), false);iec104ChannelList.add((IEC104Channel) channel);} catch (Exception e) {log.warn(failed to create channel:{}, config, e);}
} 这里考虑到多通道的情况所以在此使用了循环初始化的方式来做这里往下具体实现创建连接的方法如下
/*** 创建连接* throws IOException*/
public void connect() throws IOException {try {InetAddress addr InetAddress.getByName(connInfo.host);ClientConnectionBuilder clientConnectionBuilder new ClientConnectionBuilder(addr).setPort(connInfo.port);conn clientConnectionBuilder.connect();conn.setId(config.getId());conn.setMaxMessageInMinutes(config.getMaxMessageInMinute());} catch (Exception e) {logger.warn(failed to connect host: {}, try to connect host2 :{}, connInfo, connInfo2, e);//尝试连接备用地址if (connInfo2 ! null) {logger.info(try to connect backup host: {}, connInfo2);InetAddress addr InetAddress.getByName(connInfo2.host);ClientConnectionBuilder clientConnectionBuilder new ClientConnectionBuilder(addr).setPort(connInfo2.port);conn clientConnectionBuilder.connect();conn.setId(config.getId());conn.setMaxMessageInMinutes(config.getMaxMessageInMinute());} else {throw e;}}
} 上面展示的创建连接的方法有个比较特殊的实现就是备用地址连接的逻辑这里也是根据实际业务来考虑的因为一般发送数据主站会提供两个地址进行主备的考虑这样做的目的为了采集链路的稳定。 项目中还是实现了一个初始化数据的类 InitializeDataManager这个类也需要在程序启动之后初始化的所以也是通过实现CommandLineRunner接口的方式来实现的。做数据采集有一个很重要的环节就是对点通俗来讲就是对方发过来的点位需要转换适配到我们的系统中这里需要初始化我们需要的点位信息所以定义了初始化数据的类。 接下来讲解一下最关键的一个类事件监听器IEC104ClientEventListener的实现首先我们需要实现ConnectionEventListener接口在ConnectionEventListener接口中定义了如下两个方法
public interface ConnectionEventListener {void newASdu(ASdu var1, String var2);void connectionClosed(IOException var1);
} 在IEC104ClientEventListener中重写了这两个方法其中newASdu是监听数据事件的connectionClosed是处理连接关闭事件的。 采集和监听部分设计完成之后我们需要将采集的数据进行业务处理这套系统开发的是采集光伏场站的数据所以设计如下处理任务分别用来采集逆变器集电线的数据 总结 本文讲解了104在光伏场站采集场景中的具体实践案例通过对104程序设计的讲解希望能够帮助我们将104运用到实际场景中。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81729.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!