Modbus dev...

This commit is contained in:
JFMartel
2017-07-14 07:14:20 -04:00
committed by zonetest
parent 4e31b27857
commit dc75fc9313
6 changed files with 75 additions and 19 deletions
+9 -9
View File
@@ -84,10 +84,10 @@
//Incoming
#define MODBUS_CC_ZTC_ZT1_FLAG_MASK 0x0001
#define MODBUS_CC_ZTC_ZT2_FLAG_MASK 0x0002
#define MODBUS_CC_FCYCLE_ZT1_FLAG_MASK 0x0004
#define MODBUS_CC_FCYCLE_ZT2_FLAG_MASK 0x0008
#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_DATA_BASE_REG_ADD 2028
#define MODBUS_CC_TABLE_DATA_SIZE 13 //Taille de la table = 28 registres
@@ -95,11 +95,11 @@
#define MODBUS_CC_WATCHDOG_BASE_REG_ADD 2028
#define MODBUS_CC_AN_BASE_REG_ADD 2029
#define MODBUS_CC_CLK_UPDATE_BASE_REG_ADD 2036
#define MODUBS_CC_CLK_SEC_BASE_REG_ADD 2037
#define MODUBS_CC_CLK_HR_MIN_BASE_REG_ADD 2038
#define MODUBS_CC_CLK_MNT_DAY_BASE_REG_ADD 2039
#define MODUBS_CC_CLK_YEAR_BASE_REG_ADD 2040
#define MODBUS_CC_CLK_UPDATE_BASE_REG_ADD 2038
#define MODUBS_CC_CLK_SEC_BASE_REG_ADD 2039
#define MODUBS_CC_CLK_HR_MIN_BASE_REG_ADD 2040
#define MODUBS_CC_CLK_MNT_DAY_BASE_REG_ADD 2041
#define MODUBS_CC_CLK_YEAR_BASE_REG_ADD 2042
#endif // PROTOCOLDEFS_H
+6
View File
@@ -116,6 +116,8 @@ int CModbusRepository::WriteHRData(quint16 StartAddress, quint16 Length, QByteAr
}
mMutex.unlock();
emit RepoChanged(StartAddress,Length);
return RET_OK;
}
@@ -133,6 +135,8 @@ int CModbusRepository::WriteSingleReg(quint16 Address, quint16 Value)
mHoldingRegisters[RegisterIndex].mRegistersData[DataIndex] = Value;
mMutex.unlock();
emit RepoChanged(Address,1);
return RET_OK;
}
@@ -152,6 +156,8 @@ int CModbusRepository::WriteMultipleRegs(quint16 StartAddress, QList<qint16> Dat
mHoldingRegisters[RegisterIndex].mRegistersData[DataIndex++] = Data.at(i);
}
mMutex.unlock();
emit RepoChanged(StartAddress,Data.size());
return RET_OK;
}
+6 -1
View File
@@ -14,8 +14,9 @@ public:
};
class CModbusRepository
class CModbusRepository : public QObject
{
Q_OBJECT
public:
CModbusRepository();
@@ -28,11 +29,15 @@ public:
int WriteHRData(quint16 StartAddress, quint16 Length, QByteArray Data);
int WriteSingleReg(quint16 Address, quint16 Value);
int WriteMultipleRegs(quint16 StartAddress, QList<qint16> Data);
const QList<CHRDataMap> *GetRepo(){return &mHoldingRegisters;}
private:
QList<CHRDataMap> mHoldingRegisters;
QReadWriteLock mMutex;
signals:
void RepoChanged(quint16 StartAddress, quint16 Length);
};
#endif // MODBUSREPOSITORY_H
+2 -2
View File
@@ -701,6 +701,6 @@ void CModbusTKTransport::ExecZT2SM()
void CModbusTKTransport::ModbusCCUpdated()
{
qint16 ClearReg = mModbusRepo->GetSingleReg(MODBUS_CC_AN_BASE_REG_ADD);
mZT1Clear = (ClearReg & (MODBUS_CC_FCYCLE_ZT1_FLAG_MASK | MODBUS_CC_ZTC_ZT1_FLAG_MASK)) != 0;
mZT2Clear = (ClearReg & (MODBUS_CC_FCYCLE_ZT2_FLAG_MASK | MODBUS_CC_ZTC_ZT2_FLAG_MASK)) != 0;
mZT1Clear = (ClearReg & (MODBUS_CC_FCYCLE_ZT1_FLAG_MASK)) != 0;
mZT2Clear = (ClearReg & (MODBUS_CC_FCYCLE_ZT2_FLAG_MASK)) != 0;
}