-
大小: 18.95MB文件類型: .rar金幣: 2下載: 1 次發(fā)布日期: 2023-08-05
- 語言: 其他
- 標(biāo)簽: 104規(guī)約??Qt??client??
資源簡介
IEC 60870-5-104是電力變電站數(shù)據(jù)采集和控制的常用協(xié)議。基于Qt5實現(xiàn)104規(guī)約的client。
代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?“iec104_class.h“
using?namespace?std;
iec104_class::iec104_class()
{
????strncpy(?slaveIP?““?20?);
????Port?=?2404;
????msg_supervisory?=?true;
????seq_order_check?=?true;
????connectedTCP?=?false;
????tout_startdtact?=?-1;
????tout_supervisory?=?-1;
????tout_testfr?=?-1;
????tout_gi?=?-1;
????VS?=?0;
????VR?=?0;
????TxOk?=?false;
????masterAddress?=?0;
????slaveAddress?=?0;
????GIobjectCnt?=?0;
}
void?iec104_class::disableSequenceOrderCheck()
{
????seq_order_check?=?false;
}
int?iec104_class::getPortTCP()
{
????return?Port;
}
void?iec104_class::setPortTCP(?unsigned?port?)
{
????Port?=?port;
}
void?iec104_class::setSecondaryIP(char?*?ip)
{
????strncpy(?slaveIP?ip?20?);
}
char?*?iec104_class::getSecondaryIP()
{
????return?slaveIP;
}
void?iec104_class::setSecondaryAddress(int?addr)
{
????slaveAddress?=?addr;
}
int?iec104_class::getSecondaryAddress()
{
????return?slaveAddress;
}
void?iec104_class::setPrimaryAddress(int?addr)
{
????masterAddress?=?addr;
}
int?iec104_class::getPrimaryAddress()
{
????return?masterAddress;
}
void?iec104_class::onConnectTCP()
{
????connectedTCP?=?true;
????TxOk?=?false;
????VS?=?0;
????VR?=?0;
????mLog.pushMsg(“***?TCP?CONNECT!“);
????sendStartDTACT();
}
void?iec104_class::onDisconnectTCP()
{
????connectedTCP?=?false;
????tout_startdtact?=?-1;
????tout_supervisory?=?-1;
????tout_gi?=?-1;
????TxOk?=?false;
????mLog.pushMsg(“***?TCP?DISCONNECT!“);
}
void?iec104_class::onTimerSecond()
{
????iec_apdu?apdu;
????static?unsigned?int?cnts?=?1;
????cnts++;
????if?(?!?(cnts?%?5)?)
????????if?(?!connectedTCP?)
????????????connectTCP();
????if?(connectedTCP)
????{
????????if?(?tout_startdtact?>?0?)
????????????tout_startdtact--;
????????if?(?tout_startdtact==0?)??//?timeout?of?startdtact:?retry
????????????sendStartDTACT();
????????if?(?tout_gi?>?0?)
??????????{
????????????tout_gi--;
????????????if?(?tout_gi?==?0?)
??????????????solicitGI();
??????????}
????????if?(msg_supervisory)
????????{
????????if?(tout_supervisory?>?0)
??????????tout_supervisory--;
????????if?(tout_supervisory?>?0)
??????????tout_supervisory--;
????????if?(tout_supervisory?==?0)
??????????{
???????????tout_supervisory?=?-1;
???????????sendSupervisory();
??????????}
????????}
????}
????//?if?connected?and?no?data?received?send?TESTFRACT
????if?(?connectedTCP?&&?TxOk?)
????{
????????if?(?tout_testfr?>?0?)
??????????{
????????????tout_testfr--;
????????????if?(?tout_testfr?==?0?)
????????????{
????????????????apdu.start?=?START;
????????????????apdu.length?=?4;
????????????????apdu.NS?=?TESTFRACT;
????????????????apdu.NR?=?0;
????????????????sendTCP((char?*)&apdu?6);
????????????????mLog.pushMsg(“<--?TESTFRACT“);
????????????}
??????????}
????}
}
void?iec104_class::solicitGI()
{
????iec_apdu?wapdu;
????wapdu.start?=?START;
????wapdu.length?=?0x0E;
????wapdu.NS?=?VS;
????wapdu.NR?=?VR;
????wapdu.asduh.type?=?INTERROGATION;
???
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????21153??2016-04-22?10:21??IEC104\bdtr.h
?????文件?????151864??2018-11-14?17:43??IEC104\debug\iec104_class.o
?????文件?????151954??2018-11-14?17:43??IEC104\debug\logmsg.o
?????文件?????552190??2018-11-14?17:43??IEC104\debug\main.o
?????文件?????896540??2018-11-14?17:43??IEC104\debug\mainwindow.o
?????文件???????6726??2018-11-14?17:43??IEC104\debug\moc_mainwindow.cpp
?????文件?????541301??2018-11-14?17:43??IEC104\debug\moc_mainwindow.o
?????文件???????9895??2018-11-14?17:43??IEC104\debug\moc_predefs.h
?????文件??????10302??2018-11-14?17:43??IEC104\debug\moc_qiec104.cpp
?????文件?????403661??2018-11-14?17:43??IEC104\debug\moc_qiec104.o
?????文件?????386729??2018-11-14?17:43??IEC104\debug\qiec104.o
?????文件????2821766??2018-11-14?17:43??IEC104\debug\QTester104.exe
?????文件???????2279??2016-04-22?10:21??IEC104\iec104.h
?????文件????????486??2016-04-22?10:21??IEC104\IEC104.pro
?????文件??????23765??2018-11-14?18:04??IEC104\IEC104.pro.user
?????文件???????7931??2018-11-14?17:42??IEC104\IEC104.pro.user.2.1pre1
?????文件??????52929??2018-11-14?17:50??IEC104\iec104_class.cpp
?????文件???????9420??2016-04-22?10:21??IEC104\iec104_class.h
?????文件??????14697??2016-04-22?10:21??IEC104\iec104_types.h
?????文件??????35141??2016-04-22?10:21??IEC104\LICENSE
?????文件???????3280??2016-04-22?10:21??IEC104\logmsg.cpp
?????文件???????2121??2016-04-22?10:21??IEC104\logmsg.h
?????文件????????183??2018-11-14?17:50??IEC104\main.cpp
?????文件??????29920??2018-11-14?17:50??IEC104\mainwindow.cpp
?????文件???????4634??2016-04-22?10:21??IEC104\mainwindow.h
?????文件???????7230??2016-04-22?10:21??IEC104\mainwindow.ui
?????文件??????29361??2018-11-14?17:43??IEC104\Makefile
?????文件??????68188??2018-11-14?17:43??IEC104\Makefile.Debug
?????文件??????68318??2018-11-14?17:43??IEC104\Makefile.Release
?????文件???????4574??2016-04-22?10:21??IEC104\qiec104.cpp
............此處省略11個文件信息
評論
共有 條評論