IEC60870-5-104项目应用


前言

提示:IEC60870-5-104源码架构详细讲解请参考将军之前的系列文章

IEC60870-5-104 协议广泛应用于电力自动化系统,用于远程监控和控制电力设备。将军将介绍如何在项目中集成 IEC60870-5-104 协议库(lib60870-2.3.2)
关于 IEC60870-5-104 协议详细源码架构请移步👇
IEC60870-5-104 协议源码架构详细分析-CSDN博客


在这里插入图片描述

1.准备工作

在开始集成之前,需要确保开发环境已安装以下工具:
如果使用Java开发集成请确保:
Java Development Kit (JDK):建议使用 JDK 8 及以上版本。
Apache Maven:用于项目管理和构建。
也可集成到C++项目中:
lib60870-2.3.2 库:可以从官方仓库下载。
将库集成到项目中。

2.实现步骤

要通过集成的IEC104协议库实现IEC104服务器(Slave),可以按照以下步骤进行操作。以下是将军基于IEC104协议源码总结的:

2.1引入必要的库和头文件

在实现IEC104服务器时,需要包含相关的库和头文件,这些库提供了IEC104协议的基本功能和操作:
示例:

1.#include "cs104_slave.h"  
2.#include "hal_thread.h"  
3.#include "hal_time.h"  

2.2创建服务器实例

使用CS104_Slave_create函数创建一个服务器实例,传递所需的参数,比如消息队列的大小:
示例:

1.CS104_Slave slave = CS104_Slave_create(10, 10);   

第一个参数是发送队列的大小,第二个参数是接收队列的大小。

2.3配置服务器的本地地址

通过CS104_Slave_setLocalAddress函数设置服务器的本地地址。通常可以设置为"0.0.0.0",表示不指定特定的IP地址。
示例:

1.CS104_Slave_setLocalAddress(slave, "0.0.0.0");  

2.4设置服务器模式

使用CS104_Slave_setServerMode设置服务器工作模式。可以选择单冗余组模式或其他模式。代码中使用的是单冗余组模式:
示例:

1.CS104_Slave_setServerMode(slave, CS104_MODE_SINGLE_REDUNDANCY_GROUP);  

2.5获取应用层和连接参数

使用CS104_Slave_getAppLayerParameters获取应用层参数,CS104_Slave_getConnectionParameters获取连接参数。这些参数用于后续创建ASDU(应用服务数据单元)和调整连接行为。
示例:

1.CS101_AppLayerParameters alParams = CS104_Slave_getAppLayerParameters(slave);  
2.CS104_APCIParameters apciParams = CS104_Slave_getConnectionParameters(slave);  

2.6配置回调函数

在IEC104协议中,服务器需要处理多种请求,例如时钟同步、查询命令、ASDU消息等。通过设置回调函数来处理这些请求。

2.6.1时钟同步处理:

CS104_Slave_setClockSyncHandler设置时钟同步命令的回调函数。
示例:

1.CS104_Slave_setClockSyncHandler(slave, clockSyncHandler, NULL);  

2.6.2查询命令处理:

CS104_Slave_setInterrogationHandler设置查询命令的回调函数。
示例:

1.CS104_Slave_setInterrogationHandler(slave, interrogationHandler, NULL);

2.6.3ASDU消息处理:

CS104_Slave_setASDUHandler设置ASDU类型消息的回调函数。
示例:

1.CS104_Slave_setASDUHandler(slave, asduHandler, NULL);  

2.6.4连接请求处理:

CS104_Slave_setConnectionRequestHandler设置处理连接请求的回调函数。
示例:

1.CS104_Slave_setConnectionRequestHandler(slave, connectionRequestHandler, NULL);  

2.6.5连接事件处理:

CS104_Slave_setConnectionEventHandler设置连接事件的回调函数。
示例:

1.CS104_Slave_setConnectionEventHandler(slave, connectionEventHandler, NULL);  

2.7启动服务器服务

使用CS104_Slave_start启动服务器服务。启动后服务器将开始监听并响应来自主站的请求。
示例:

1.CS104_Slave_start(slave);  

通过CS104_Slave_isRunning检查服务器是否成功启动。
示例:

1.if (CS104_Slave_isRunning(slave) == false) {  

2.    printf("Starting server failed!\n");  
3.    goto exit_program;  
4.}  

2.8循环任务

在循环任务中,可以周期性地生成ASDU并将其发送到主站。例如,周期性发送一个测量值对象:
其中:
CS101_ASDU_create用于创建一个新的ASDU。
CS104_Slave_enqueueASDU将ASDU添加到服务器的事件队列。
示例:

1.CS101_ASDU newAsdu = CS101_ASDU_create(alParams, false, CS101_COT_PERIODIC, 0, 1, false, false);  
2.CS104_Slave_enqueueASDU(slave, newAsdu); 

2.9停止服务器服务

当需要停止服务器时,调用CS104_Slave_stop停止服务,并销毁服务器实例:
示例:

1.CS104_Slave_stop(slave);  
2.CS104_Slave_destroy(slave);  

2.10信号处理
通过捕获Ctrl+C信号(SIGINT)来控制服务器的停止。当收到中断信号时,将running标志设置为false,从而退出循环任务。
示例:

1.signal(SIGINT, sigint_handler);   

总结

实现一个IEC104服务器的关键步骤包括:
① 创建服务器实例,设置连接参数和工作模式。
② 设置回调函数,处理各种IEC104协议请求。
③ 启动服务器,并在循环任务中周期性处理消息和发送数据。
④ 处理连接和事件,根据需要发送响应。
⑤ 停止服务器服务,并释放相关资源。
通过以上步骤,便可以使用集成的IEC104协议库实现一个功能完整的IEC104服务器。

我是将军我一直都在,。!

IEC 60870 part 5 [1] is one of the IEC 60870 set of standards which define systems used for telecontrol (supervisory control and data acquisition) in electrical engineering and power system automation applications. Part 5 provides a communication profile for sending basic telecontrol messages between two systems, which uses permanent directly connected data circuits between the systems. The IEC Technical Committee 57 (Working Group 03) have developed a protocol standard for telecontrol, teleprotection, and associated telecommunications for electric power systems. The result of this work is IEC 60870-5. Five documents specify the base IEC 60870-5: IEC 60870-5-1 Transmission Frame Formats IEC 60870-5-2 Data Link Transmission Services IEC 60870-5-3 General Structure of Application Data IEC 60870-5-4 Definition and Coding of Information Elements IEC 60870-5-5 Basic Application Functions IEC 60870-5-6 Guidelines for conformance testing for the IEC 60870-5 companion standards IEC TS 60870-5-7 Security extensions to IEC 60870-5-101 and IEC 60870-5-104 protocols (applying IEC 62351) The IEC Technical Committee 57 has also generated companion standards: IEC 60870-5-101 Transmission Protocols - companion standards especially for basic telecontrol tasks IEC 60870-5-102 Transmission Protocols - Companion standard for the transmission of integrated totals in electric power systems (this standard is not widely used) IEC 60870-5-103 Transmission Protocols - Companion standard for the informative interface of protection equipment IEC 60870-5-104 Transmission Protocols - Network access for IEC 60870-5-101 using standard transport profiles IEC TS 60870-5-601 Transmission protocols - Conformance test cases for the IEC 60870-5-101 companion standard IEC TS 60870-5-604 Conformance test cases for the IEC 60870-5-104 companion standard IEC 60870-5-101/102/103/104 are companion standards generated for basic telecontrol tasks, transmission of integrated totals, data exchange from protection equipment & network access of IEC101 respectively.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值