1、描述

服务器端使用InterrogationHandler回调函数来处理Interrogation请求。根据QOI(询问限定符)的值,返回不同的信息对象。对于一个简单的系统,仅处理 总查询 请求就足够了(QOI = 20)。QOI值21-36用于询问组(1-16)。由从属实施者将信息对象分配给询问组。
服务器用ACT_CON响应响应来自客户端的ACTIVATION请求,然后是ASDU,其中ASDU包含代表站质询或COT的信息对象,其中CS101_COT_INTERROGATED_BY_STATION代表相应的质询组(例如,质询组1的CS101_COT_INTERROGATED_BY_GROUP_1)。发送完所有信息对象后,服务器必须发送初始查询命令消息,其中COT = CS101_COT_ACTIVATION_TERMINATION,以指示查询数据的传输已完成。
2、代码
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 协议对总查询的处理相关推荐

  1. 5G缩略语 (TS38.101/104/211/212/213/214/300)

    胡郝文 5G通信技术 5G通信技术 微信号 Five_G_WHH 功能介绍 发布最新移动通信运营态势,5G通信标准规范和技术研究成果,业内专家观点和产业观察. http://mp.weixin.qq. ...

  2. 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. ...

  3. LeetCode简单题目(二叉树相关)(#100 #101 #104 #107 #108 #110 #111 #112)-8道

    leetcode题库中共有350道简单题目. 本文记录已解决的题目和代码. 本文中的序号是leetcode题目中的真实序号. 文章目录 100 相同的树 描述 代码 更好的解法 101 对称二叉树 描 ...

  4. 104协议格式简单介绍

    APDU = APCI + ASDU APCI:应用规约控制信息(由起始字符+数据长度+控制域) ASDU:应用服务数据单元(数据格式) APDU:应用规约数据单元 启动字符68H定义了数据流中的起点 ...

  5. HTTP协议状态码查询,详解(200、206、500、416、403、404)

    1XX 信息性状态码 这些状态码是HTTP 1.1引入的. 对于这些状态码的价值还存在争论 (我个人从来没见过这些状态码, 也没有理解这些状态码.) 2XX 成功状态码 客户端发起请求时, 这些请求通 ...

  6. 自适应col自动换行显示_10kV配网自适应综合型馈线自动化技术的测试问题及解决措施...

    馈线自动化技术作为10kV配网线路中最重要的技术之一,它有效提高配电网的供电质量,保证供电的可靠性.科大智能电气技术有限公司的研究人员秦明辉.葛林.陈雷刚,在2020年第6期<电气技术>杂 ...

  7. 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 介绍 ...

  8. 工业控制系统协议的安全性

    工业控制系统协议的安全性 工业控制系统 (ICS)广泛应用于电力.油气.市政.水利.铁路.化工.制造业等行业 的数据采集与监视控制.针对 ICS 的安全问题进行研究,要求我们对 ICS 的网络操作具有 ...

  9. 制作IEC101/104报文解析工具

    文章目录 准备 一.IEC101/104协议 二.制作解析工具步骤 1.建立协议族 2.建立协议 3.建立术语 4.建立报文块 5.建立报文解析规则 总结 准备 这里是基于<在线解析二进制报文& ...

最新文章

  1. 使用PVRTexTool压缩纹理的基本用法
  2. 进击的YOLOv3,目标检测网络的巅峰之作 | 内附实景大片
  3. 使用ABBYY FineReader进行自动图像预处理
  4. sql语句的备份(导入、导出)
  5. maven 打包失败 提示找不到jar的问题
  6. Microsoft Visual Studio 2005 多线程时 解决不是该线程创建的来访问
  7. 区块链发展迎来新机遇
  8. 2010年下半年11月份系统架构设计师上午试题以及参考答案之六
  9. 三角形边长求高的c语言函数公式,三角形边长计算公式
  10. 什么是有氧运动?什么是无氧运动?哪个减肥效果更好?
  11. 基于4G路由器的救护车联网方案:生命,刻不容缓
  12. gvim 安装pathogen
  13. 简单的手电筒程序(基于Camera类实现)
  14. 《小窗幽记》卷六 集景
  15. C++缺省参数函数简介和使用
  16. wms地图绘制工具_地图空间分析工具MapViewer下载-地图空间分析(MapViewer)下载v8.4.406 官方版-西西软件下载...
  17. C#:Krypton控件使用方法详解(第十六讲) ——kryptonCheckedListBox
  18. 51单片机模拟电梯控制(含完整代码)
  19. python语法格式
  20. service、servlet和WebService三者之间的关系

热门文章

  1. 淘宝CSV每个字段的数据容量原来有限制的
  2. python 社区网络转化_python-将numpy打开网格转换为坐标
  3. vue中pdf预览组件_Vue+ElementUI使用vue-pdf实现预览功能
  4. composer安装特别慢的解决方案
  5. MSP432P401R TI Drivers 库函数学习笔记(一)导入工程模板
  6. python中使用sys模板和logging模块获取行号和函数名的方法
  7. 数万字的0基础React知识大纲一定要藏藏好
  8. [html] 开发静态页面时,不依赖node相关的工具,如何提取出公共部分并引入?
  9. [html] HTML5如何监听video的全屏和退出全屏?
  10. [css] 用css3画出一个立体魔方