lib60870-IEC 60870-5-101 / 104 协议对总查询的处理
1、描述
static bool
interrogationHandler(void* parameter, IMasterConnection connection, CS101_ASDU asdu, uint8_t qoi)
{printf("Received interrogation for group %i\n", qoi);if (qoi == 20) { /* only handle station interrogation *//*! 1、响应client的 CS101_COT_ACTIVATION 请求 */CS101_AppLayerParameters alParams = IMasterConnection_getApplicationLayerParameters(connection);IMasterConnection_sendACT_CON(connection, asdu, false);/* The CS101 specification only allows information objects without timestamp in GI responses *//*! 2、发送ASDU, 其中COT设置为CS101_COT_INTERROGATED_BY_STATION,从站总召 *//*! 以下用M_ME_NB_1(MeasuredValueScaled_create),创建三个点对数据,分别为(100,-1),(101,23),(102,2300) */CS101_ASDU newAsdu = CS101_ASDU_create(alParams, false, CS101_COT_INTERROGATED_BY_STATION, 0, 1, false, false);InformationObject io = (InformationObject) MeasuredValueScaled_create(NULL, 100, -1, IEC60870_QUALITY_GOOD);CS101_ASDU_addInformationObject(newAsdu, io);CS101_ASDU_addInformationObject(newAsdu, (InformationObject)MeasuredValueScaled_create((MeasuredValueScaled) io, 101, 23, IEC60870_QUALITY_GOOD));CS101_ASDU_addInformationObject(newAsdu, (InformationObject)MeasuredValueScaled_create((MeasuredValueScaled) io, 102, 2300, IEC60870_QUALITY_GOOD));/*! 发送 三个M_ME_NB_1数据 */InformationObject_destroy(io);IMasterConnection_sendASDU(connection, newAsdu);CS101_ASDU_destroy(newAsdu);/*! 以下用M_SP_NA_1(SinglePointInformation_create),创建2个数据,分别为(104,true),(104,false) */newAsdu = CS101_ASDU_create(alParams, false, CS101_COT_INTERROGATED_BY_STATION,0, 1, false, false);io = (InformationObject) SinglePointInformation_create(NULL, 104, true, IEC60870_QUALITY_GOOD);CS101_ASDU_addInformationObject(newAsdu, io);CS101_ASDU_addInformationObject(newAsdu, (InformationObject) SinglePointInformation_create((SinglePointInformation) io, 105, false, IEC60870_QUALITY_GOOD));/*! 发送两个M_SP_NA_1数据 */ InformationObject_destroy(io);IMasterConnection_sendASDU(connection, newAsdu);CS101_ASDU_destroy(newAsdu);/*! 以下用M_SP_NA_1(SinglePointInformation_create),创建8个数据 */newAsdu = CS101_ASDU_create(alParams, true, CS101_COT_INTERROGATED_BY_STATION,0, 1, false, false);CS101_ASDU_addInformationObject(newAsdu, io = (InformationObject) SinglePointInformation_create(NULL, 300, true, IEC60870_QUALITY_GOOD));CS101_ASDU_addInformationObject(newAsdu, (InformationObject) SinglePointInformation_create((SinglePointInformation) io, 301, false, IEC60870_QUALITY_GOOD));CS101_ASDU_addInformationObject(newAsdu, (InformationObject) SinglePointInformation_create((SinglePointInformation) io, 302, true, IEC60870_QUALITY_GOOD));CS101_ASDU_addInformationObject(newAsdu, (InformationObject) SinglePointInformation_create((SinglePointInformation) io, 303, false, IEC60870_QUALITY_GOOD));CS101_ASDU_addInformationObject(newAsdu, (InformationObject) SinglePointInformation_create((SinglePointInformation) io, 304, true, IEC60870_QUALITY_GOOD));CS101_ASDU_addInformationObject(newAsdu, (InformationObject) SinglePointInformation_create((SinglePointInformation) io, 305, false, IEC60870_QUALITY_GOOD));CS101_ASDU_addInformationObject(newAsdu, (InformationObject) SinglePointInformation_create((SinglePointInformation) io, 306, true, IEC60870_QUALITY_GOOD));CS101_ASDU_addInformationObject(newAsdu, (InformationObject) SinglePointInformation_create((SinglePointInformation) io, 307, false, IEC60870_QUALITY_GOOD));/*! 发送8个数据 */InformationObject_destroy(io);IMasterConnection_sendASDU(connection, newAsdu);CS101_ASDU_destroy(newAsdu);/*! 增加其他响应数据*//*! 结束响应必须发送 CS101_COT_ACTIVATION_TERMINATION */IMasterConnection_sendACT_TERM(connection, asdu);}else {IMasterConnection_sendACT_CON(connection, asdu, true);}return true;
}
3、应用
服务器端处理研制的集群广域控制器的总召数据,采用M_ME_NC_1,短浮点遥测值,不带时标,带品质描述,调用MeasuredValueShort_create创建io。
CS101_ASDU CS101_ASDU_create(CS101_AppLayerParameters parameters,(应用层参数)bool isSequence,(序列)CS101_CauseOfTransmission cot,(传送原因)int oa,(消息对象地址)int ca(应用服务数据单元公共地址),bool isTest, (是否测试帧)bool isNegative);
/*! 以下用M_ME_NC_1(MeasuredValueShort_create),创建4个数据 */newAsdu = CS101_ASDU_create(alParams, true, CS101_COT_INTERROGATED_BY_STATION, 0, 1, false, false);CS101_ASDU_addInformationObject(newAsdu, (InformationObject)MeasuredValueShort_create((MeasuredValueShort) io, 6000, 6010.1, IEC60870_QUALITY_GOOD));CS101_ASDU_addInformationObject(newAsdu, (InformationObject)MeasuredValueShort_create(( MeasuredValueShort) io, 6001, 6011.1, IEC60870_QUALITY_GOOD));CS101_ASDU_addInformationObject(newAsdu, (InformationObject)MeasuredValueShort_create(( MeasuredValueShort) io, 6001, 6012.1, IEC60870_QUALITY_GOOD));CS101_ASDU_addInformationObject(newAsdu, (InformationObject)MeasuredValueShort_create(( MeasuredValueShort) io, 6003, 6013.1, IEC60870_QUALITY_GOOD));/*! 发送8个数据 */InformationObject_destroy(io);IMasterConnection_sendASDU(connection, newAsdu);CS101_ASDU_destroy(newAsdu);
lib60870-IEC 60870-5-101 / 104 协议对总查询的处理相关推荐
- 5G缩略语 (TS38.101/104/211/212/213/214/300)
胡郝文 5G通信技术 5G通信技术 微信号 Five_G_WHH 功能介绍 发布最新移动通信运营态势,5G通信标准规范和技术研究成果,业内专家观点和产业观察. http://mp.weixin.qq. ...
- java103 101 104 101_编写一个java程序将100,101,102,103,104,105这6个数以数组的形式写入到D:\\test.t...
展开全部 你问的不明白,我在代码里给你写了,你自己看吧 import java.io.FileWriter; import java.io.IOException; import java.util. ...
- LeetCode简单题目(二叉树相关)(#100 #101 #104 #107 #108 #110 #111 #112)-8道
leetcode题库中共有350道简单题目. 本文记录已解决的题目和代码. 本文中的序号是leetcode题目中的真实序号. 文章目录 100 相同的树 描述 代码 更好的解法 101 对称二叉树 描 ...
- 104协议格式简单介绍
APDU = APCI + ASDU APCI:应用规约控制信息(由起始字符+数据长度+控制域) ASDU:应用服务数据单元(数据格式) APDU:应用规约数据单元 启动字符68H定义了数据流中的起点 ...
- HTTP协议状态码查询,详解(200、206、500、416、403、404)
1XX 信息性状态码 这些状态码是HTTP 1.1引入的. 对于这些状态码的价值还存在争论 (我个人从来没见过这些状态码, 也没有理解这些状态码.) 2XX 成功状态码 客户端发起请求时, 这些请求通 ...
- 自适应col自动换行显示_10kV配网自适应综合型馈线自动化技术的测试问题及解决措施...
馈线自动化技术作为10kV配网线路中最重要的技术之一,它有效提高配电网的供电质量,保证供电的可靠性.科大智能电气技术有限公司的研究人员秦明辉.葛林.陈雷刚,在2020年第6期<电气技术>杂 ...
- lib60870-IEC 60870-5-101 / 104 C源代码库用户指南-版本2.3.0--第一部分
lib60870-IEC 60870-5-101 / 104 C源代码库用户指南-版本2.3.0--第一部分 https://github.com/mz-automation/lib60870 介绍 ...
- 工业控制系统协议的安全性
工业控制系统协议的安全性 工业控制系统 (ICS)广泛应用于电力.油气.市政.水利.铁路.化工.制造业等行业 的数据采集与监视控制.针对 ICS 的安全问题进行研究,要求我们对 ICS 的网络操作具有 ...
- 制作IEC101/104报文解析工具
文章目录 准备 一.IEC101/104协议 二.制作解析工具步骤 1.建立协议族 2.建立协议 3.建立术语 4.建立报文块 5.建立报文解析规则 总结 准备 这里是基于<在线解析二进制报文& ...
最新文章
- 使用PVRTexTool压缩纹理的基本用法
- 进击的YOLOv3,目标检测网络的巅峰之作 | 内附实景大片
- 使用ABBYY FineReader进行自动图像预处理
- sql语句的备份(导入、导出)
- maven 打包失败 提示找不到jar的问题
- Microsoft Visual Studio 2005 多线程时 解决不是该线程创建的来访问
- 区块链发展迎来新机遇
- 2010年下半年11月份系统架构设计师上午试题以及参考答案之六
- 三角形边长求高的c语言函数公式,三角形边长计算公式
- 什么是有氧运动?什么是无氧运动?哪个减肥效果更好?
- 基于4G路由器的救护车联网方案:生命,刻不容缓
- gvim 安装pathogen
- 简单的手电筒程序(基于Camera类实现)
- 《小窗幽记》卷六 集景
- C++缺省参数函数简介和使用
- wms地图绘制工具_地图空间分析工具MapViewer下载-地图空间分析(MapViewer)下载v8.4.406 官方版-西西软件下载...
- C#:Krypton控件使用方法详解(第十六讲) ——kryptonCheckedListBox
- 51单片机模拟电梯控制(含完整代码)
- python语法格式
- service、servlet和WebService三者之间的关系
热门文章
- 淘宝CSV每个字段的数据容量原来有限制的
- python 社区网络转化_python-将numpy打开网格转换为坐标
- vue中pdf预览组件_Vue+ElementUI使用vue-pdf实现预览功能
- composer安装特别慢的解决方案
- MSP432P401R TI Drivers 库函数学习笔记(一)导入工程模板
- python中使用sys模板和logging模块获取行号和函数名的方法
- 数万字的0基础React知识大纲一定要藏藏好
- [html] 开发静态页面时,不依赖node相关的工具,如何提取出公共部分并引入?
- [html] HTML5如何监听video的全屏和退出全屏?
- [css] 用css3画出一个立体魔方