Début implémentation de la communcation Modbus avec le SEI
Début implémentation de la communcation Modbus avec le SEI
This commit is contained in:
parent
d235255053
commit
0d48aa67fd
@ -48,7 +48,6 @@ SONDE_LASER_EXT_1=ttyS1
|
||||
#Changer cette valeur à OUI, NON ou AUTO pour sélectionner la communication Modbus avec la CC.
|
||||
# OUI: force l'utilisation de la communication Modbus avec la CC.
|
||||
# NON: force la désactivation du lien Modbus avec la CC (utilisation des TC/TK discrètes)
|
||||
# AUTO: détection du lien Modbus au démarrage de la ZT et autoconfiguration de l'interface.
|
||||
UTILISER_MODBUS_CC=OUI
|
||||
#Adresse modbus de la ZT
|
||||
MODBUS_CC_DEVID=1
|
||||
@ -57,6 +56,14 @@ MODBUS_CC_PORT=502
|
||||
#Interface Ethernet
|
||||
MODBUS_CC_ETH_IF=eth2
|
||||
|
||||
#----------------------------------
|
||||
#Paramètres de communication Modbus avec le SEI (Serveur NetTrac).
|
||||
#Adresse modbus de la ZT
|
||||
MODBUS_SEI_DEVID=1
|
||||
#Port Modbus/TCP
|
||||
MODBUS_SEI_PORT=502
|
||||
|
||||
|
||||
#----------------------------------
|
||||
#Changer cette valeur à OUI ou NON pour activer le
|
||||
SIMULATEUR=OUI
|
||||
|
||||
Binary file not shown.
9
ZT.pro
9
ZT.pro
@ -111,14 +111,14 @@ SOURCES += \
|
||||
sources/TKTransportInterface.cpp \
|
||||
sources/DiscreteTKTransport.cpp \
|
||||
sources/Modbus/ModbusBackend.cpp \
|
||||
sources/Modbus/ModbusMaster.cpp \
|
||||
sources/Modbus/ModbusRepository.cpp \
|
||||
sources/Modbus/ModbusCCMgr.cpp \
|
||||
sources/Modbus/ModbusTKTransport.cpp \
|
||||
sources/Stations/DuCollege.cpp \
|
||||
sources/GuiElements/EthConnWidget.cpp \
|
||||
sources/GuiElements/ModbusSettingsPage.cpp \
|
||||
sources/Modbus/NetworkCfgMgr.cpp
|
||||
sources/Modbus/NetworkCfgMgr.cpp \
|
||||
sources/Modbus/ModbusSEIMgr.cpp
|
||||
|
||||
HEADERS += \
|
||||
sources/MainPanel.h \
|
||||
@ -228,7 +228,6 @@ HEADERS += \
|
||||
sources/TKTransportInterface.h \
|
||||
sources/DiscreteTKTransport.h \
|
||||
sources/Modbus/ModbusBackend.h \
|
||||
sources/Modbus/ModbusMaster.h \
|
||||
sources/Modbus/ModbusRepository.h \
|
||||
sources/Modbus/ModbusCCMgr.h \
|
||||
sources/Modbus/ModbusCCDefs.h \
|
||||
@ -236,7 +235,9 @@ HEADERS += \
|
||||
sources/Stations/DuCollege.h \
|
||||
sources/GuiElements/EthConnWidget.h \
|
||||
sources/GuiElements/ModbusSettingsPage.h \
|
||||
sources/Modbus/NetworkCfgMgr.h
|
||||
sources/Modbus/NetworkCfgMgr.h \
|
||||
sources/Modbus/ModbusSEIMgr.h \
|
||||
sources/Modbus/ModbusSEIDefs.h
|
||||
|
||||
#QMAKE_LIBDIR += ./ExtLib
|
||||
#QT += network
|
||||
|
||||
150
sources/Modbus/ModbusSEIDefs.h
Normal file
150
sources/Modbus/ModbusSEIDefs.h
Normal file
@ -0,0 +1,150 @@
|
||||
#ifndef MODBUSSEIDEFS_H
|
||||
#define MODBUSSEIDEFS_H
|
||||
|
||||
|
||||
#define SEI_MODBUS_ZT_DATA_BASE_REG 2000
|
||||
#define SEI_MODBUS_ZT_TABLE_DATA_SIZE 28
|
||||
|
||||
#define SEI_MODBUS_SEI_DATA_BASE_REG 2037
|
||||
#define SEI_MODBUS_SEI_TABLE_DATA_SIZE 2
|
||||
|
||||
#define SEI_MODBUS_ZT_WATCHDOG_REG 2027
|
||||
#define SEI_MODBUS_SEI_WATCHDOG_REG 2038
|
||||
|
||||
#define SEI_MODBUS_SEI_ZT1_ALARM_RESET_MASK 0X0001
|
||||
#define SEI_MODBUS_SEI_ZT2_ALARM_RESET_MASK 0X0002
|
||||
|
||||
|
||||
////Flags definitions for HR2000
|
||||
//#define SEI_ZT1_PP_INT_FLAG_MASK_1 0x0001
|
||||
//#define SEI_ZT1_PP_INT_FLAG_MASK_2 0x0002
|
||||
//#define SEI_ZT1_PP_INT_FLAG_MASK_3 0x0004
|
||||
//#define SEI_ZT1_PP_INT_FLAG_MASK_4 0x0008
|
||||
//#define SEI_ZT1_PP_EXT_FLAG_MASK_1 0x0010
|
||||
//#define SEI_ZT1_PP_EXT_FLAG_MASK_2 0x0020
|
||||
//#define SEI_ZT1_PP_EXT_FLAG_MASK_3 0x0040
|
||||
//#define SEI_ZT1_PP_EXT_FLAG_MASK_4 0x0080
|
||||
//#define SEI_ZT1_PG_FLAG_MASK_1 0x0100
|
||||
//#define SEI_ZT1_PG_FLAG_MASK_2 0x0200
|
||||
//#define SEI_ZT1_PG_FLAG_MASK_3 0x0400
|
||||
//#define SEI_ZT1_PG_FLAG_MASK_4 0x0800
|
||||
//#define SEI_ZT1_FN_FLAG_MASK_1 0x1000
|
||||
//#define SEI_ZT1_FN_FLAG_MASK_2 0x2000
|
||||
//#define SEI_ZT1_FN_FLAG_MASK_3 0x4000
|
||||
//#define SEI_ZT1_FN_FLAG_MASK_4 0x8000
|
||||
|
||||
////Flags definitions for HR2017
|
||||
//#define SEI_ZT2_PP_INT_FLAG_MASK_1 0x0001
|
||||
//#define SEI_ZT2_PP_INT_FLAG_MASK_2 0x0002
|
||||
//#define SEI_ZT2_PP_INT_FLAG_MASK_3 0x0004
|
||||
//#define SEI_ZT2_PP_INT_FLAG_MASK_4 0x0008
|
||||
//#define SEI_ZT2_PP_EXT_FLAG_MASK_1 0x0010
|
||||
//#define SEI_ZT2_PP_EXT_FLAG_MASK_2 0x0020
|
||||
//#define SEI_ZT2_PP_EXT_FLAG_MASK_3 0x0040
|
||||
//#define SEI_ZT2_PP_EXT_FLAG_MASK_4 0x0080
|
||||
|
||||
////
|
||||
//// ///UNUSED FLAGS NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
////#define ZT2_PG_DUMMY_MASK_1 0x0100 //UNUSED FLAG NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
////#define ZT2_PG_DUMMY_MASK_2 0x0200 //UNUSED FLAG NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
////#define ZT2_PG_DUMMY_MASK_3 0x0400 //UNUSED FLAG NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
////#define ZT2_PG_DUMMY_MASK_4 0x0800 //UNUSED FLAG NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
////#define ZT2_FN_DUMMY_MASK_5 0x1000 //UNUSED FLAG NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
////#define ZT2_FN_DUMMY_MASK_6 0x2000 //UNUSED FLAG NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
////#define ZT2_FN_DUMMY_MASK_7 0x4000 //UNUSED FLAG NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
////#define ZT2_FV_DUMMY_MASK_8 0x8000 //UNUSED FLAG NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
//// ////////////////////////////////////////////////////////////////////
|
||||
|
||||
////Flags definitions for HR2026
|
||||
//#define SEI_ZT1_V00_ALARM_FLAG_MASK 0x0001
|
||||
//#define SEI_ZT1_PEQ1_ALARM_FLAG_MASK 0x0002
|
||||
//#define SEI_ZT1_ALARM_ITI_FLAG_MASK 0x8000
|
||||
//#define SEI_ZT2_V02_ALARM_FLAG_MASK 0x0004
|
||||
//#define SEI_ZT2_PEQ2_ALARM_FLAG_MASK 0x0008
|
||||
//#define SEI_ZT2_ACTIVATED_ITI_DUMMY_MASK 0x4000 //UNUSED FLAG NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
//#define SEI_ZT_ACTIVATED_ITI_FLAG_MASK 0x8000
|
||||
|
||||
////Flags definitions for HR2027
|
||||
//#define ZT_WATCHDOG_ON_VALUE 0x8000
|
||||
//#define ZT_WATCHDOG_OFF_VALUE 0x0000
|
||||
|
||||
|
||||
////Register addressing
|
||||
////Outgoing
|
||||
//#define SEI_MODBUS_ZT_DATA_BASE_REG 2000
|
||||
//#define SEI_MODBUS_ZT_TABLE_DATA_SIZE 36 //Taille de la table en écriture = 36 registres (2000 à 2035) //28 //Taille de la table en écriture = 28 registres (2000 à 2027)
|
||||
|
||||
//#define SEI_MODBUS_ZT1_ALARM_DATA_BASE_REG_ADD 2000
|
||||
//#define SEI_MODBUS_ZT2_ALARM_DATA_BASE_REG_ADD 2017
|
||||
//#define SEI_MODBUS_MISC_DATA_BASE_REG_ADD 2026
|
||||
//#define SEI_MODBUS_ZT_WATCHDOG_REG_ADD 2027
|
||||
|
||||
//#define MODBUS_ZT1_ALARM_RANKS_BASE_ADD 2001
|
||||
//#define MODBUS_ZT1_RANK_PP_INT_1_REG_ADD 2001
|
||||
//#define MODBUS_ZT1_RANK_PP_INT_2_REG_ADD 2002
|
||||
//#define MODBUS_ZT1_RANK_PP_INT_3_REG_ADD 2003
|
||||
//#define MODBUS_ZT1_RANK_PP_INT_4_REG_ADD 2004
|
||||
//#define MODBUS_ZT1_RANK_PP_EXT_1_REG_ADD 2005
|
||||
//#define MODBUS_ZT1_RANK_PP_EXT_2_REG_ADD 2006
|
||||
//#define MODBUS_ZT1_RANK_PP_EXT_3_REG_ADD 2007
|
||||
//#define MODBUS_ZT1_RANK_PP_EXT_4_REG_ADD 2008
|
||||
//#define MODBUS_ZT1_RANK_PG_1_REG_ADD 2009
|
||||
//#define MODBUS_ZT1_RANK_PG_2_REG_ADD 2010
|
||||
//#define MODBUS_ZT1_RANK_PG_3_REG_ADD 2011
|
||||
//#define MODBUS_ZT1_RANK_PG_4_REG_ADD 2012
|
||||
//#define MODBUS_ZT1_RANK_FN_1_REG_ADD 2013
|
||||
//#define MODBUS_ZT1_RANK_FN_2_REG_ADD 2014
|
||||
//#define MODBUS_ZT1_RANK_FN_3_REG_ADD 2015
|
||||
//#define MODBUS_ZT1_RANK_FN_4_REG_ADD 2016
|
||||
|
||||
//#define MODBUS_ZT2_ALARM_RANKS_BASE_ADD 2018
|
||||
//#define MODBUS_ZT2_RANK_PP_INT_1_REG_ADD 2018
|
||||
//#define MODBUS_ZT2_RANK_PP_INT_2_REG_ADD 2019
|
||||
//#define MODBUS_ZT2_RANK_PP_INT_3_REG_ADD 2020
|
||||
//#define MODBUS_ZT2_RANK_PP_INT_4_REG_ADD 2021
|
||||
//#define MODBUS_ZT2_RANK_PP_EXT_1_REG_ADD 2022
|
||||
//#define MODBUS_ZT2_RANK_PP_EXT_2_REG_ADD 2023
|
||||
//#define MODBUS_ZT2_RANK_PP_EXT_3_REG_ADD 2024
|
||||
//#define MODBUS_ZT2_RANK_PP_EXT_4_REG_ADD 2025
|
||||
|
||||
|
||||
///////UNUSED FLAGS NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
////#define MODBUS_ZT2_DUMMY_RK_PG_1_REG_ADD 2028 //UNUSED FLAG NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
////#define MODBUS_ZT2_DUMMY_RK_PG_2_REG_ADD 2029 //UNUSED FLAG NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
////#define MODBUS_ZT2_DUMMY_RK_PG_3_REG_ADD 2030 //UNUSED FLAG NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
////#define MODBUS_ZT2_DUMMY_RK_PG_4_REG_ADD 2031 //UNUSED FLAG NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
////#define MODBUS_ZT2_DUMMY_FN_PG_1_REG_ADD 2032 //UNUSED FLAG NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
////#define MODBUS_ZT2_DUMMY_FN_PG_2_REG_ADD 2033 //UNUSED FLAG NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
////#define MODBUS_ZT2_DUMMY_FN_PG_3_REG_ADD 2034 //UNUSED FLAG NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
////#define MODBUS_ZT2_DUMMY_FN_PG_4_REG_ADD 2035 //UNUSED FLAG NECESSARY FOR CC IMPLEMENTATION. MUST ALWAYS BE 0
|
||||
//// ///////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
////Incoming
|
||||
//#define MODBUS_CC_FCYCLE_ZT1_FLAG_MASK 0x0001
|
||||
//#define MODBUS_CC_FCYCLE_ZT2_FLAG_MASK 0x0002
|
||||
//#define MODBUS_CC_INHIBIT_ZT1_FLAG_MASK 0x0004
|
||||
//#define MODBUS_CC_INHIBIT_ZT2_FLAG_MASK 0x0008
|
||||
//#define MODBUS_CC_CLK_UPDATE_FLAG_MASK 0x8000
|
||||
|
||||
//#define MODBUS_CC_DATA_BASE_REG_ADD 2036//2028
|
||||
//#define MODBUS_CC_TABLE_DATA_SIZE 15 //Taille de la table en lecture = 15 registres (2036 à 2050 ///(2028 à 2042)
|
||||
|
||||
|
||||
//#define MODBUS_CC_WATCHDOG_BASE_REG_ADD 2036
|
||||
//#define MODBUS_CC_AN_BASE_REG_ADD 2037
|
||||
//#define MODBUS_CC_ZT1_TRAIN_TYPE_REG_ADD 2038
|
||||
//#define MODBUS_CC_ZT2_TRAIN_TYPE_REG_ADD 2039
|
||||
//#define MODBUS_CC_ZT1_TRAIN_ID_1_REG_ADD 2040
|
||||
//#define MODBUS_CC_ZT1_TRAIN_ID_2_REG_ADD 2041
|
||||
//#define MODBUS_CC_ZT1_TRAIN_ID_3_REG_ADD 2042
|
||||
//#define MODBUS_CC_ZT2_TRAIN_ID_1_REG_ADD 2043
|
||||
//#define MODBUS_CC_ZT2_TRAIN_ID_2_REG_ADD 2044
|
||||
//#define MODBUS_CC_ZT2_TRAIN_ID_3_REG_ADD 2045
|
||||
//#define MODBUS_CC_CLK_UPDATE_BASE_REG_ADD 2046
|
||||
//#define MODUBS_CC_CLK_SEC_BASE_REG_ADD 2047
|
||||
//#define MODUBS_CC_CLK_HR_MIN_BASE_REG_ADD 2048
|
||||
//#define MODUBS_CC_CLK_MNT_DAY_BASE_REG_ADD 2049
|
||||
//#define MODUBS_CC_CLK_YEAR_BASE_REG_ADD 2050
|
||||
|
||||
#endif // MODBUSSEIDEFS_H
|
||||
@ -1,8 +1,8 @@
|
||||
#include "ModbusMaster.h"
|
||||
#include "ModbusSEIMgr.h"
|
||||
#include <QTcpSocket>
|
||||
#include "ModbusCCDefs.h"
|
||||
|
||||
CModbusMaster::CModbusMaster(CModbusRepository *Repo, int ModbusPort, int DevID):
|
||||
CModbusSEIMgr::CModbusSEIMgr(CModbusRepository *Repo, int ModbusPort, int DevID):
|
||||
CModbusBackend(Repo)
|
||||
{
|
||||
// connect(mModbusTCPSocketHandle,SIGNAL(readyRead()),this,SLOT(ModbusDataReady()));
|
||||
@ -16,7 +16,7 @@ CModbusMaster::CModbusMaster(CModbusRepository *Repo, int ModbusPort, int DevID)
|
||||
connect(mModbusTCPSocketHandle,SIGNAL(connected()),this,SLOT(SocketConnected()));
|
||||
}
|
||||
|
||||
CModbusMaster::~CModbusMaster()
|
||||
CModbusSEIMgr::~CModbusSEIMgr()
|
||||
{
|
||||
if(mModbusTCPSocketHandle->state() != QAbstractSocket::UnconnectedState)
|
||||
{
|
||||
@ -26,7 +26,7 @@ CModbusMaster::~CModbusMaster()
|
||||
delete mModbusTCPSocketHandle;
|
||||
}
|
||||
|
||||
int CModbusMaster::ConnectToSlave(QString SlaveIP, int SlavePort)
|
||||
int CModbusSEIMgr::ConnectToSlave(QString SlaveIP, int SlavePort)
|
||||
{
|
||||
if(mModbusTCPSocketHandle->state() != QAbstractSocket::UnconnectedState)
|
||||
{
|
||||
@ -38,7 +38,7 @@ int CModbusMaster::ConnectToSlave(QString SlaveIP, int SlavePort)
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
int CModbusMaster::DisconnectFromSlave()
|
||||
int CModbusSEIMgr::DisconnectFromSlave()
|
||||
{
|
||||
if(mModbusTCPSocketHandle->state() != QAbstractSocket::ConnectedState)
|
||||
{
|
||||
@ -52,26 +52,26 @@ int CModbusMaster::DisconnectFromSlave()
|
||||
return 1;
|
||||
}
|
||||
|
||||
void CModbusMaster::SocketConnected()
|
||||
void CModbusSEIMgr::SocketConnected()
|
||||
{
|
||||
emit ModbusMasterConnected(this);
|
||||
qDebug("Master: Connection established with slave");
|
||||
}
|
||||
|
||||
void CModbusMaster::SocketDisconnected()
|
||||
void CModbusSEIMgr::SocketDisconnected()
|
||||
{
|
||||
ModbusLinkDisconnected();
|
||||
emit ModbusMasterDisconnected(this);
|
||||
}
|
||||
|
||||
int CModbusMaster::ReadModbusRegisters()
|
||||
int CModbusSEIMgr::ReadModbusRegisters()
|
||||
{
|
||||
//return SendReadHoldingRegistersRequest(ZT_DATA_BASE_REGISTER_ADDRESS,4); //Read all 3 registers from ZT (2000 - 2003)
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
|
||||
void CModbusMaster::RegistersDatabaseUpdated(quint16 StartAddress, quint16 Length)
|
||||
void CModbusSEIMgr::RegistersDatabaseUpdated(quint16 StartAddress, quint16 Length)
|
||||
{
|
||||
Q_UNUSED(StartAddress)
|
||||
Q_UNUSED(Length)
|
||||
@ -80,19 +80,19 @@ void CModbusMaster::RegistersDatabaseUpdated(quint16 StartAddress, quint16 Lengt
|
||||
qDebug("Database updated with ZT data...");
|
||||
}
|
||||
|
||||
void CModbusMaster::ModbusResponseException(quint8 ExceptionCode, quint8 FctCode)
|
||||
void CModbusSEIMgr::ModbusResponseException(quint8 ExceptionCode, quint8 FctCode)
|
||||
{
|
||||
qDebug("Modbus MASTER exception: code:%d Fct:%d",ExceptionCode,FctCode);
|
||||
}
|
||||
|
||||
int CModbusMaster::SendAN1ToZT()
|
||||
int CModbusSEIMgr::SendAN1ToZT()
|
||||
{
|
||||
//return SendWriteHoldingRegistersRequest(CC_AN1_REGISTER_ADDRESS,1);
|
||||
//return SendWriteSingleRegisterRequest(CC_AN1_REGISTER_ADDRESS);
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
int CModbusMaster::SendAN2ToZT()
|
||||
int CModbusSEIMgr::SendAN2ToZT()
|
||||
{
|
||||
//return SendWriteHoldingRegistersRequest(CC_AN2_REGISTER_ADDRESS,1);
|
||||
//return SendWriteSingleRegisterRequest(CC_AN2_REGISTER_ADDRESS);
|
||||
@ -1,5 +1,5 @@
|
||||
#ifndef CMODBUSMASTER_H
|
||||
#define CMODBUSMASTER_H
|
||||
#ifndef CMODBUSSEIMGR_H
|
||||
#define CMODBUSSEIMGR_H
|
||||
|
||||
#include <QObject>
|
||||
#include "ModbusBackend.h"
|
||||
@ -7,12 +7,12 @@
|
||||
|
||||
|
||||
|
||||
class CModbusMaster : public CModbusBackend
|
||||
class CModbusSEIMgr : public CModbusBackend
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit CModbusMaster(CModbusRepository *Repo, int ModbusPort, int DevID);
|
||||
~CModbusMaster();
|
||||
explicit CModbusSEIMgr(CModbusRepository *Repo, int ModbusPort, int DevID);
|
||||
~CModbusSEIMgr();
|
||||
|
||||
int ConnectToSlave(QString SlaveIP, int SlavePort);
|
||||
int DisconnectFromSlave();
|
||||
@ -27,8 +27,8 @@ private:
|
||||
int mModbusPort;
|
||||
|
||||
signals:
|
||||
void ModbusMasterConnected(CModbusMaster *);
|
||||
void ModbusMasterDisconnected(CModbusMaster *);
|
||||
void ModbusMasterConnected(CModbusSEIMgr *);
|
||||
void ModbusMasterDisconnected(CModbusSEIMgr *);
|
||||
void ModbusMasterRepositoryUpdated();
|
||||
|
||||
public slots:
|
||||
@ -36,4 +36,4 @@ public slots:
|
||||
void SocketDisconnected();
|
||||
};
|
||||
|
||||
#endif // CMODBUSMASTER_H
|
||||
#endif // CMODBUSSEIMGR_H
|
||||
@ -6,7 +6,7 @@
|
||||
|
||||
CModbusTKTransport::CModbusTKTransport(CModbusRepository *Repo)
|
||||
{
|
||||
mModbusRepo = Repo;
|
||||
mMCCodbusRepo = Repo;
|
||||
mZT1CDVState = mZT2CDVState = false;
|
||||
mMaintenanceMode = mForceZT1Clear = mForceZT2Clear = false;
|
||||
mZT1TKDataList.clear();
|
||||
@ -50,7 +50,7 @@ int CModbusTKTransport::ClearTK(int ZT)
|
||||
|
||||
//Clear pannes & itineraire flags
|
||||
bool OK = false;
|
||||
quint16 PannesReg = mModbusRepo->GetSingleReg(MODBUS_MISC_DATA_BASE_REG_ADD,&OK);
|
||||
quint16 PannesReg = mMCCodbusRepo->GetSingleReg(MODBUS_MISC_DATA_BASE_REG_ADD,&OK);
|
||||
|
||||
if(OK == false)
|
||||
{
|
||||
@ -65,8 +65,8 @@ int CModbusTKTransport::ClearTK(int ZT)
|
||||
//
|
||||
|
||||
//Clear repo now...
|
||||
mModbusRepo->WriteMultipleRegs(MODBUS_ZT1_ALARM_DATA_BASE_REG_ADD,Data);
|
||||
mModbusRepo->WriteSingleReg(MODBUS_MISC_DATA_BASE_REG_ADD,PannesReg);
|
||||
mMCCodbusRepo->WriteMultipleRegs(MODBUS_ZT1_ALARM_DATA_BASE_REG_ADD,Data);
|
||||
mMCCodbusRepo->WriteSingleReg(MODBUS_MISC_DATA_BASE_REG_ADD,PannesReg);
|
||||
|
||||
|
||||
}
|
||||
@ -81,7 +81,7 @@ int CModbusTKTransport::ClearTK(int ZT)
|
||||
|
||||
//Clear pannes
|
||||
bool OK = false;
|
||||
quint16 PannesReg = mModbusRepo->GetSingleReg(MODBUS_MISC_DATA_BASE_REG_ADD,&OK);
|
||||
quint16 PannesReg = mMCCodbusRepo->GetSingleReg(MODBUS_MISC_DATA_BASE_REG_ADD,&OK);
|
||||
|
||||
if(OK == false)
|
||||
{
|
||||
@ -92,8 +92,8 @@ int CModbusTKTransport::ClearTK(int ZT)
|
||||
PannesReg &= ~ZT2_PEQ2_ALARM_FLAG_MASK;
|
||||
|
||||
//Clear repo now...
|
||||
mModbusRepo->WriteMultipleRegs(MODBUS_ZT2_ALARM_DATA_BASE_REG_ADD,Data);
|
||||
mModbusRepo->WriteSingleReg(MODBUS_MISC_DATA_BASE_REG_ADD,PannesReg);
|
||||
mMCCodbusRepo->WriteMultipleRegs(MODBUS_ZT2_ALARM_DATA_BASE_REG_ADD,Data);
|
||||
mMCCodbusRepo->WriteSingleReg(MODBUS_MISC_DATA_BASE_REG_ADD,PannesReg);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -115,7 +115,7 @@ int CModbusTKTransport::SendTKToCC(int ZT)
|
||||
|
||||
//Get a local buffer of the repo...
|
||||
bool OK;
|
||||
DataBuf = mModbusRepo->GetRegs(MODBUS_ZT_DATA_BASE_REG,MODBUS_ZT_TABLE_DATA_SIZE,&OK);
|
||||
DataBuf = mMCCodbusRepo->GetRegs(MODBUS_ZT_DATA_BASE_REG,MODBUS_ZT_TABLE_DATA_SIZE,&OK);
|
||||
if(OK == false)
|
||||
{
|
||||
CEngLog::instance()->AddLogString("Erreur de logique. ModbusTkTransport::SendTKToCC() ZT1 -> Lecture repository invalide.");
|
||||
@ -262,7 +262,7 @@ int CModbusTKTransport::SendTKToCC(int ZT)
|
||||
//Update the modbus repo to send the alarms...
|
||||
DataBuf[RegOffset(MODBUS_ZT1_ALARM_DATA_BASE_REG_ADD)] = FlagsReg;
|
||||
DataBuf[RegOffset(MODBUS_MISC_DATA_BASE_REG_ADD)] = PannesReg;
|
||||
mModbusRepo->WriteMultipleRegs(MODBUS_ZT_DATA_BASE_REG,DataBuf);
|
||||
mMCCodbusRepo->WriteMultipleRegs(MODBUS_ZT_DATA_BASE_REG,DataBuf);
|
||||
|
||||
}
|
||||
else if(ZT == ZT2_TYPE_ID)
|
||||
@ -275,7 +275,7 @@ int CModbusTKTransport::SendTKToCC(int ZT)
|
||||
|
||||
//Get a local buffer of the repo...
|
||||
bool OK;
|
||||
DataBuf = mModbusRepo->GetRegs(MODBUS_ZT_DATA_BASE_REG,MODBUS_ZT_TABLE_DATA_SIZE,&OK);
|
||||
DataBuf = mMCCodbusRepo->GetRegs(MODBUS_ZT_DATA_BASE_REG,MODBUS_ZT_TABLE_DATA_SIZE,&OK);
|
||||
if(OK == false)
|
||||
{
|
||||
CEngLog::instance()->AddLogString("Erreur de logique. ModbusTkTransport::SendTKToCC() ZT2 -> Lecture repository invalide.");
|
||||
@ -364,7 +364,7 @@ int CModbusTKTransport::SendTKToCC(int ZT)
|
||||
//Update the modbus repo to send the alarms...
|
||||
DataBuf[RegOffset(MODBUS_ZT2_ALARM_DATA_BASE_REG_ADD)] = FlagsReg;
|
||||
DataBuf[RegOffset(MODBUS_MISC_DATA_BASE_REG_ADD)] = PannesReg;
|
||||
mModbusRepo->WriteMultipleRegs(MODBUS_ZT_DATA_BASE_REG,DataBuf);
|
||||
mMCCodbusRepo->WriteMultipleRegs(MODBUS_ZT_DATA_BASE_REG,DataBuf);
|
||||
|
||||
}
|
||||
else
|
||||
@ -726,7 +726,7 @@ void CModbusTKTransport::ExecZT2SM()
|
||||
|
||||
void CModbusTKTransport::ModbusCCUpdated()
|
||||
{
|
||||
qint16 ClearReg = mModbusRepo->GetSingleReg(MODBUS_CC_AN_BASE_REG_ADD);
|
||||
qint16 ClearReg = mMCCodbusRepo->GetSingleReg(MODBUS_CC_AN_BASE_REG_ADD);
|
||||
mZT1Clear = (ClearReg & (MODBUS_CC_FCYCLE_ZT1_FLAG_MASK)) != 0;
|
||||
mZT2Clear = (ClearReg & (MODBUS_CC_FCYCLE_ZT2_FLAG_MASK)) != 0;
|
||||
// qDebug("ZT1Clr = %d",mZT1Clear);
|
||||
|
||||
@ -67,7 +67,7 @@ public:
|
||||
virtual unsigned int EnterMaintenance();
|
||||
|
||||
private:
|
||||
CModbusRepository *mModbusRepo;
|
||||
CModbusRepository *mMCCodbusRepo;
|
||||
QList<CZTDetectionData> mZT1TKDataList,mZT2TKDataList;
|
||||
bool mZT1CDVState, mZT2CDVState;
|
||||
bool mMaintenanceMode, mForceZT1Clear, mForceZT2Clear;
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
/*******************************************************************************
|
||||
|
||||
/*******************************************************************************
|
||||
* *
|
||||
* Société de Transports de Montréal. *
|
||||
* 2012 - 2013 *
|
||||
|
||||
@ -205,6 +205,28 @@ ZTConfigResult CZTConfigMgr::LoadZTConfig()
|
||||
mModbusCCIFName = (string.mid(pos));
|
||||
CEngLog::instance()->AddLogString(QString("Interface Modbus CC = %1").arg(mModbusCCIFName),1);
|
||||
}
|
||||
else if(string.contains("MODBUS_SEI_DEVID"))
|
||||
{
|
||||
bool OK;
|
||||
mModbusSEIDevID = (string.mid(pos).toInt(&OK));
|
||||
if(OK == false)
|
||||
{
|
||||
CEngLog::instance()->AddLogString(QString().sprintf("Invalid MODBUS_SEI_DEVID parameter: %s",string.mid(pos).toUtf8().constData()));
|
||||
mModbusSEIDevID = 0;
|
||||
}
|
||||
CEngLog::instance()->AddLogString(QString().sprintf("Port DevID SEI = %d",mModbusSEIDevID));
|
||||
}
|
||||
else if(string.contains("MODBUS_SEI_PORT"))
|
||||
{
|
||||
bool OK;
|
||||
mModbusSEIPort = (string.mid(pos).toInt(&OK));
|
||||
if(OK == false)
|
||||
{
|
||||
CEngLog::instance()->AddLogString(QString().sprintf("Invalid MODBUS_SEI_PORT parameter: %s",string.mid(pos).toUtf8().constData()));
|
||||
mModbusSEIPort = 6060;
|
||||
}
|
||||
CEngLog::instance()->AddLogString(QString().sprintf("Port DevID SEI = %d",mModbusSEIPort));
|
||||
}
|
||||
|
||||
//Station configuration parameters
|
||||
else if(string.contains("STATION"))
|
||||
@ -299,6 +321,16 @@ int CZTConfigMgr::GetModbusCCPort()
|
||||
return mModbusCCPort;
|
||||
}
|
||||
|
||||
int CZTConfigMgr::GetModbusSEIPort()
|
||||
{
|
||||
return mModbusSEIPort;
|
||||
}
|
||||
|
||||
int CZTConfigMgr::GetModbusSEIDevID()
|
||||
{
|
||||
return mModbusSEIDevID;
|
||||
}
|
||||
|
||||
QString CZTConfigMgr::GetDataQIPAddress()
|
||||
{
|
||||
return mDataQIPAddr;
|
||||
|
||||
@ -93,6 +93,8 @@ public:
|
||||
ZTConfigModbusEnableMode GetModbusCCEnabled();
|
||||
int GetModbusCCPort();
|
||||
int GetModbusCCDevID();
|
||||
int GetModbusSEIPort();
|
||||
int GetModbusSEIDevID();
|
||||
QString GetModbusCCIFName();
|
||||
// int GetLaserSensorCalib(){return mConfig_Station_LaserSensorCalib;}
|
||||
|
||||
@ -109,12 +111,15 @@ private:
|
||||
|
||||
QString mConfig_Station_StationName;
|
||||
QString mModbusCCIFName;
|
||||
|
||||
// int mConfig_Station_LaserSensorCalib;
|
||||
int mEngLogVerbosity;
|
||||
bool mUseSimulator;
|
||||
ZTConfigModbusEnableMode mUseModbusCCMode;
|
||||
int mModbusCCDevID;
|
||||
int mModbusCCPort;
|
||||
int mModbusSEIPort;
|
||||
int mModbusSEIDevID;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -58,8 +58,10 @@
|
||||
#include "ZTVersion.h"
|
||||
#include "ModbusCCDefs.h"
|
||||
#include "ModbusTKTransport.h"
|
||||
#include "ModbusSEIDefs.h"
|
||||
#include <sys/time.h>
|
||||
|
||||
|
||||
#ifdef USE_NETWORKING
|
||||
#include "NetworkManager.h"
|
||||
#endif
|
||||
@ -84,6 +86,7 @@ CZoneTest::CZoneTest():
|
||||
mTKTransportInterface = 0;
|
||||
mCCModbusRepository = 0;
|
||||
mModbusCCMgr = 0;
|
||||
mModbusSEIMgr = 0;
|
||||
|
||||
mSimulationON = false;
|
||||
mWatchdogEnabled = true;
|
||||
@ -127,6 +130,11 @@ CZoneTest::~CZoneTest()
|
||||
delete mModbusCCMgr;
|
||||
}
|
||||
|
||||
if(mModbusSEIMgr != 0)
|
||||
{
|
||||
delete mModbusSEIMgr;
|
||||
}
|
||||
|
||||
if(mAnalogModule != 0)
|
||||
delete mAnalogModule;
|
||||
}
|
||||
@ -554,14 +562,24 @@ unsigned int CZoneTest::InitZT()
|
||||
|
||||
if(UseModbusInterface == true)
|
||||
{
|
||||
int ModbusPort = CZTConfigMgr::instance()->GetModbusCCPort();
|
||||
int DevID = CZTConfigMgr::instance()->GetModbusCCDevID();
|
||||
int ModbusCCPort = CZTConfigMgr::instance()->GetModbusCCPort();
|
||||
int CCDevID = CZTConfigMgr::instance()->GetModbusCCDevID();
|
||||
int ModbusSEIPort = CZTConfigMgr::instance()->GetModbusSEIPort();
|
||||
int SEIDevID = CZTConfigMgr::instance()->GetModbusSEIDevID();
|
||||
mWatchdogEnabled=false;
|
||||
|
||||
if(DevID >= 255)
|
||||
if(CCDevID >= 255)
|
||||
{
|
||||
mWelcomePagePtr->InsertTextBoxString(QString("Valeur DevID Modbus CC invalide (%1)").arg(DevID));
|
||||
CEngLog::instance()->AddLogString(QString("Valeur DevID Modbus CC invalide (%1)").arg(DevID),1);
|
||||
mWelcomePagePtr->InsertTextBoxString(QString("Valeur DevID Modbus CC invalide (%1)").arg(CCDevID));
|
||||
CEngLog::instance()->AddLogString(QString("Valeur DevID Modbus CC invalide (%1)").arg(CCDevID),1);
|
||||
EnterDeadlockState();
|
||||
return RET_ERROR;
|
||||
}
|
||||
|
||||
if(SEIDevID >= 255)
|
||||
{
|
||||
mWelcomePagePtr->InsertTextBoxString(QString("Valeur DevID Modbus SEI invalide (%1)").arg(SEIDevID));
|
||||
CEngLog::instance()->AddLogString(QString("Valeur DevID Modbus SEI invalide (%1)").arg(SEIDevID),1);
|
||||
EnterDeadlockState();
|
||||
return RET_ERROR;
|
||||
}
|
||||
@ -571,10 +589,18 @@ unsigned int CZoneTest::InitZT()
|
||||
mCCModbusRepository->AddHRDataMap(MODBUS_CC_DATA_BASE_REG_ADD,MODBUS_ZT_TABLE_DATA_SIZE); //Add the CC data map
|
||||
if(mModbusCCMgr == 0)
|
||||
{
|
||||
mModbusCCMgr = new CModbusCCMgr(mCCModbusRepository,ModbusPort,DevID);
|
||||
mModbusCCMgr = new CModbusCCMgr(mCCModbusRepository,ModbusCCPort,CCDevID);
|
||||
}
|
||||
mModbusCCMgr->StartModbusCCServer();
|
||||
|
||||
mSEIModbusRepository = new CModbusRepository;
|
||||
mSEIModbusRepository->AddHRDataMap(SEI_MODBUS_ZT_DATA_BASE_REG,SEI_MODBUS_ZT_TABLE_DATA_SIZE); //Add the ZT data map
|
||||
mSEIModbusRepository->AddHRDataMap(SEI_MODBUS_SEI_DATA_BASE_REG,SEI_MODBUS_SEI_TABLE_DATA_SIZE); //Add the SEI data map
|
||||
if(mModbusSEIMgr == 0)
|
||||
{
|
||||
mModbusSEIMgr = new CModbusSEIMgr(mSEIModbusRepository,ModbusSEIPort,SEIDevID);
|
||||
}
|
||||
|
||||
CModbusTKTransport *TransportInterface = new CModbusTKTransport(mCCModbusRepository);
|
||||
mTKTransportInterface = (CTKTransportInterface*)TransportInterface;
|
||||
connect(mModbusCCMgr,SIGNAL(RepoHasChanged()),TransportInterface,SLOT(ModbusCCUpdated()));
|
||||
|
||||
@ -57,6 +57,7 @@
|
||||
#include "DiscreteTKTransport.h"
|
||||
#include "ModbusRepository.h"
|
||||
#include "ModbusCCMgr.h"
|
||||
#include "ModbusSEIMgr.h"
|
||||
#include "NetworkCfgMgr.h"
|
||||
|
||||
#include "TCPProtocol.h"
|
||||
@ -189,8 +190,9 @@ private:
|
||||
CWatchdogCtrl *mInternalWatchdog;
|
||||
bool mWatchdogEnabled;
|
||||
CTKTransportInterface *mTKTransportInterface;
|
||||
CModbusRepository *mCCModbusRepository;
|
||||
CModbusRepository *mCCModbusRepository, *mSEIModbusRepository;
|
||||
CModbusCCMgr *mModbusCCMgr;
|
||||
CModbusSEIMgr *mModbusSEIMgr;
|
||||
CNetworkCfgMgr mNetworkCfgMgr;
|
||||
|
||||
QLocalSocket mACPISocket;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user