Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched.
Close
Hopefully someone can give some advice here--the short version is that our PLC is an OPC client using the datasources manager, and it cannot handle floats or doubles from the server.
We have a python OPC server running on a linux PC, and a Codesys PLC running on a RevPi. On the PLC, there is a Data Sources Manager set up with one source from the OPC server. The PLC can connect to the server and run just fine, provided the PLC is not trying to access any floating point type variables (either they are not in the server at all, or the PLC is not looking at those variables according to the configuration of the datasource).
However, as soon as we add any OPC floats or doubles to the server, the PLC no longer functions. In the "Datasource" editor, it is able to "update variables" and insert items structured in the "DataSources_Objects" folder, and it correctly applies the REAL or LREAL type mapping to floats and doubles, respectively. The program compiles fine. But when we try to switch the PLC to "run" mode, it encounters a program exception and halts.
We only need STRING, LINT, BOOL, and LREAL types available. Only the LREAL type is causing trouble.
There is nothing in the call stack, and there are no messages in the Messages area. The PLC log gives two pieces of information:
" EXCEPTION [AccessViolation] occurred: App=[Application], Task=[OPCUAClient388] "
" SOURCEPOSITION* App=[Application] area=3, offset=1158772 "
The Component for both these exceptions is "CmpIecTask"
Further, a UAexpert client is able to browse and edit all nodes in our server, no matter the type.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
Hopefully someone can give some advice here--the short version is that our PLC is an OPC client using the datasources manager, and it cannot handle floats or doubles from the server.
We have a python OPC server running on a linux PC, and a Codesys PLC running on a RevPi. On the PLC, there is a Data Sources Manager set up with one source from the OPC server. The PLC can connect to the server and run just fine, provided the PLC is not trying to access any floating point type variables (either they are not in the server at all, or the PLC is not looking at those variables according to the configuration of the datasource).
However, as soon as we add any OPC floats or doubles to the server, the PLC no longer functions. In the "Datasource" editor, it is able to "update variables" and insert items structured in the "DataSources_Objects" folder, and it correctly applies the REAL or LREAL type mapping to floats and doubles, respectively. The program compiles fine. But when we try to switch the PLC to "run" mode, it encounters a program exception and halts.
We only need STRING, LINT, BOOL, and LREAL types available. Only the LREAL type is causing trouble.
There is nothing in the call stack, and there are no messages in the Messages area. The PLC log gives two pieces of information:
" EXCEPTION [AccessViolation] occurred: App=[Application], Task=[OPCUAClient388] "
" SOURCEPOSITION* App=[Application] area=3, offset=1158772 "
The Component for both these exceptions is "CmpIecTask"
Further, a UAexpert client is able to browse and edit all nodes in our server, no matter the type.