Détection automatique Modbus
Détection automatique au démarrage de la présence du HPC sur le réseau. Si oui, le Modbus est activé, si non les I/O discrets sont utilisés.
This commit is contained in:
parent
6500e25bd5
commit
cd943fea9e
@ -1,3 +1,4 @@
|
||||
#!/bin/bash
|
||||
sudo chown root:root ZT
|
||||
#sudo chown root:root ZT
|
||||
#sudo chmod +s ZT
|
||||
sudo -n ./SetPortCap.sh %1
|
||||
|
||||
@ -51,17 +51,17 @@ CStatusBar::CStatusBar(QGraphicsItem *Parent):
|
||||
mHistoModbusState = SB_MODBUS_CONNECTED;
|
||||
|
||||
mCCModbusONOFF.setParentItem(this);
|
||||
mCCModbusONOFF.setPos(730,0);
|
||||
mCCModbusONOFF.setPos(730,3);
|
||||
mCCModbusONOFF.EthOFF();
|
||||
mCCModbusONOFF.hide();
|
||||
|
||||
mSEIModbusONOFF.setParentItem(this);
|
||||
mSEIModbusONOFF.setPos(765,0);
|
||||
mSEIModbusONOFF.setPos(765,3);
|
||||
mSEIModbusONOFF.EthOFF();
|
||||
mSEIModbusONOFF.hide();
|
||||
|
||||
mHistorienModbusONOFF.setParentItem(this);
|
||||
mHistorienModbusONOFF.setPos(800,0);
|
||||
mHistorienModbusONOFF.setPos(800,3);
|
||||
mHistorienModbusONOFF.EthOFF();
|
||||
mHistorienModbusONOFF.hide();
|
||||
|
||||
|
||||
@ -54,6 +54,27 @@ int CModbusCCMgr::StartModbusCCServer()
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
bool CModbusCCMgr::CheckForCCPartner(const int msTimeout, const int port)
|
||||
{
|
||||
QTcpServer *DummyServer = new QTcpServer();
|
||||
DummyServer->listen(QHostAddress::Any,port);
|
||||
|
||||
if(DummyServer->waitForNewConnection(msTimeout) == true)
|
||||
{
|
||||
QTcpSocket* DummySocket = DummyServer->nextPendingConnection();
|
||||
DummySocket->disconnectFromHost();
|
||||
DummySocket->waitForDisconnected(1000);
|
||||
delete DummySocket;
|
||||
DummyServer->close();
|
||||
delete DummyServer;
|
||||
return true;
|
||||
}
|
||||
DummyServer->close();
|
||||
delete DummyServer;
|
||||
return false;
|
||||
}
|
||||
|
||||
int CModbusCCMgr::CloseModbusCCServer()
|
||||
{
|
||||
mModbusServer->close();
|
||||
@ -74,7 +95,7 @@ int CModbusCCMgr::CloseModbusCCServer()
|
||||
delete mModbusTCPSocketHandle;
|
||||
}
|
||||
|
||||
CZTLog::instance()->AddLogString(QString("Serveur Modbus Commande Centralisée démarré sur le port %1").arg(mModbusPort),true);
|
||||
CZTLog::instance()->AddLogString(QString("Serveur Modbus Commande Centralisée fermé"),true);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@ -32,6 +32,7 @@ public:
|
||||
int StartModbusCCServer();
|
||||
int CloseModbusCCServer();
|
||||
bool IsModbusConnected();
|
||||
static bool CheckForCCPartner(const int msTimeout, const int port);
|
||||
|
||||
|
||||
|
||||
|
||||
@ -493,34 +493,46 @@ unsigned int CZoneTest::InitZT()
|
||||
}
|
||||
else
|
||||
{
|
||||
//autodetect modbus interface...
|
||||
CEngLog::instance()->AddLogString("Auto-Détection de l'interface Modbus",1);
|
||||
QString IFName = CZTConfigMgr::instance()->GetModbusCCIFName();
|
||||
if(IFName != "INVALID")
|
||||
// //autodetect modbus interface...
|
||||
int ModbusPort = CZTConfigMgr::instance()->GetModbusCCPort();
|
||||
mWelcomePagePtr->InsertTextBoxString(QString("Détection Modbus CC..."));
|
||||
if(CModbusCCMgr::CheckForCCPartner(3000,ModbusPort) == true)
|
||||
{
|
||||
QString CarrierFile = QString("/sys/class/net/%1/carrier").arg(IFName);
|
||||
QFile *EthIfStateFile = new QFile(CarrierFile);
|
||||
if(EthIfStateFile)
|
||||
{
|
||||
CEngLog::instance()->AddLogString(QString("Ouverture du fichier %1 ...").arg(IFName),3);
|
||||
if(EthIfStateFile->open(QIODevice::ReadOnly | QIODevice::Text) == true)
|
||||
{
|
||||
QByteArray val = EthIfStateFile->readAll();
|
||||
QString State(val);
|
||||
if(State.contains("1"))
|
||||
{
|
||||
CZTLog::instance()->AddLogString(QString("Connexion Ethernet CC détectée sur %1").arg(IFName),true);
|
||||
UseModbusInterface = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
CZTLog::instance()->AddLogString(QString("Connexion Ethernet CC inactive ou non-détectée sur %1").arg(IFName),true);
|
||||
}
|
||||
EthIfStateFile->close();
|
||||
}
|
||||
delete EthIfStateFile;
|
||||
}
|
||||
UseModbusInterface = true;
|
||||
mWelcomePagePtr->InsertTextBoxString(QString("Modbus CC détecté et activé"));
|
||||
}
|
||||
else
|
||||
{
|
||||
mWelcomePagePtr->InsertTextBoxString(QString("Modbus CC non-détecté"));
|
||||
}
|
||||
|
||||
// CEngLog::instance()->AddLogString("Auto-Détection de l'interface Modbus",1);
|
||||
// QString IFName = CZTConfigMgr::instance()->GetModbusCCIFName();
|
||||
// if(IFName != "INVALID")
|
||||
// {
|
||||
// QString CarrierFile = QString("/sys/class/net/%1/carrier").arg(IFName);
|
||||
// QFile *EthIfStateFile = new QFile(CarrierFile);
|
||||
// if(EthIfStateFile)
|
||||
// {
|
||||
// CEngLog::instance()->AddLogString(QString("Ouverture du fichier %1 ...").arg(IFName),3);
|
||||
// if(EthIfStateFile->open(QIODevice::ReadOnly | QIODevice::Text) == true)
|
||||
// {
|
||||
// QByteArray val = EthIfStateFile->readAll();
|
||||
// QString State(val);
|
||||
// if(State.contains("1"))
|
||||
// {
|
||||
// CZTLog::instance()->AddLogString(QString("Connexion Ethernet CC détectée sur %1").arg(IFName),true);
|
||||
// UseModbusInterface = true;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// CZTLog::instance()->AddLogString(QString("Connexion Ethernet CC inactive ou non-détectée sur %1").arg(IFName),true);
|
||||
// }
|
||||
// EthIfStateFile->close();
|
||||
// }
|
||||
// delete EthIfStateFile;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
@ -541,7 +553,10 @@ unsigned int CZoneTest::InitZT()
|
||||
mCCModbusRepository = new CModbusRepository;
|
||||
mCCModbusRepository->AddHRDataMap(MODBUS_ZT_DATA_BASE_REG,MODBUS_ZT_TABLE_DATA_SIZE); //Add the ZT data map
|
||||
mCCModbusRepository->AddHRDataMap(MODBUS_CC_DATA_BASE_REG_ADD,MODBUS_ZT_TABLE_DATA_SIZE); //Add the CC data map
|
||||
mModbusCCMgr = new CModbusCCMgr(mCCModbusRepository,ModbusPort,DevID);
|
||||
if(mModbusCCMgr == 0)
|
||||
{
|
||||
mModbusCCMgr = new CModbusCCMgr(mCCModbusRepository,ModbusPort,DevID);
|
||||
}
|
||||
mModbusCCMgr->StartModbusCCServer();
|
||||
|
||||
CModbusTKTransport *TransportInterface = new CModbusTKTransport(mCCModbusRepository);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user