Opened 9 years ago

Last modified 9 years ago

#362 accepted Fehler

Modbus userlist

Reported by: Gerd Hedtke Owned by: Sebastian Herschmann
Priority: mittelfristig Milestone: 01 Nächstes Release
Component: Gesamtsystem Version: ALLE
Severity: Fehler Keywords:
Cc:

Description

Durch die Softwareerweiterung für das Gateway wurden einige Sichtbarkeitsregeln für Messwerte und Parameter überarbeitet.
Diese Regeln sind für das nicht Funktionieren der Modbus-Userlist verantwortlich. Alle Modbusregister die in der originalen Liste vorhanden sind, können neu belegt werden, unbekannte Register bringen einen Fehler.

Attachments (1)

usrmbl.csv (44 bytes ) - added by Gerd Hedtke 9 years ago.
Modbus Userlist von Thilo Polz bereitgestellt

Download all attachments as: .zip

Change History (5)

comment:1 by Gerd Hedtke, 9 years ago

Erklärung:

int CModbusSlave::RegisterToModbus(uint16 Reg, uint16 RegAnz,bool disableusr)
...
pMBL=FindRegister(Register,disableusr);
if ((NULL == pMBL) || (!IsRegisterVisible(pMBL->Reg)))	// Angefordertes Register NICHT in der Liste
...
bool CModbusSlave::IsRegisterVisible(uint16 Reg)
{
   Hier wird nur in MBL gesucht, nicht in der UserModbusliste usrMbl
}
 

das führt dazu, dass ein Eintrag der Usermodbusliste mit ihrer Registernummer in MBL gesucht werden.

Richtig wäre:

  • Eintrag der usrMBL namentlich im MBL suchen,
  • die Registernummer des Eintrags ist die Originalnummer, mit der in MBL gesucht werden kann.
Last edited 9 years ago by Gerd Hedtke (previous) (diff)

comment:2 by Gerd Hedtke, 9 years ago

Milestone: 01 Nächstes Release

comment:3 by Sebastian Herschmann, 9 years ago

Owner: set to Sebastian Herschmann
Status: newaccepted

by Gerd Hedtke, 9 years ago

Attachment: usrmbl.csv added

Modbus Userlist von Thilo Polz bereitgestellt

comment:4 by volker heinemann, 9 years ago

Im Rückgabepointer der Funktion FindRegister pMBL steht bereits die Information pMBL-Access zum gesuchten Register drin. Man braucht also nicht nochmal nach dem Register suchen.

In der Funktion ReadUsrMbl wird Access gesetzt. Achtung: Access ist ein Array über alle GC-Varianten, es wird nur das Array-Element zur gegenwärtig aktiven GC-Variante gesetzt alle anderen sind undefiniert.

Wichtig: Überprüfen ob ReadUsrMbl auch bei Änderung des Parameters GCVariante ausgeführt wird. Problem ist hier die Logic mit mystat (Zeitstempel der UserModbusListen-Datei) zur Ermittlung ob such was verändert hat. Hier ist die mögliche Änderung der GCVariante nicht berücksichtigt.

Note: See TracTickets for help on using tickets.