当前位置:首页 > C++ > IEC104 > 正文内容

基于C++和Qt开发IEC104规约主站调试软件(第五章)

tiandi2025-09-10IEC10432

第五章:IEC104主站调试软件发送总召、时钟同步

基于C++和Qt开发IEC104规约主站调试软件需要综合协议规范、多线程编程和GUI框架知识以及IEC104通讯规约相关知识,以下是分步骤实现方案:
最终成果
IEC104通讯规约知识学习
上一章内容回顾: IEC104主站调试软件遥控、遥调功能


1.主站发送总召唤(0x64)

代码示例

	//从站地址
    int slaveAddr = sendfui->slaveAddrEdit->text().toInt();
	//原因
    QString causeStr = sendfui->causeBox->currentText();
    int l=typeStr.indexOf('(');
    int r = typeStr.indexOf(')');
    int type = typeStr.mid(l+1,r-l-1).toInt();
    typeStr = typeStr.mid(0,l);
    l=causeStr.indexOf('(');
    r = causeStr.indexOf(')');
    int cause = causeStr.mid(l+1,r-l-1).toInt();
    causeStr = causeStr.mid(0,l);
    switch (type) {
    case C_IC_NA_1:
    {//发送总召唤        CS104_Connection_sendInterrogationCommand(m_iec104con,   (CS101_CauseOfTransmission)cause, slaveAddr, IEC60870_QOI_STATION);
        emit showMessageSignal("总召唤",0);
    }
    break;

运行演示
在这里插入图片描述

2.主站发送时钟同步(0x67)

代码示例

 case C_CS_NA_1:
 {
 	//创建时间
 	CP56Time2a newTime = CP56Time2a_createFromMsTimestamp(nullptr, Hal_getTimeInMs()+8*3600*1000);
	//发送时钟同步接口        
	CS104_Connection_sendClockSyncCommand(m_iec104con,slaveAddr,newTime);
    emit showMessageSignal("时钟同步",0);
 }

运行演示
在这里插入图片描述

3.总结

本章主要描述IEC104主站软件发送总召唤、时钟同步功能和部分核心代码。
下期分享IEC104主站调试软件功能按钮(报文解析、报文导出、报文滚动、清空报文)


发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。