Post by kurtk on SysProcess Execute Command unable to run commands with special characters
CODESYS Forge
talk
(Post)
Thank you for this additional information. Could you please provide the references to the official documentation where you found this information ? I got as far as: Then insert this: [SysProcess] BasePriority=Realtime Command=AllowAll devoid of references of where the CodesysContol.cfg file was located or of the need to run codesys as root I incrementally located bits of information with perplexity searches but remained mired at error 25 ERR_NO_ACCESS I am curious whether root access is MANDATORY to run SysProcessExecuteCommand (- and/or any other SysProcess functions) or if a more access-constrained User=quasiroot could suffice without the security concerns ? Apparently codesys runs fine without User=root for almost everything... That raises the question: What IS the default codesys user ? I notice in the prototypes: VAR sCommand : STRING := '/usr/bin/whoami'; sOutput : STRING(255); refCommand : REFERENCE TO STRING; refOutput : REFERENCE TO STRING; resultCmd : UDINT; END_VAR whenever I attempt to build this Codesys v3.5 SP2 whines that "cannot convert type REFERENCE TO STRING to STRING" don't remember the exact message... Apparently this happens whenever a fixed-length string is involved. if I get rid of (255) and just set the string := ' '; that is sufficient to make the compiler happy. Is this a recently enforced constraint ? Why does this compile for you and not for me ? There are references to functions / utilities which are used/needed to massage the string references - but I see no specific details... I also notice you specify: Make sure the lib SysProcessImplementation, SysTypes, and CmpErrors is on the project. I don't comprehend why all of the dependent libraries are not automatically referenced, added ? I don't recall seeing anywhere but here that SysProcessImplementation must be included... It just seems odd that the default is to exclude essential libraries, or require alchemical conjuring to assemble all the ingredients for gnat soup ;-) Thanks a lot... I'm still a codesys newby getting my wheels on - or sometimes just partially on
Last updated: 2025-09-12
Post by mariusz997 on Visualisation - internal error
CODESYS Forge
talk
(Post)
Hi everyone. I try to reach Codesys but I have problem on the beginning. I use Codesys 3.5.18.60 and 3.5.18.30 . On both version I have this same problem - when I create new standard project with controller Control Win v3 x64, empty PLC program - I compile it and everything is ok. But when I add visualisation without any elements and compile it - I get: ~~~ ------ Build started: Application: Device.Application ------- Typify code... Generate code... Generate global initializations... [WARNING] SortingStation: HMI Device: PLC Logic: Application: Missing element configuration. Element may not be usable. [WARNING] SortingStation: fbOutletConveyour Device: PLC Logic: Application: C0196: Implicit conversion from unsigned Type 'WORD' to signed Type 'INT' : Possible change of sign [ERROR] Internal error:System.NullReferenceException: Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu (in english: Object reference not set to an instance of an object.). w _3S.CoDeSys.Codex86_64.V351500.CPUx86_64.CodeStore(TypeClass tc, Register RegBase, Register RegIndex, Int32 nOffset, Register RegSrc, Int32 nScale) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.GenerateVarAbsolut(IVariableExpression varexp, Int32 iArea, Int32 nAddress, IIndexInfo indexinfo, ICompiledType ctype, Int32 nTypeSize, IAccessMode am) w ..(_IVariableExpression ) w ..(IExprement ) w ..(IExprement ) w ..(_ICompoAccessExpression ) w ..(IExprement ) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(IAssignmentExpression assign) w ..(_IAssignmentExpression ) w ..(IExprement ) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(IExpressionStatement expstat) w ..(IExprement ) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(ISequenceStatement seq) w ..(IExprement ) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(ISequenceStatement seq) w ..(IExprement ) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(ISequenceStatement seq) w ..(IExprement ) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(ISequenceStatement seq) w ..(IExprement ) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(ISequenceStatement seq) w ..(IExprement ) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(ICompiledPOU cpou, ISequenceStatement mainRoutine, Boolean bKeepCompileInformation, IEnumerable`1 subroutines) w _3S.CoDeSys.Codex86_64.V351500.Codex86_64_V351500.Generate(ICompiledPOU cpou, Boolean bKeepCompileInformation) w ..(_ICompiledPOU ) w _3S.CoDeSys.Compiler35180.Phase5_Codegeneration.Codegeneration.(_ICompiledPOU , _ISignature ) w ..(_ICompiledPOU , Boolean , Boolean , _ICompileContext , _ICompileContext , Boolean , Codegeneration , Boolean& , Boolean , Boolean ) w ..(Boolean , Boolean , _ICompileContext , _ICompileContext , InitExitSignatureInfo , Boolean , Codegeneration , _ISignature , Boolean& , Boolean , Boolean ) w _3S.CoDeSys.Compiler35180.CompilerPhases.CompilerPhase5_Codegenerator.(Codegeneration , _ISignature , InitExitSignatureInfo& , Boolean& ) w _3S.CoDeSys.Compiler35180.CompilerPhases.CompilerPhase5_Codegenerator.(Codegeneration , _ISignature ) w _3S.CoDeSys.Compiler35180.CompilerPhases.CompilerPhase5_Codegenerator.(ICodegenerator ) w ..() w ..() Build complete -- 1 errors, 2 warnings : No download possible ~~~ Could someone help me with this problem? Thank you in advance Mariusz
Last updated: 2025-11-11
Post by baltzer on ICertificateVerifier.VerifyCertificate doesn't appear to override an ERR_CERT_HAS_EXPIRED rejection in TCP_Client.Upgrade()
CODESYS Forge
talk
(Post)
Follow-up: working workaround found (routing TLS outside CODESYS) For anyone finding this thread later with the same problem (a third-party device presenting a self-signed and/or expired certificate that ICertificateVerifier/udiVerificationMode won't let you connect through) - we never got a working fix within NBS itself, but found a practical workaround worth sharing. Approach: run a local TLS-terminating proxy on the same host as the CODESYS runtime, and have CODESYS talk plain, unencrypted TCP to it instead of connecting to the remote device directly over TLS: CODESYS --plain TCP--> 127.0.0.1:<port> --stunnel/TLS--> <remote device>:<port> We used stunnel (client mode), with certificate verification explicitly disabled at that layer (verifyChain = no, verifyPeer = no) - a simple, well-documented one-line option, unlike anything we could get working inside NBS. Running it as a systemd service with Restart=always means it survives reboots and recovers automatically if the proxy or the remote device drops. On the CODESYS side, this required no changes beyond pointing TCP_Client at 127.0.0.1 instead of the device's real IP, and removing the TLSContext/ICertificateVerifier code entirely - the rest of our application-layer logic (framing, checksums, etc.) was completely unaffected, since none of that ever depended on where the TLS termination happened. Confirmed working end-to-end against a real device with an expired self-signed certificate, running on CODESYS Control for Raspberry Pi SL (Linux). We haven't yet set this up on Windows - stunnel does have Windows builds available, so the same general approach should be possible there too, but that combination isn't tested or confirmed by us at this point. Caveat: this only makes sense when the proxy and the CODESYS runtime are on the same trusted host (in our case, both on the same Raspberry Pi) - don't expose the proxy's plaintext side on a reachable network interface, since that would create an unauthenticated plaintext path to the device. The original question - whether there's a supported way to override an ERR_CERT_HAS_EXPIRED/self-signed rejection from within NBS's own TLSContext/ICertificateVerifier - remains open as far as we know. Still happy to hear from anyone who's solved that particular piece, since the workaround above is a practical detour rather than an actual answer to the original question.
Last updated: 2026-08-06
Post by mogam on Internal error:System.NullReferenceException: The object reference was not set to an object instance.
CODESYS Forge
talk
(Post)
Hi everyone, I have a my App that reads values from a shared memory than 2 variables x,y were calculated. here as you can see in my code: PROGRAM PLC_PRG VAR szName : STRING := '/SM'; ( Name of the shared memory.) uxiSize : __UXINT := 646 * 2 * SIZEOF(REAL); ( Size of the shared memory. ) hShm : RTS_IEC_HANDLE; ( Handle to the shared memory ) pStart : POINTER TO REAL; ( Pointer to the first element in the memory ) pData : POINTER TO REAL; ( Pointer, which is incremented until the last sign in the memory is reached. ) shared_data :ARRAY[0..645, 0..1] OF REAL; velocity : ARRAY[0..2] OF REAL; ( Velocity array ) position : ARRAY[0..2] OF REAL; ( Position array ) angleDepth : ARRAY[0..645, 0..1] OF REAL; ( Angle and depth array ) xEndOfMemory : BOOL; x : ARRAY[0..645] OF REAL := 1.0; y : ARRAY[0..645] OF REAL := 1.0; (* Result of actions at the memory. *) OpenResult : RTS_IEC_RESULT; ReadResult : RTS_IEC_RESULT; PointerResult : RTS_IEC_RESULT; DeleteResult : RTS_IEC_RESULT; CloseResult : RTS_IEC_RESULT; i : INT; END_VAR ( Open the shared memory ) hShm := SysSharedMemoryOpen2(szName, 0, ADR(uxiSize), ADR(OpenResult)); IF hShm <> RTS_INVALID_HANDLE THEN (* Read the entire shared memory table *) SysSharedMemoryRead(hShm:= hShm, ulOffset:= 0, pbyData:= ADR(shared_data), ulSize:= uxiSize, pResult:= ADR(ReadResult)); (* Fetch the pointer from the shared memory. The pointer is pointing to the first element address *) //pStart := SysSharedMemoryGetPointer(hShm, ADR(PointerResult)); (* Close the shared memory *) //CloseResult := SysSharedMemoryClose(hShm := hShm); (* Read velocity and position data from the shared memory *) FOR i := 0 TO 2 DO velocity[i] := shared_data[i, 0]; position[i] := shared_data[i, 1]; END_FOR; (* Read angle and depth data from the shared memory *) FOR i := 0 TO 645 DO angleDepth[i, 0] := shared_data[(i + 6), 0]; angleDepth[i, 1] := shared_data[(i + 6), 1]; END_FOR; FOR i := 0 TO 645 DO x[i] := angleDepth[i, 1]*COS(angleDepth[i, 0]); y[i] := angleDepth[i, 1]*SIN(angleDepth[i, 0]); END_FOR; END_IF For these values an XY-CHART needs to be done and when i create a visualisation and set the x data and y data when i try to compile, i recieve this error: ------ Übersetzungslauf gestartet: Applikation: Device.Read_App ------- Code typisieren ... [FEHLER] Internal error:System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. bei _3S.CoDeSys.LanguageModelManager.LDateType.Accept(ITypeVisitor typvis) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IArrayType ) bei ..(_IPointerType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IPointerType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IPointerType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei _3S.CoDeSys.Compiler35140.Compiler.(_ICompileContext , _IPreCompileContext , _ICompileContext , IProgressCallback ) bei _3S.CoDeSys.Compiler35140.Compiler.(_ICompileContext , Boolean , Boolean , _IPreCompileContext , _IPreCompileContext , _ICompileContext , Boolean , Boolean& , IProgressCallback ) bei _3S.CoDeSys.Compiler35140.Compiler.(Guid , Boolean , Boolean , Boolean , Boolean& , _ICompileContext& , _ICompileContext& , IProgressCallback , Boolean , Boolean ) Kompilierung abgeschlossen -- 1 Fehler, 0 Warnungen Übersetzung abgeschlossen -- 1 Fehler, 0 Warnungen : Kein Download möglich!
Last updated: 2024-05-24
Post by mogam on Internal error:System.NullReferenceException: The object reference was not set to an object instance.
CODESYS Forge
talk
(Post)
Hi everyone, I have a my App that reads values from a shared memory than 2 variables x,y were calculated. here as you can see in my code: PROGRAM PLC_PRG VAR szName : STRING := '/SM'; ( Name of the shared memory.) uxiSize : __UXINT := 646 * 2 * SIZEOF(REAL); ( Size of the shared memory. ) hShm : RTS_IEC_HANDLE; ( Handle to the shared memory ) pStart : POINTER TO REAL; ( Pointer to the first element in the memory ) pData : POINTER TO REAL; ( Pointer, which is incremented until the last sign in the memory is reached. ) shared_data :ARRAY[0..645, 0..1] OF REAL; velocity : ARRAY[0..2] OF REAL; ( Velocity array ) position : ARRAY[0..2] OF REAL; ( Position array ) angleDepth : ARRAY[0..645, 0..1] OF REAL; ( Angle and depth array ) xEndOfMemory : BOOL; x : ARRAY[0..645] OF REAL := 1.0; y : ARRAY[0..645] OF REAL := 1.0; (* Result of actions at the memory. *) OpenResult : RTS_IEC_RESULT; ReadResult : RTS_IEC_RESULT; PointerResult : RTS_IEC_RESULT; DeleteResult : RTS_IEC_RESULT; CloseResult : RTS_IEC_RESULT; i : INT; END_VAR ( Open the shared memory ) hShm := SysSharedMemoryOpen2(szName, 0, ADR(uxiSize), ADR(OpenResult)); IF hShm <> RTS_INVALID_HANDLE THEN (* Read the entire shared memory table *) SysSharedMemoryRead(hShm:= hShm, ulOffset:= 0, pbyData:= ADR(shared_data), ulSize:= uxiSize, pResult:= ADR(ReadResult)); (* Fetch the pointer from the shared memory. The pointer is pointing to the first element address *) //pStart := SysSharedMemoryGetPointer(hShm, ADR(PointerResult)); (* Close the shared memory *) //CloseResult := SysSharedMemoryClose(hShm := hShm); (* Read velocity and position data from the shared memory *) FOR i := 0 TO 2 DO velocity[i] := shared_data[i, 0]; position[i] := shared_data[i, 1]; END_FOR; (* Read angle and depth data from the shared memory *) FOR i := 0 TO 645 DO angleDepth[i, 0] := shared_data[(i + 6), 0]; angleDepth[i, 1] := shared_data[(i + 6), 1]; END_FOR; FOR i := 0 TO 645 DO x[i] := angleDepth[i, 1]*COS(angleDepth[i, 0]); y[i] := angleDepth[i, 1]*SIN(angleDepth[i, 0]); END_FOR; END_IF For these values an XY-CHART needs to be done and when i create a visualisation and set the x data and y data when i try to compile, i recieve this error: ------ Übersetzungslauf gestartet: Applikation: Device.Read_App ------- Code typisieren ... [FEHLER] Internal error:System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. bei _3S.CoDeSys.LanguageModelManager.LDateType.Accept(ITypeVisitor typvis) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IArrayType ) bei ..(_IPointerType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IPointerType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IPointerType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei ..(_ISignature , _IPreCompileContext ) bei ..( ) bei ..(String ) bei ..(String , IVariable[]& , ISignature[]& ) bei ..(String , IVariable[]& , ISignature[]& , IScope& ) bei ..visit(_IVariableExpression , AccessFlag ) bei ..(_IUserdefType ) bei ..(_IVariable , IScope5 , _ICompileContext , _ISignature ) bei ..(_ISignature , IScope5 , _ICompileContext ) bei _3S.CoDeSys.Compiler35140.Compiler.(_ICompileContext , _IPreCompileContext , _ICompileContext , IProgressCallback ) bei _3S.CoDeSys.Compiler35140.Compiler.(_ICompileContext , Boolean , Boolean , _IPreCompileContext , _IPreCompileContext , _ICompileContext , Boolean , Boolean& , IProgressCallback ) bei _3S.CoDeSys.Compiler35140.Compiler.(Guid , Boolean , Boolean , Boolean , Boolean& , _ICompileContext& , _ICompileContext& , IProgressCallback , Boolean , Boolean ) Kompilierung abgeschlossen -- 1 Fehler, 0 Warnungen Übersetzung abgeschlossen -- 1 Fehler, 0 Warnungen : Kein Download möglich!
Last updated: 2024-05-24
Post by brandonje on [Error] IoDrvEtherNetIP Library with Weintek
CODESYS Forge
talk
(Post)
I'm using weintek and Codesys V3.5 SP22 when I try to charge an ethernetIP device show me this error: ------ Build started: Application: Device.Application ------- Typify code... [ERROR] cip object, 4.9.0.0 (codesys): TCPIP_Interface: C0231: Expression of type 'BOOL' expected in this place [ERROR] cip object, 4.9.0.0 (codesys): TCPIP_Interface: C0077: Unknown type: '(_pPhysicalLink^._xLinkState <> CmpSysEthernet.OperStatus.SYSETH_OPERSTAT_Up)' [ERROR] cip object, 4.9.0.0 (codesys): TCPIP_Interface: C0077: Unknown type: 'CmpSysEthernet.OperStatus.SYSETH_OPERSTAT_Up' [ERROR] cip object, 4.9.0.0 (codesys): TCPIP_Interface: C0062: 'CmpSysEthernet.OperStatus' is no structured variable [ERROR] cip object, 4.9.0.0 (codesys): TCPIP_Interface: C0063: 'CMPSYSETHERNET, 3.4.3.0 (3S - SMART SOFTWARE SOLUTIONS GMBH)' contains no definition for 'OperStatus' [ERROR] cip object, 4.9.0.0 (codesys): SendEthFrame [TCPIP_Interface]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): SendEthFrame [TCPIP_Interface]: C0046: Identifier '_diAdapterNumber' not defined [ERROR] cip object, 4.9.0.0 (codesys): SendEthFrame [TCPIP_Interface]: C0032: Cannot convert type 'Unknown type: '_diAdapterNumber'' to type 'DINT' [ERROR] cip object, 4.9.0.0 (codesys): SendEthFrame [TCPIP_Interface]: C0032: Cannot convert type 'Unknown type: 'ADR(ethFrame.ethData)'' to type 'POINTER TO StructEthernetframe' [ERROR] cip object, 4.9.0.0 (codesys): SendEthFrame [TCPIP_Interface]: C0077: Unknown type: 'ethFrame.ethData' [ERROR] cip object, 4.9.0.0 (codesys): SendEthFrame [TCPIP_Interface]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): SendEthFrame [TCPIP_Interface]: C0032: Cannot convert type 'Unknown type: 'ethFrame.udFrameLen'' to type 'ANY' [ERROR] cip object, 4.9.0.0 (codesys): SendEthFrame [TCPIP_Interface]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): _OpenEthAdapter [TCPIP_Interface]: C0032: Cannot convert type 'Unknown type: '((driverInstance * 2) + 1)'' to type 'ANY' [ERROR] cip object, 4.9.0.0 (codesys): _OpenEthAdapter [TCPIP_Interface]: C0077: Unknown type: '(driverInstance * 2)' [ERROR] cip object, 4.9.0.0 (codesys): _OpenEthAdapter [TCPIP_Interface]: C0077: Unknown type: 'driverInstance' [ERROR] cip object, 4.9.0.0 (codesys): _OpenEthAdapter [TCPIP_Interface]: C0046: Identifier 'driverInstance' not defined [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0231: Expression of type 'BOOL' expected in this place [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0077: Unknown type: 'SIZEOF(ethFrame.ethData)' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0077: Unknown type: 'ethFrame.ethData' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0018: 'ethFrame.udFrameLen' is no valid assignment target [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0032: Cannot convert type 'Unknown type: 'ADR(ethFrame.ethData)'' to type 'POINTER TO BYTE' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0077: Unknown type: 'ethFrame.ethData' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [TCPIP_Interface]: C0201: Type 'SysEthernetFrame' is not equal to type 'SysEthernetFrame' of VAR_IN_OUT respectively REFERENCE 'ethFrame' [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0046: Identifier 'ethClose' not defined [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0018: 'ethClose' is no valid assignment target [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0046: Identifier '_diAdapterNumber' not defined [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0032: Cannot convert type 'Unknown type: '_diAdapterNumber'' to type 'DINT' [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0046: Identifier '_diAdapterNumber' not defined [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0018: '_diAdapterNumber' is no valid assignment target [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0046: Identifier '_stName' not defined [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0018: '_stName' is no valid assignment target [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0046: Identifier '_stDescription' not defined [ERROR] cip object, 4.9.0.0 (codesys): _CloseEthAdapter [TCPIP_Interface]: C0018: '_stDescription' is no valid assignment target [ERROR] cip object, 4.9.0.0 (codesys): AddressConflictDetection [TCPIP_Interface]: C0231: Expression of type 'BOOL' expected in this place [ERROR] cip object, 4.9.0.0 (codesys): AddressConflictDetection [TCPIP_Interface]: C0077: Unknown type: '(_pPhysicalLink^._xLinkState = CmpSysEthernet.OperStatus.SYSETH_OPERSTAT_Up)' [ERROR] cip object, 4.9.0.0 (codesys): AddressConflictDetection [TCPIP_Interface]: C0077: Unknown type: 'CmpSysEthernet.OperStatus.SYSETH_OPERSTAT_Up' [ERROR] cip object, 4.9.0.0 (codesys): AddressConflictDetection [TCPIP_Interface]: C0062: 'CmpSysEthernet.OperStatus' is no structured variable [ERROR] cip object, 4.9.0.0 (codesys): AddressConflictDetection [TCPIP_Interface]: C0063: 'CMPSYSETHERNET, 3.4.3.0 (3S - SMART SOFTWARE SOLUTIONS GMBH)' contains no definition for 'OperStatus' [ERROR] cip object, 4.9.0.0 (codesys): Recv [TCPIP_Interface]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): Recv [TCPIP_Interface]: C0046: Identifier '_diAdapterNumber' not defined [ERROR] cip object, 4.9.0.0 (codesys): Recv [TCPIP_Interface]: C0032: Cannot convert type 'Unknown type: '_diAdapterNumber'' to type 'DINT' [ERROR] cip object, 4.9.0.0 (codesys): Recv [TCPIP_Interface]: C0046: Identifier '_diAdapterNumber' not defined [ERROR] cip object, 4.9.0.0 (codesys): Recv [TCPIP_Interface]: C0032: Cannot convert type 'Unknown type: '_diAdapterNumber'' to type 'DINT' [ERROR] memory block manager, 3.5.21.30 (codesys): ObjectRetain [Disposable]: C0448: Operator '__XADD' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] memory block manager, 3.5.21.30 (codesys): ObjectRelease [Disposable]: C0448: Operator '__XADD' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [LLDP_Management]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [LLDP_Management]: C0201: Type 'SysEthernetFrame' is not equal to type 'SysEthernetFrame' of VAR_IN_OUT respectively REFERENCE 'frame' [ERROR] cip object, 4.9.0.0 (codesys): SendFrame [LLDP_Management]: C0201: Type 'SysEthernetFrame' is not equal to type 'SysEthernetFrame' of VAR_IN_OUT respectively REFERENCE 'ethFrame' [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0032: Cannot convert type 'Unknown type: 'ADR(frame.ethData[0])'' to type 'POINTER TO BYTE' [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0077: Unknown type: 'frame.ethData[0]' [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0032: Cannot convert type 'Unknown type: 'SIZEOF(frame.ethData)'' to type 'UDINT' [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0077: Unknown type: 'frame.ethData' [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0018: 'frame.udFrameLen' is no valid assignment target [ERROR] cip object, 4.9.0.0 (codesys): CreateFrame [LLDP_Management]: C0077: Unknown type: 'SysEthernetFrame' [ERROR] iodrvethernetip, 4.9.0.0 (codesys): Receive [UcmmReceiver]: C0448: Operator '__COMPARE_AND_SWAP' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] iodrvethernetip, 4.9.0.0 (codesys): Send [UcmmReceiver]: C0448: Operator '__COMPARE_AND_SWAP' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] iodrvethernetip, 4.9.0.0 (codesys): Enqueue [UcmmQueue]: C0448: Operator '__COMPARE_AND_SWAP' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] iodrvethernetip, 4.9.0.0 (codesys): Enqueue [UcmmQueue]: C0448: Operator '__XADD' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] iodrvethernetip, 4.9.0.0 (codesys): Enqueue [UcmmQueue]: C0448: Operator '__XADD' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] iodrvethernetip, 4.9.0.0 (codesys): Dequeue [UcmmQueue]: C0448: Operator '__XADD' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] iodrvethernetip, 4.9.0.0 (codesys): Dequeue [UcmmQueue]: C0448: Operator '__COMPARE_AND_SWAP' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] iodrvethernetip, 4.9.0.0 (codesys): Dequeue [UcmmQueue]: C0448: Operator '__XADD' is not supported by your current target. At least runtime system version 3.5.14.0 is required. [ERROR] asynchronous job manager, 5.0.0.0 (codesys): ExtendAsync [FactoryBase]: C0448: Operator '__COMPARE_AND_SWAP' is not supported by your current target. At least runtime system version 3.5.14.0 is required. Compile complete -- 71 errors, 0 warnings Build complete -- 71 errors, 0 warnings : No download possible
Last updated: 2 days ago
Post by hwillems on Ranges, Lambdas, on Fixed arrays of structs
CODESYS Forge
talk
(Post)
I do datastructures and algorithms in Codesys. For example a Struct of Person with thing's like IdNumber, Name, Age etc. as example. Now i do all kind of calculations, filters. So i have this pretty big Fixed Array with Structs. On this struct i want to do simple stuff you can do easily in C++/Python/Rust etc. For example i want to do this: AvererageAge := Average(Peoples.Age); Then it will return the average of all members ages. Or Sort struct on age etc. Or sort on alphabetical Name. Or use Lambda functions to filter/mutate out things like, filter out everybody above 18 years old. Or remove people who it's name start with "A". Currently i have to write my own custom function for example sorting on Age. And make a super specific function based on that particulare datastructure. Here an Example: (*Before calling this FIlter method, set the mNodeFilterSwitch to the desired filter.*) CASE mNodeFilterSelect OF (********************************[ Status Filters ]***********************************) NodeID: FOR x := ACS_OUT_BEGIN TO ACS_OUT_END BY 1 DO FOR y := ACS_IN_BEGIN TO ACS_IN_END BY 1 DO IF marrNode[y].Status.oiNodeID > marrNode[y + 1].Status.oiNodeID THEN mNodeTemp := marrNode[y + 1]; marrNode[y + 1] := marrNode[y]; marrNode[y] := mNodeTemp; END_IF; END_FOR; END_FOR; Started: FOR x := DES_OUT_BEGIN TO DES_OUT_END BY -1 DO FOR y := DES_IN_BEGIN TO DES_IN_END BY -1 DO IF marrNode[y].Status.oxStarted > marrNode[y - 1].Status.oxStarted THEN mNodeTemp := marrNode[y - 1]; marrNode[y - 1] := marrNode[y]; marrNode[y] := mNodeTemp; END_IF; END_FOR; END_FOR; Starting: FOR x := DES_OUT_BEGIN TO DES_OUT_END BY -1 DO FOR y := DES_IN_BEGIN TO DES_IN_END BY -1 DO IF marrNode[y].Status.oxStarting > marrNode[y - 1].Status.oxStarting THEN mNodeTemp := marrNode[y - 1]; marrNode[y - 1] := marrNode[y]; marrNode[y] := mNodeTemp; END_IF; END_FOR; END_FOR; END_CASE; I have like 30+ of these in the enum. Not really DRY code right? These are custom made bubble sort filters in a function. You pass in the Datastructure, and say what function you want. (This is an enum collection of sorting functions) And then the Array with Nodes of Structs gets ordered. Why can't we have Iterators and Lambda's and build in standard functions like regular languages? Also i use bubble sort because it's the easiest to implement because i can't get this to code DRY. Problem with ST (Even the new one with classes) that it's very limited for programming datastructures and algorithms. Yes you still not want dynamic memory and you need to choose the correct algorithm so you know the most extreme edge cases regarding the time it takes to execute the algorithms.(Real-time execution) How are other people dealing with this? Here for example saw some software using an adjusted ST language and having FOR EACH possibility: https://www.fernhillsoftware.com/help/iec-61131/structured-text/st-for-each.html You can then build your own custom Iterator functions. I wish the IEC 61131-3 standard would be more expressive and having more standard modern features, but still keep close to the fact of no dynamics memory and real-time systems.
Last updated: 2023-08-31
Post by smeitink on Timeout Error in Modbus Communication with WAGO PFC200 and iEM2050 Meter using 750-652 Module
CODESYS Forge
talk
(Post)
Hi all, I'm looking for help with an issue I've come across while trying to facilitate Modbus communication between a WAGO PFC200 PLC using a 750-652 communication module and an iEM2050 Series Single Phase Energy Meter. I believe to have everything wired and setup correcty, but I keep running into a "Error time out" message, and by now I don't really know what else to try. My setup is as follows: A PFC200 Wago PLC, which has 2 750-652 Serial Interfaces extension modules connected to its field bus. I'm using one of these to talk to a Schneider iEM2050 - kWh-meter over modbus. I have connected terminal 23 (A) of the iEM2050 to connector 6 (A) on the 750-652. I have connected terminal 24 (B) of the iEM2050 to connector 2 (B) of the 750-652. I'm using 200mm of twisted together wires to connected them both, and I have placed a 120 ohm resistor between A and B at both ends. I've attached relevant pinout images to this post. I then wrote a simple program that configures the Mobus port, as per the datasheet of the iEM2050. You can find an image of the relavent page attached to this post too. This is my program: PROGRAM PLC_PRG VAR Master: FbMbMasterSerial; xIsConnected: BOOL; xError: BOOL; iIndex: INT := 1; xTrigger: BOOL; utQuery : typMbQuery := ( bUnitId := 1, // The Modbus unit or slave address bFunctionCode := 4, // Function code for reading input registers uiReadAddress := 1829, // adress for the Power on off counter uiReadQuantity := 1 // Quantity of registers to read ); iStep: INT; oStatusModbus: WagoSysErrorBase.FbResult; utResponseModbus: typMbResponse; xConnect: BOOL := FALSE; delayTimer: TON; END_VAR Master( xConnect:= xConnect, I_Port:= _750_652_24_1, udiBaudrate:= 9600, usiDataBits:= 8, eParity:= WagoTypesCom.eTTYParity.Even, eStopBits:= WagoTypesCom.eTTYStopBits.One, eHandshake:= WagoTypesCom.eTTYHandshake.None, ePhysical:= WagoTypesCom.eTTYPhysicalLayer.RS485_HalfDuplex, xIsConnected=> xIsConnected, xError=> xError, oStatus=> oStatusModbus, eFrameType:= WagoAppPlcModbus.eMbFrameType.RTU, tTimeOut:= T#5S, utQuery:= utQuery, xTrigger:= xTrigger, utResponse:= utResponseModbus); delayTimer(IN := TRUE, PT := T#3S); // Use the Q output of the timer to set xConnect after the delay IF delayTimer.Q THEN xConnect := TRUE; END_IF CASE iStep OF 0: //Wacht totdat de master de poort geopend heeft IF xIsConnected THEN iStep := 1; END_IF 1: //Stuur request naar de slave xTrigger := TRUE; iStep := 2; 2: //Wacht totdat de master klaar is met het afhandelen van de request IF NOT xTrigger THEN iStep := 3; END_IF END_CASE The TON delay before opening the port is due to a an error I encountered when opening it straight away. This seems to be a bug, as described here. However, the TON solved that particular issue. I tried reading multiple registers, but like I said, I still always end up with the "Error time out". What else can I test or try at this point?
Last updated: 2024-02-24
Post by drbuzz on Communication Error (#0) for IFM controller
CODESYS Forge
talk
(Post)
Hi Folks, Every time I use an IFM controller I always seem to run into a problem connecting to it. I get the Communications Error (#0). So I thought I would share some tips and tricks. Once the CANfox Cable (EC2112) cable driver is installed, you can use the yellow app in the sys tray to blink the lights on the cable. Confirm the cable works in the IFM maintenance software by connecting to the controller and reading the information on it. Make sure to download an OS into the controller (the light will go from a fast blink to solid green). In Codesys V2.3, the communication settings for the CR0401 is 250kBaud by default and Node ID 127. What got me, was I needed to reboot the computer after the cable driver install. Also if your application has canbus settings in it which are changed from default, after the controller is power cycled, the new Node ID and Baud will be in effect. I made a handy guide because too much time has been wasted on this. Programming IFM CR0401 Serial/Can Programming Cable • Connect IFM EC2112 CanFox programming cable with connector adapter. • Make sure cable is linked to VM (if using VM). • Install drivers for cable if not installed. o Download from IFM EC2112 site. https://www.ifm.com/ca/en/product/EC2112 • Once Installed, reboot computer. • In system tray, there should be a yellow icon that you can open and check on programming cable. Select the cable in the list and flash the lights to confirm it is working. Maintenance Software • Install IFM Maintenance Tool Software. o Download from IFM Site. https://www.ifm.com/ca/en/download/eco100_MaintenanceTool • Open IFM Maintenance software • Select Basic System • Select CAN cable • It will tell you if you don’t have a cable connected. • Use Wizard if needed. • Read Channel Parameter on the Settings page, or get Identity in the System Information > Identity. • Default Node is 127 on a new unit. Baud is 250kBaud (bits/sec) • Controller information should populate. • Controller green light should be blinking at 5hz (meaning OK but no OS, just bootloader). • Click Software > Load. • Open the OS file. Should match Codesys version selection (for CR0401 this is version 3). o Download OS file from IFM Website. https://www.ifm.com/ca/en/product/CR0401 o It is located at the top of the download under “software for CR0401”. o Select the file and load it… this will take a minute. • Once completed the unit should now have a solid green light o Solid green means the controller has an OS but no application is running. Codesys V2.3 Application • Codesys needs to be downloaded and installed from the IFM website as it has the IFM libraries and license to use the software. o Download from the IFM CR0401 page. o https://www.ifm.com/ca/en/product/CR0401 • Create new application with the correct IFM controller or Open Codesys application. • Keep in mind that the PLC Configuration on the Resources tab can be changed for the CAN communication interface… so changes to node and baud will take effect after the first download and reboot of the controller. • Go to “Online” in the top menu and change “Communication Parameters” o The Local dropdown shows the last configuration used. All other interfaces will show below it and need to be updated when changed or used. o Confirm Node ID is 127 for the first download.  The NodeID will change to whatever the program has after (in my case 125).  Node Send Offset should be default at 1536  Node Recv Offset should be default at 1408  Can bus Baudrate should be 250 kbaud.  Yes to Motorola Byte Order  Block Transfer should be false and note used (60 is default setting).  Can Card Driver should match the systray item which is Sie_USB. • If the system populated the other one, just update and relay the communication parameters. The software will usually bring up the available cable and driver. • Go to “Online” and Login to download. o Press Yes to Download Application. I hope this helps!
Last updated: 2025-03-21
Post by baltzer on ICertificateVerifier.VerifyCertificate doesn't appear to override an ERR_CERT_HAS_EXPIRED rejection in TCP_Client.Upgrade()
CODESYS Forge
talk
(Post)
Setup: Net Base Services (NBS), TCP_Client + TLSContext, ePurpose := CLIENT_SIDE, connecting to a third-party embedded device (Velux KLF200 home automation gateway) whose factory-installed TLS certificate expired on 2026-07-12 and has no user-facing renewal path. Tested on both CODESYS Control for Raspberry Pi SL (3.5.19.0) and CODESYS Control Win V3 x64, with identical results on both. Goal: Accept the peer's expired certificate via a custom ICertificateVerifier implementation, since the certificate itself can never be replaced. Implementation: FUNCTION_BLOCK FB_MyCertVerifier IMPLEMENTS NBS.ICertificateVerifier VAR udiCallCount : UDINT; aeCurStateLog : ARRAY[0..9] OF NBS.RTS_IEC_RESULT; END_VAR METHOD VerifyCertificate : UDINT VAR_INPUT hCert : NBS.RTS_IEC_HANDLE; eCurState : NBS.RTS_IEC_RESULT; END_VAR IF udiCallCount < 10 THEN aeCurStateLog[udiCallCount] := eCurState; END_IF udiCallCount := udiCallCount + 1; VerifyCertificate := 0; // also tried: VerifyCertificate := eCurState; Wired in via tlsContext.itfCertVerifer := certVerifier at declaration time, alongside itfTLSContext := tlsContext set at TCP_Client's own declaration (per an earlier forum thread here on ensuring inline start-values on FB-typed variables are actually honored when nested one level deep - that fix was needed and worked correctly for getting the handshake to start at all). Observed: - VerifyCertificate is confirmed called exactly once per connection attempt (via the call counter above). - eCurState passed in = 0x709 = ERR_CERT_HAS_EXPIRED - correctly reflecting the actual state of the peer's certificate. - Packet capture confirms the full TLS 1.2 handshake completes correctly at the wire level: ClientHello -> ServerHello -> Certificate -> ServerKeyExchange -> ServerHelloDone -> our ClientKeyExchange/ChangeCipherSpec/Finished -> server's ChangeCipherSpec/Finished. Both sides successfully complete the cryptographic handshake. - Despite this, TCP_Client.Upgrade() subsequently returns NBS.ERROR.CONNECTION_ERROR, and the connection is torn down with a plain TCP FIN (not a TLS alert) roughly 7-8ms after our side ACKs the server's Finished message. - TCP_Client.eErrorID (inherited from LCon) remains NO_ERROR throughout - the failure is only visible via Upgrade()'s return value. - Returning 0 (ERR_OK/ERR_CERT_OK - confirmed via the CmpErrors2 Interfaces documentation that these are literally the same value) makes no difference. - Echoing eCurState back unchanged (on the theory that this callback might work like mbedTLS's native verify callback, where the incoming state is a flags value to be cleared/modified and returned, rather than paired with a separate fixed "accept" sentinel) also makes no difference. - Identical result across udiVerificationMode := 0, 1, and 2. - Importing the peer's certificate into the runtime's trusted certificate store via cert-import trusted makes no difference either. - With itfCertVerifer left at its default (no custom verifier) and udiVerificationMode := 2, the underlying engine sends its own fatal TLS alert (handshake_failure) immediately after receiving the peer's Certificate message - suggesting built-in validation may reject at the record layer independent of whether a custom verifier is even present. Questions: 1. Is there an additional step required for a custom ICertificateVerifier to actually override an ERR_CERT_HAS_EXPIRED (or more generally, any ERR_CERT_*) rejection, or is certificate validation enforced unconditionally for a CLIENT_SIDE TLSContext regardless of what the verifier returns? 2. Is 0/ERR_OK genuinely the correct "accept" return value for VerifyCertificate, or does it expect something else (a specific bit pattern, a different constant, a value that must be computed from hCert itself)? 3. Is there a supported way to connect to a peer presenting a certificate that is both self-signed and expired, short of the peer issuing a new certificate? Happy to share the full packet captures or additional test combinations if useful. Also worth noting for anyone finding this thread later: a maintained Node-RED library for this same device (node-red-contrib-velux-klf200, forked to handle this exact expired-certificate situation) solves it by disabling built-in TLS validation entirely (rejectUnauthorized: false) and doing fingerprint-based pinning by hand after the handshake completes, rather than relying on a validation callback - which may be the more realistic approach here too if ICertificateVerifier genuinely can't override this class of rejection. Thanks in advance /Jørgen Disclosure: most of the CODESYS code and this investigation was developed with the help of Claude (Anthropic's AI assistant) - the state machine design, SLIP/checksum implementation, and debugging methodology (including the packet capture analysis) were worked through in an extended back-and-forth with it. Posting here because we've run out of self-serviceable options and this now looks like it needs input from someone with visibility into NBS's actual implementation.
Last updated: 2026-07-26
Post by frank1001 on Codesys läuft nicht hoch
CODESYS Forge
talk
(Post)
Bin Neuling bei Codesys. Habe Codesys 64 Bit installiert (3.5.1) Nach dem Starten geht nur ein EIngabefenster auf mit folgenden Inhalt. Weiter passiert nichts. Was kann ich machen ? //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// _/_/_/_/ _/_/_/_/ _/_/_/_/_/ _/_/_/_/_/_/ _/_/_/_/_/ _/_/ _/_/ _/_/_/_/_/ _/ _/_/_/_/_/_/ _/_/_/_/_/_/ _/_/_/_/_/_/ _/_/_/_/_/_/ _/_/_/_/_/_/ _/_/ _/_/ _/_/_/_/_/_/ _/_/_/ _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ _/_/_/_/_/ // // // // // //// //// //// //// /////// // // // // // // // // // // ///// ////// ////// ////// ////// ////// // ////// /// //// //// ///// ////// ///// // ///// _/ //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>CM</cmp>, <id>0x00000001</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>CmpMemPool</cmp>, <id>0x0000001e</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>CmpLog</cmp>, <id>0x00000013</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>CmpSettings</cmp>, <id>0x0000001a</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysFile</cmp>, <id>0x00000104</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>CmpMemGC</cmp>, <id>0x0000001f</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysCom</cmp>, <id>0x00000100</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysCpuBreakpoints</cmp>, <id>0x00000305</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysCpuHandling</cmp>, <id>0x00000101</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysCrypto</cmp>, <id>0x00000141</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysDir</cmp>, <id>0x0000011b</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysEthernet</cmp>, <id>0x0000011c</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysEvent</cmp>, <id>0x00000102</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysExcept</cmp>, <id>0x00000103</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysFileStream</cmp>, <id>0x00000120</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysGraphicGDIPlus</cmp>, <id>0x0000012a</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysInt</cmp>, <id>0x00000106</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysInternalLib</cmp>, <id>0x00000107</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysMem</cmp>, <id>0x00000108</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysModule</cmp>, <id>0x00000109</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysMsgQ</cmp>, <id>0x0000010a</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysMutex</cmp>, <id>0x0000013a</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysNativeCommonControls</cmp>, <id>0x00000138</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysNativeControl</cmp>, <id>0x0000012f</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysOut</cmp>, <id>0x0000010b</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysPci</cmp>, <id>0x0000010c</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysPort</cmp>, <id>0x0000010d</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysProcess</cmp>, <id>0x0000010e</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysSem</cmp>, <id>0x0000010f</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysSemCount</cmp>, <id>0x00000139</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysSemProcess</cmp>, <id>0x00000119</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysShm</cmp>, <id>0x00000110</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysSocket</cmp>, <id>0x00000111</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysTarget</cmp>, <id>0x00000112</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysTask</cmp>, <id>0x00000114</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysTime</cmp>, <id>0x00000115</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysTimeRtc</cmp>, <id>0x00000127</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysTimer</cmp>, <id>0x00000116</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysWindow</cmp>, <id>0x00000117</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System: <cmp>SysWindowFileDialog</cmp>, <id>0x0000011a</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System|Dynamic: <cmp>SysTargetSoftMotion</cmp>, <id>0x00000112</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System|Dynamic: <cmp>SysCpuMultiCore</cmp>, <id>0x0000013d</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= System|Dynamic: <cmp>SysReadWriteLock</cmp>, <id>0x0000013e</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpAlarmManager</cmp>, <id>0x0000007c</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpApp</cmp>, <id>0x00000002</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpAppBP</cmp>, <id>0x00000073</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpAppForce</cmp>, <id>0x00000074</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpAsyncMgr</cmp>, <id>0x0000005f</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpAuditLog</cmp>, <id>0x000000a1</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpBinTagUtil</cmp>, <id>0x00000004</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpBinTagUtilIec</cmp>, <id>0x0000005c</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpBitmapPool</cmp>, <id>0x00000050</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpBlkDrvCom</cmp>, <id>0x00000006</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpBlkDrvShm</cmp>, <id>0x00000068</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpBlkDrvTcp</cmp>, <id>0x00000030</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpBlkDrvUdp</cmp>, <id>0x00000007</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAAAsyncMan</cmp>, <id>0x00004007</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAABehaviourModel</cmp>, <id>0x00004015</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAACallback</cmp>, <id>0x00004001</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAACanL2</cmp>, <id>0x00004004</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAADTUtil</cmp>, <id>0x00004013</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAAFile</cmp>, <id>0x00004008</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAAMemBlockMan</cmp>, <id>0x00004003</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAANetBaseServices</cmp>, <id>0x00004018</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAARealTimeClock</cmp>, <id>0x00004014</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAASdoClient</cmp>, <id>0x00004011</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAASdoServer</cmp>, <id>0x00004017</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAASegBufferMan</cmp>, <id>0x00004019</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAASerialCom</cmp>, <id>0x00004012</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAAStorage</cmp>, <id>0x0000007e</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAATick</cmp>, <id>0x00004009</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAATickUtil</cmp>, <id>0x00004010</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAATimer</cmp>, <id>0x00004016</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCAATypes</cmp>, <id>0x00004006</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpChannelClient</cmp>, <id>0x00000008</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpChannelClientIec</cmp>, <id>0x0000005d</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpChannelMgr</cmp>, <id>0x00000009</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpChannelServer</cmp>, <id>0x0000000a</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpChecksum</cmp>, <id>0x0000000b</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCodeMeter</cmp>, <id>0x0000007a</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCommunicationLib</cmp>, <id>0x0000000c</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCoreDump</cmp>, <id>0x00000083</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpCryptMD5</cmp>, <id>0x0000006a</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpDevice</cmp>, <id>0x0000000e</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpDynamicText</cmp>, <id>0x00000051</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpEventMgr</cmp>, <id>0x0000005b</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpFileTransfer</cmp>, <id>0x0000005e</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpIecStringUtils</cmp>, <id>0x0000007f</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpIecTask</cmp>, <id>0x00000011</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpIecVarAccess</cmp>, <id>0x00000060</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpIoDrvC</cmp>, <id>0x00000066</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpIoDrvIec</cmp>, <id>0x0000005a</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpIoMgr</cmp>, <id>0x00000012</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpIpc</cmp>, <id>0x0000001d</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpMonitor</cmp>, <id>0x00000014</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpMonitor2</cmp>, <id>0x00000032</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpNameServiceClient</cmp>, <id>0x00000015</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpNameServiceClientIec</cmp>, <id>0x0000011d</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpNameServiceServer</cmp>, <id>0x00000016</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpOPCUAClient</cmp>, <id>0x00000096</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpOPCUAProviderIecVarAccess</cmp>, <id>0x00000126</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpOPCUAServer</cmp>, <id>0x00000124</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpOPCUAStack</cmp>, <id>0x0000008d</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpObjectMgr</cmp>, <id>0x00000080</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpOpenSSL</cmp>, <id>0x00000033</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpPlcShell</cmp>, <id>0x00000128</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpRedundancy</cmp>, <id>0x00000129</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpRedundancyConnectionIP</cmp>, <id>0x0000ff03</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpRetain</cmp>, <id>0x00000017</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpRouter</cmp>, <id>0x00000018</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpSchedule</cmp>, <id>0x00000019</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpSecureChannel</cmp>, <id>0x00000090</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpSecurityManager</cmp>, <id>0x0000008e</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpSercos3Master</cmp>, <id>0x0000004c</id> <ver>3.1.2.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpSessionInformation</cmp>, <id>0x00000097</id> <ver>3.5.19.20</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpSrv</cmp>, <id>0x0000001c</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpSupervisor</cmp>, <id>0x0000008f</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpTraceMgr</cmp>, <id>0x00000070</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpUserDBFile</cmp>, <id>0x00000098</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpUserGroupsDBFile</cmp>, <id>0x00000099</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpUserMgr</cmp>, <id>0x00000061</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpUserObjectsDBFile</cmp>, <id>0x0000009c</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpVisuClientControllerHost</cmp>, <id>0x00000132</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpVisuHandler</cmp>, <id>0x00000054</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpVisuServer</cmp>, <id>0x00000057</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= <cmp>CmpXMLParser</cmp>, <id>0x00000058</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= Dynamic: <cmp>CmpTargetVisuStub</cmp>, <id>0x00000053</id> <ver>3.5.19.0</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= Dynamic: <cmp>CmpWebServer</cmp>, <id>0x00000071</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.025Z: Cmp=CM, Class=1, Error=0, Info=10, pszInfo= Dynamic: <cmp>CmpWebServerHandlerV3</cmp>, <id>0x00000072</id> <ver>3.5.19.10</ver> 2023-09-19T08:02:04.045Z: Cmp=SysCpuMultiCore, Class=1, Error=0, Info=4, pszInfo= MultiCore support: [activated], all cores are used 2023-09-19T08:02:04.045Z: Cmp=SysCpuMultiCore, Class=1, Error=0, Info=4, pszInfo= Number of available cores: 8 2023-09-19T08:02:04.076Z: Cmp=CmpBlkDrvUdp, Class=1, Error=0, Info=6, pszInfo= Network interface: <ipaddress>192.168.1.167</ipaddress>, subnetmask <subnetmask>255.255.255.0</subnetmask> 2023-09-19T08:02:04.076Z: Cmp=CmpRouter, Class=1, Error=0, Info=4, pszInfo= Network interface <interface>ether 0</interface> at router <instance>0</instance> registered 2023-09-19T08:02:04.076Z: Cmp=CmpBlkDrvUdp, Class=1, Error=0, Info=6, pszInfo= Network interface: <ipaddress>192.168.56.1</ipaddress>, subnetmask <subnetmask>255.255.255.0</subnetmask> 2023-09-19T08:02:04.076Z: Cmp=CmpRouter, Class=1, Error=0, Info=4, pszInfo= Network interface <interface>ether 3</interface> at router <instance>1</instance> registered 2023-09-19T08:02:04.076Z: Cmp=CmpChannelMgr, Class=1, Error=0, Info=2, pszInfo= Running as network server 2023-09-19T08:02:04.076Z: Cmp=CmpChannelMgr, Class=1, Error=0, Info=1, pszInfo= Running as network client 2023-09-19T08:02:04.077Z: Cmp=CmpChannelServer, Class=1, Error=0, Info=0, pszInfo= <numofchannels>4</numofchannels> channels available, each of the size <buffersize>100000</buffersize> Bytes 2023-09-19T08:02:04.265Z: Cmp=CmpRedundancy, Class=1, Error=0, Info=0, pszInfo= Debug Messages not activated 2023-09-19T08:02:04.266Z: Cmp=CmpRedundancyConnectionIP, Class=1, Error=0, Info=0, pszInfo= Read connection settings... 2023-09-19T08:02:05.456Z: Cmp=CmpRouter, Class=1, Error=0, Info=4, pszInfo= Network interface <interface>BlkDrvShm</interface> at router <instance>2</instance> registered 2023-09-19T08:02:05.456Z: Cmp=CmpBlkDrvShm, Class=1, Error=0, Info=9, pszInfo= Local address (BlkDrvShm) set to 1 2023-09-19T08:02:05.463Z: Cmp=CmpBlkDrvTcp, Class=1, Error=0, Info=6, pszInfo= Local network address: <ipaddress>192.168.56.1</ipaddress> 2023-09-19T08:02:05.464Z: Cmp=CmpRouter, Class=1, Error=0, Info=4, pszInfo= Network interface <interface>BlkDrvTcp</interface> at router <instance>3</instance> registered 2023-09-19T08:02:05.507Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= No certificate for the OPC UA server available. 2023-09-19T08:02:05.507Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= Security policy allows plain text communication. Secure communication is deactivated. 2023-09-19T08:02:05.508Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= ********** 2023-09-19T08:02:05.508Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= OPC UA Server Started: 2023-09-19T08:02:05.508Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= Hostname: SIEMENS, Port: 4840 2023-09-19T08:02:05.508Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= URL: opc.tcp://SIEMENS:4840 2023-09-19T08:02:05.508Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= Loopbackadapter activated. 2023-09-19T08:02:05.508Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= All available networkadapters are used. 2023-09-19T08:02:05.508Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= Multithreading activated. 7 workers used. 2023-09-19T08:02:05.508Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= ************ 2023-09-19T08:02:05.513Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= Provider 'CODESYS_DefaultProvider' (version 0x3051300) registered at the OPC UA server. 2023-09-19T08:02:05.522Z: Cmp=CM, Class=1, Error=0, Info=0, pszInfo= ========================================================================= 2023-09-19T08:02:05.522Z: Cmp=CM, Class=1, Error=0, Info=4, pszInfo= CODESYS SoftMotion Win V3 x64 2023-09-19T08:02:05.522Z: Cmp=CM, Class=1, Error=0, Info=4, pszInfo= OS=Windows, CPU=x86, Arch=64Bit, Coding=C 2023-09-19T08:02:05.522Z: Cmp=CM, Class=1, Error=0, Info=6, pszInfo= <version>3.5.19.20</version> <builddate>Aug 1 2023</builddate> 2023-09-19T08:02:05.522Z: Cmp=CM, Class=1, Error=0, Info=5, pszInfo= Copyright CODESYS Development GmbH 2023-09-19T08:02:05.522Z: Cmp=CM, Class=1, Error=0, Info=0, pszInfo= ========================================================================= 2023-09-19T08:02:05.529Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= Provider 'AddressSpaceFragment Provider' (version 0x3051314) registered at the OPC UA server. 2023-09-19T08:02:05.530Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= Provider 'OPC UA for IEC-61131-3' (version 0x3051314) registered at the OPC UA server. 2023-09-19T08:02:05.530Z: Cmp=CmpOPCUAServer, Class=1, Error=0, Info=0, pszInfo= Provider 'AlarmManager' (version 0x3051314) registered at the OPC UA server. 2023-09-19T08:02:05.606Z: Cmp=CmpRouter, Class=1, Error=0, Info=1, pszInfo= Setting router <instance>0</instance> address to (00a7) 2023-09-19T08:02:05.606Z: Cmp=CmpRouter, Class=1, Error=0, Info=1, pszInfo= Setting router <instance>1</instance> address to (0001) 2023-09-19T08:02:05.606Z: Cmp=CmpRouter, Class=1, Error=0, Info=1, pszInfo= Setting router <instance>2</instance> address to (0001) 2023-09-19T08:02:05.606Z: Cmp=CmpRouter, Class=1, Error=0, Info=1, pszInfo= Setting router <instance>3</instance> address to (2ddc:c0a8:3801) 2023-09-19T08:02:05.611Z: Cmp=CM, Class=1, Error=0, Info=34, pszInfo= CODESYS Control ready 2023-09-19T08:02:05.796Z: Cmp=CM, Class=2, Error=0, Info=0, pszInfo=!!!! no runtime license - running in demo mode(~2 hours)
Last updated: 2023-09-19
To search for an exact phrase, put it in quotes. Example: "getting started docs"
To exclude a word or phrase, put a dash in front of it. Example: docs -help
To search on specific fields, use these field names instead of a general text search. You can group with AND or OR.