Opened 13 years ago
Closed 13 years ago
#165 closed Aufgabe (fixed)
RMGBus > Modbus
| Reported by: | Melanie Hermann | Owned by: | Melanie Hermann |
|---|---|---|---|
| Priority: | kurzfristig | Milestone: | |
| Component: | Gesamtsystem | Version: | |
| Severity: | Fehler | Keywords: | |
| Cc: |
Description (last modified by )
Wenn z.B. auf der COM6 RMGBus eingestellt ist und dann auf Modbus umgeschaltet wird kommt die Trace-Meldung "ModbusSlave 6 kann COM3: nicht öffnen". Wenn dann die Auswahl Modbus ein zweites Mal bestätigt wird kommt folgende Trace-Meldung "ModbusSlave 6 COM3: geöffnet".
Wird aber von Modbus auf RMGBus umgeschaltet funktioniert dieser sofort.
TODO:
Prüfen, worin Problem besteht beim ersten Umschalten.
Change History (2)
comment:1 by , 13 years ago
| Description: | modified (diff) |
|---|
comment:2 by , 13 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
DONE:
Problem lag darin, dass der Modbus zuerst versucht hat die COM zu öffnen und erst danach hat der RMGBus die COM geschlossen.
Nun wird abhängig vom gewählten Modus entschieden ob zuerst RMGBus oder zuerst Modbus die COM schließt und dann anschließend RMGBus oder Modbus die COM öffnet.
Von diesem Problem waren COM3 und COM6 betroffen.
Änderungen:
InOut.cpp, SetComModeAndParameter():
Vorher:
... case COM3: SerSetBiosParameter(com,nValue(ComBaudrate)[idx], nValue(ComBits)[idx],nValue(ComMode)[idx]); theApp.m_MbCanCOM3->ModeChanged(); theApp.m_RmgbCanCOM3->ModeChanged(); //Dsfg läuft immer und wird bei passendem Mode in CanToDSfG versorgt break; case COM4: ... break; case COM5: ... break; case COM6: // Mode changed theApp.m_MbCOM6->ModeChanged(); theApp.m_RmgbCOM6->ModeChanged(); // Parameter changed SerSetRS485Time (com,nValue(ComBaudrate)[idx]); switch(nValue(ComMode)[5]) { case ComMode_5_AUS: break; case ComMode_5_MODBRTU: case ComMode_5_MODBASC: theApp.m_MbCOM6->ParamsChanged(); break; case ComMode_5_RMGBOUT: theApp.m_RmgbCOM6->ParamsChanged(); break; default: ASSERT(false); // TODO } break; case COM7: ...Jetzt:
case COM3: SerSetBiosParameter(com,nValue(ComBaudrate)[idx], nValue(ComBits)[idx],nValue(ComMode)[idx]); switch(nValue(ComMode)[2]) { case ComMode_2_AUS: theApp.m_MbCanCOM3->ModeChanged(); theApp.m_RmgbCanCOM3->ModeChanged(); break; case ComMode_2_MODBRTU: case ComMode_2_MODBASC: theApp.m_RmgbCanCOM3->ModeChanged(); theApp.m_MbCanCOM3->ModeChanged(); break; case ComMode_2_RMGBOUT: theApp.m_MbCanCOM3->ModeChanged(); theApp.m_RmgbCanCOM3->ModeChanged(); break; default: ASSERT(false); // TODO } //Dsfg läuft immer und wird bei passendem Mode in CanToDSfG versorgt break; case COM4: ... break; case COM5: ... break; case COM6: // Mode changed switch(nValue(ComMode)[5]) { case ComMode_5_AUS: theApp.m_MbCOM6->ModeChanged(); theApp.m_RmgbCOM6->ModeChanged(); break; case ComMode_5_MODBRTU: case ComMode_5_MODBASC: theApp.m_RmgbCOM6->ModeChanged(); theApp.m_MbCOM6->ModeChanged(); break; case ComMode_5_RMGBOUT: theApp.m_MbCOM6->ModeChanged(); theApp.m_RmgbCOM6->ModeChanged(); break; default: ASSERT(false); // TODO } // Parameter changed SerSetRS485Time (com,nValue(ComBaudrate)[idx]); switch(nValue(ComMode)[5]) { case ComMode_5_AUS: break; case ComMode_5_MODBRTU: case ComMode_5_MODBASC: theApp.m_MbCOM6->ParamsChanged(); break; case ComMode_5_RMGBOUT: theApp.m_RmgbCOM6->ParamsChanged(); break; default: ASSERT(false); // TODO } break; case COM7: ...