基于C++和Qt开发IEC104规约主站调试软件(第五章)
第五章: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主站调试软件功能按钮(报文解析、报文导出、报文滚动、清空报文)