closed

Loginbox

Please enter your username and password into the following fields to log in.


  • Username:
  • Password:
  •  
  • Auto log in on every visit.


  •  

Modbus RTU TimeOut möglich?



pvs-deck offline
PowerUser
Avatar
Gender: male
Location: GERMANY 
Age: 49
Posts: 1170
Registered: 02 / 2009
Homepage Private message
Subject: Modbus RTU TimeOut möglich?  -  Posted: 23.01.2021 - 09:59   -  
Hallo Leute,

ich habe da ein Problem mit einer Steuerung, ich greife über einen Konverter Ethernet auf Modbus RTU RS485 auf meine Modbus-Steuerung zu. Im Prinzip läuft das schon seit vielen Jahren so. Aktuell wurden einige Umbaumaßnahmen im Netz getätigt (Neue Router, neue Netzsegmente usw.), seit dem Umbau kommt es ab und an vor, das die Kommunikation zwischen dem Konverter und unserer Steuerung mittendrinnen abgebrochen wird. Ist dies der Fall, reagiert der AVRco Modbus-Treiber plötzlich nicht mehr.

Eigentlich dachte ich immer, beim Modbus-RTU gilt eine Strenge Zeitschiene, also müsste doch der Slave nach einen TimeOut ein <NOK> senden und auf einen neuen Befehl warten.

Das macht er aber nicht, ist in dem RTU-Treiber irgendwie die Möglichkeit den Timer dafür anzupassen?

Im Ascii-Treiber habe ich das gefunden:
Code
Procedure mb_SetModBusTimeout (time: word);
{set timeout in ms} Function mb_GetModBusTimeout: word;
{get timeout in ms}

Beim RTU habe ich nichts gefunden.

Wenn ich die Steuerung bei diesem Problem resete läuft es wieder, kann ich irgendwo den ModbusRTU Treiber neustarten, ohne reset?

Wenn es hier keine saubere TimeOut Funktion im Treiber gibt, würde ich es mit einem Workaround machen. ich würde einen Timer mitlaufen lassen, wenn 5 Minuten lang kein neues Telegramm kommt und verarbeitet wird, würde ich die Steuerung per Software reseten. So würden diese abgesetzten Steuerungen nach spätestens 5 Minuten wieder laufen.

Oder hat Jemand eine andere Idee?

Thorsten
---------------------------------------------------------
Nichts ist unmöglich in der Elektronik und der Software, die Grenzen
setzt nur das Budget, Zeit und der Entwickler! ( P V S - D E C K )
This post has been edited 1-times. Last edit: 23.01.2021 - 10:01 by pvs-deck.
go down go up
Avra hidden
Schreiberling
Avatar
Gender: male
Location: SERBIA  Belgrade, Serbia
Age: 50
Posts: 631
Registered: 07 / 2002
Homepage Private message
Subject: Re: Modbus RTU TimeOut möglich?  -  Posted: 25.01.2021 - 15:59   -  
This is what body of RTU process looks like:
Code
process WaitForRTU(30, 60 : iData); // this is called when modbus rtu message has arrived
var
  ...
begin
  SetMB_RTUstart;
  WaitSema(mb_RTUsema);
  ...
end;


WaitForRTU() is waiting for a received message semaphore set by Rolf's ASM timer routine. If you can make a reproducable example of message which stops RTU engine then Rolf and I can take a look if we can also reproduce that and see if it is indeed a bug.

Maybe Rolf can say if only MODBUS driver can be reset by code. I don't know how except cpu restart. With ASCII driver I had full control so I have implemented timeout, but with RTU interrupt part of the driver was made by Rolf and receiving RTU message is beyond my control.

I can just say that there are diagnostic counters which you can check if they change:
Code
procedure mb_ResetDiagnosticCounters;
begin
  CPT1_BusMessageCount            := 0;
  CPT2_BusCommunicationErrorCount := 0;
  CPT3_SlaveExceptionErrorCount   := 0;
  CPT4_SlaveMessageCount          := 0;
  CPT5_SlaveNoResponseCount       := 0;
  CPT6_SlaveNAKCount              := 0;
  CPT7_SlaveBusyCount             := 0;
  CPT8_BusCharacterOverrunCount   := 0;
  //
  CPT_CommEventCounter            := 0;
end;


You might also want to take a look at setAfterRegisterRead() and similar functions where you might want to put your software watchdog timeout reset.
This post has been edited 1-times. Last edit: 26.01.2021 - 09:17 by Avra.
go down go up
pvs-deck offline
PowerUser
Avatar
Gender: male
Location: GERMANY 
Age: 49
Posts: 1170
Registered: 02 / 2009
Homepage Private message
Subject: Re: Modbus RTU TimeOut möglich?  -  Posted: 11.02.2021 - 10:29   -  
Hello Avra,

thank you for the Info.

>>Maybe Rolf can say if only MODBUS driver can be reset by code.
@rolf;
Hast Du eine Idee, wie ich den Neustart des Modbus-RTU Treibers bewerkstelligen kann ohne ein Reset der kompletten Steuerung zu machen?

Thorsten
---------------------------------------------------------
Nichts ist unmöglich in der Elektronik und der Software, die Grenzen
setzt nur das Budget, Zeit und der Entwickler! ( P V S - D E C K )
go down go up
 


Registered users in this topic
Currently no registered users in this section

Delete cookies of this forum  •  FAQ / Help  •  Team page  •  Imprint   |  Local time: 02.03.2021 - 20:45