• 大小: 18.95MB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2023-08-05
  • 语言: 其他
  • 标签: 104规约  Qt  client  

资源简介

IEC 60870-5-104是电力变电站数据采集和控制的常用协议。基于Qt5实现104规约的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个文件信息

评论

共有 条评论