Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[4diac-dev] Old modbus improvements and an OPC UA bugfix

Hi all! I hope I'm at the right place.

I made many improvements for the old Modbus implementation (I've completely missed that you already have something new in the making, but still, it is halted for at least a year now). It is possible now to use multiple FBs for the same Modbus connection and it supports coils and what not. It's still not a pretty solution but at least it is better than it was.

I've put all my changes on Bitbucket if you want to take a look or even take them: https://bitbucket.org/dcihlar/forte-modbus/src/modbus-improvements/ , on "modbus-improvements" branch.

I've also found out that OPC UA thread uses 100% CPU and it turned out to be wrong units of time. Semaphores expect us, but a ms value is given and therefore it returns immediately:

--- a/src/com/opc_ua/opcua_local_handler.cpp
+++ b/src/com/opc_ua/opcua_local_handler.cpp
@@ -98,7 +98,7 @@ void COPC_UA_Local_Handler::run() {
             timeToSleepMs = scmMinimumIterationWaitTime;
           }
 
-          mServerNeedsIteration.timedWait(static_cast<unsigned int>(timeToSleepMs));
+          mServerNeedsIteration.timedWait(static_cast<TForteUInt64>(timeToSleepMs) * 1000);
         }
         retVal = UA_Server_run_shutdown(mUaServer);
         if(UA_STATUSCODE_GOOD == retVal) {

Anyway, I hope this will be useful to you. I'm really liking 4diac, this is some great work you're doing. But it is still missing at least some documentation about generic FBs and things like that. :) I figured that out only after looking through the source code.

Best regards,
Davor Cihlar


Back to the top