dev modbus

This commit is contained in:
zonetest 2017-08-25 14:47:08 -04:00
parent 8a5f0fc92e
commit 69ca721ef7
4 changed files with 73 additions and 32 deletions

View File

@ -242,8 +242,13 @@ qint16 CModbusCCMgr::GetZT1TrainType()
{ {
Type = TRAIN_TYPE_MPM10; Type = TRAIN_TYPE_MPM10;
} }
else if(Reg == 0)
{
Type = TRAIN_TYPE_MAINTENANCE_VEHICLE;
}
else else
{ {
CEngLog::instance()->AddLogString(QString("MODBUS: Réception d'un type de train ZT1 invalide du SACL [%1]").arg(Reg));
Type = TRAIN_TYPE_UNKNOWN; Type = TRAIN_TYPE_UNKNOWN;
} }
} }
@ -254,9 +259,30 @@ qint16 CModbusCCMgr::GetZT2TrainType()
{ {
bool OK = false; bool OK = false;
qint16 Reg = mModbusRepo->GetSingleReg(MODBUS_CC_ZT2_TRAIN_TYPE_REG_ADD,&OK); qint16 Reg = mModbusRepo->GetSingleReg(MODBUS_CC_ZT2_TRAIN_TYPE_REG_ADD,&OK);
int Type = TRAIN_TYPE_UNKNOWN;
if(OK) if(OK)
{ {
return Reg; if(Reg == 63)
{
Type = TRAIN_TYPE_MR63;
} }
return 0; else if(Reg == 73)
{
Type = TRAIN_TYPE_MR73;
}
else if(Reg == 10)
{
Type = TRAIN_TYPE_MPM10;
}
else if(Reg == 0)
{
Type = TRAIN_TYPE_MAINTENANCE_VEHICLE;
}
else
{
CEngLog::instance()->AddLogString(QString("MODBUS: Réception d'un type de train ZT2 invalide du SACL [%1]").arg(Reg));
Type = TRAIN_TYPE_UNKNOWN;
}
}
return Type;
} }

View File

@ -28,7 +28,7 @@
#include "ZTData.h" #include "ZTData.h"
const char * CZTData::TrainTypeString[] = {"Inconnu","MR63/73", "MPM10", "MR63", "MR73"}; const char * CZTData::TrainTypeString[] = {"Inconnu","MR63/73", "MPM10", "MR63", "MR73", "Véhicule Travaux"};
CZTData::CZTData() CZTData::CZTData()
{ {
} }

View File

@ -115,6 +115,7 @@ enum eTrainTypeID
TRAIN_TYPE_MPM10, TRAIN_TYPE_MPM10,
TRAIN_TYPE_MR63, TRAIN_TYPE_MR63,
TRAIN_TYPE_MR73, TRAIN_TYPE_MR73,
TRAIN_TYPE_MAINTENANCE_VEHICLE,
TRAIN_TYPE_MAX_ID TRAIN_TYPE_MAX_ID

View File

@ -303,7 +303,6 @@ unsigned int CZTStateMachine::ZT1StateMachine(unsigned int Event, unsigned int S
mZT1Log.mZT1Flags.mPGCalibrationON = (mIsPGCalibON == true); mZT1Log.mZT1Flags.mPGCalibrationON = (mIsPGCalibON == true);
mZT1State = ZT1_TRAIN_ON_APPROACH_CDV_STATE; mZT1State = ZT1_TRAIN_ON_APPROACH_CDV_STATE;
} }
} }
else if(mZTStationPtr->IsZT1ApproachCDVOccupied() && !mZTStationPtr->IsZT1CDVOccupied()) //Normal situation else if(mZTStationPtr->IsZT1ApproachCDVOccupied() && !mZTStationPtr->IsZT1CDVOccupied()) //Normal situation
{ {
@ -340,6 +339,19 @@ unsigned int CZTStateMachine::ZT1StateMachine(unsigned int Event, unsigned int S
mZT1State = ZT1_WAIT_FOR_TRAIN_STATE; mZT1State = ZT1_WAIT_FOR_TRAIN_STATE;
} }
else if(mZTStationPtr->IsZT1CDVOccupied()) else if(mZTStationPtr->IsZT1CDVOccupied())
{
bool abort = false;
if(mModbusCCMgr != 0)
{
if(mModbusCCMgr->GetZT1InhibitionFlag() == true) //Check if the CC wants us to analyze the passage
{
abort = true;
CZTLog::instance()->AddLogString("Passage de train inhibé par le SACL");
mZT1State = ZT1_WAIT_FOR_SUBSEQUENT_LIBERATION; //Wait for the train to leave the ZT
}
}
if(abort == false)
{ {
mZT1ActiveStatus = SB_ZT_ACTIVE_STATUS; mZT1ActiveStatus = SB_ZT_ACTIVE_STATUS;
mZTPagePTr->SetZTStatus(mNbPassages,mNbTriggers,mZT1ActiveStatus,mZT2ActiveStatus); mZTPagePTr->SetZTStatus(mNbPassages,mNbTriggers,mZT1ActiveStatus,mZT2ActiveStatus);
@ -372,6 +384,8 @@ unsigned int CZTStateMachine::ZT1StateMachine(unsigned int Event, unsigned int S
emit PGCalibrationStatus(mCalibrationPassagesCount+1,mPGNbTotalPassages); emit PGCalibrationStatus(mCalibrationPassagesCount+1,mPGNbTotalPassages);
} }
mZT1State = ZT1_ANALYZE_TRAIN_STATE; mZT1State = ZT1_ANALYZE_TRAIN_STATE;
}
} }
break; break;
} }