-Possibilité d'émettre des rangs invalide en mode entretien (compilation spéciale seulement avec #define COMPILE_MODBUS_TEST_MODE). -Correction de la valeur du flag de mise à jour de l'heure. -Implémentation du flag d'itinéraire principal/secondaire dans la trame Modbus -Possibilité d'inhiber le watchdog Modbus à partir du mode entretien.
83 lines
2.1 KiB
C++
83 lines
2.1 KiB
C++
#ifndef CMODBUSSLAVE_H
|
|
#define CMODBUSSLAVE_H
|
|
|
|
#include <QObject>
|
|
#include "ModbusBackend.h"
|
|
#include <QTcpServer>
|
|
#include "ModbusRepository.h"
|
|
#include <QTimer>
|
|
|
|
enum eModbusCCTrainTypes
|
|
{
|
|
MODBUS_CC_TRAIN_TYPE_MR63 = 63,
|
|
MODBUS_CC_TRAIN_TYPE_MR73 = 73,
|
|
MODBUS_CC_TRAIN_TYPE_MPM10 = 10,
|
|
MODBUS_CC_TRAIN_TYPE_MAINTENANCE = 0,
|
|
MODBUS_CC_TRAIN_TYPE_INVALID_ATS_OFFLINE = 98,
|
|
MODBUS_CC_TRAIN_TYPE_INVALID_SERVICE_REBOOT = 97,
|
|
MODBUS_CC_TRAIN_TYPE_INVALID_NOT_UPDATED = 99,
|
|
MODBUS_CC_TRAIN_TYPE_INVALID_SACL_OFFLINE = 96,
|
|
|
|
MODBUS_CC_TRAIN_TYPE_MAX_VALUE
|
|
};
|
|
|
|
|
|
class CModbusCCMgr : public CModbusBackend
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit CModbusCCMgr(CModbusRepository *Repo, int ModbusPort, int DevID);
|
|
virtual ~CModbusCCMgr();
|
|
|
|
int StartModbusCCServer();
|
|
int CloseModbusCCServer();
|
|
bool IsModbusConnected();
|
|
|
|
|
|
|
|
virtual void RegistersDatabaseUpdated(quint16 StartAddress, quint16 Length);
|
|
virtual void ModbusRequestException(quint8 ExceptionCode, quint8 FctCode);
|
|
|
|
|
|
|
|
//Helper functions
|
|
QList<qint16> GetZT1TrainComposition();
|
|
QList<qint16> GetZT2TrainComposition();
|
|
bool GetZT1InhibitionFlag();
|
|
int ClearZT1InhibitionFlag();
|
|
bool GetZT2InhibitionFlag();
|
|
int ClearZT2InhibitionFlag();
|
|
qint16 GetZT1TrainType();
|
|
qint16 GetZT2TrainType();
|
|
int SetZTWatchdogEnabled(bool Enabled);
|
|
int SetActivatedITI(int ITI);
|
|
|
|
private:
|
|
QTcpServer *mModbusServer;
|
|
int mModbusPort;
|
|
QTimer *mZTWatchdogTimer, *mCCWatchdogTimer;
|
|
quint16 mZTWatchdog;
|
|
qint16 mCCWatchdogState;
|
|
bool mCCLinkState;
|
|
QDateTime *mLastDateTime;
|
|
bool mZTWatchdogEnabled;
|
|
|
|
int ResetCCRepository();
|
|
|
|
signals:
|
|
void RepoHasChanged();
|
|
void ModbusCCConnected();
|
|
void ModbusCCDisconnected();
|
|
void ModbusCCLinkLost();
|
|
void ModbusCCLinkRecovered();
|
|
void ModbusDateTimeReceived(QDateTime *DateTime);
|
|
|
|
public slots:
|
|
void NewModbusConnection();
|
|
void ConnectionLost();
|
|
void ModbusZTWatchdogTimeout();
|
|
void ModbusCCWatchdogTimeout();
|
|
};
|
|
|
|
#endif // CMODBUSSLAVE_H
|