Modbus dev...
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user