Search talk: Codesys C code integration

 
<< < 1 .. 225 226 227 228 229 .. 914 > >> (Page 227 of 914)

Post by r-niedermayer on Issue with WebVisu on Raspberry PI CODESYS Forge talk (Post)
Regarding to your application: When clicking in the web visualization, the boolean variable will be tapped for both buttons. The LED in the web visualization lights up as long as the variable is true The used variables should come from the GVL, ad/or thePLC_Prg. We see no difference or problem in both projects: You have created a visuelement Push button a a tapper, that is supposed to control the variable in this way as expected. This is also reflected (switching Bool from false to true) in the program code, as well as in the (GVL declared) variables. Wherever the misunderstanding comes from: no, this is not memory or license related. Our best guess: it is probably more of an applicative/conceptual implementation.
Last updated: 2024-04-11

Post by niallel on Continuous MC_PositionProfile CODESYS Forge talk (Post)
Hi, Is it possible to have a MC_PositionProfile that runs continuously again and again without stopping the motor and starting again. I have a profile that contains about 50 steps that I want to repeat. At the end of each run the motor comes to a stop before the next one starts. My code checks for Done, then resets the Execute to False before setting Execute to True to run again, and I think this is causing the motor to go to standstill before starting again. There doesn't seem to be a BufferMode option like with MC_MoveAbsolute. Is it possible to do this? Many thanks,
Last updated: 2024-04-11

Post by jaspergain on Non-existing identifiers CODESYS Forge talk (Post)
Hello, I got a bit of a weird issue going on which is kind of annoying. So recently we switched a lot of Modbus IO to EtherCAT, as we were having issues with stability. All works fine, which is great. But sometimes when I change the program I get errors claiming that identifiers are not defined. Meaning I can't go online. See the picture below. I believe this is because some of these identifiers were used with Modbus, and they weren't properly removed/deleted? A clean all temporary fixes the issue, but it comes back again after a while of changing the code, and building. Any way to fix these non-existing required identifiers, or even find out where they are required? Thanks for the help in advance. Jasper.
Last updated: 2024-05-29

Post by wchin on Passing EtheNetIP adapter device into a Function Block to access it's IO CODESYS Forge talk (Post)
We are creating helper function blocks for our VFD(EtherNetIP). How should I set it up so that I can pass the device into and out of the Function Block so that ideally I can access the IO of the device by devicename.channelname. So something like for example we have a VFD with a start bit that is in the ControlWord channel and a SetVelocity that is a channel. And we want to create a Function Block called StartVFD. So I declare something like: FUNCTION_BLOCK StartVFD VAR_IN_OUT device: ioDrvEthernetIP.RemoteAdapter; END_VAR VAR_INPUT velocity : REAL; So in the code it would look something like device.SetVelocity := velocity; device.ControlWord.6 := True; We have a pretty basic eds file for our VFD and can update it if necessary. Thanks in advance.
Last updated: 2025-10-28

Post by wchin on Passing EtheNetIP adapter device into a Function Block to access it's IO CODESYS Forge talk (Post)
We are creating helper function blocks for our VFD(EtherNetIP). How should I set it up so that I can pass the device into and out of the Function Block so that ideally I can access the IO of the device by devicename.channelname. So something like for example we have a VFD with a start bit that is in the ControlWord channel and a SetVelocity that is a channel. And we want to create a Function Block called StartVFD. So I declare something like: FUNCTION_BLOCK StartVFD VAR_IN_OUT device: ioDrvEthernetIP.RemoteAdapter; END_VAR VAR_INPUT velocity : REAL; So in the code it would look something like device.SetVelocity := velocity; device.ControlWord.6 := True; We have a pretty basic eds file for our VFD and can update it if necessary. Thanks in advance.
Last updated: 2025-10-28

Post by wchin on Passing EtheNetIP adapter device into a Function Block to access it's IO CODESYS Forge talk (Post)
We are creating helper function blocks for our VFD(EtherNetIP). How should I set it up so that I can pass the device into and out of the Function Block so that ideally I can access the IO of the device by devicename.channelname. So something like for example we have a VFD with a start bit that is in the ControlWord channel and a SetVelocity that is a channel. And we want to create a Function Block called StartVFD. So I declare something like: FUNCTION_BLOCK StartVFD VAR_IN_OUT device: ioDrvEthernetIP.RemoteAdapter; END_VAR VAR_INPUT velocity : REAL; So in the code it would look something like device.SetVelocity := velocity; device.ControlWord.6 := True; We have a pretty basic eds file for our VFD and can update it if necessary. Thanks in advance.
Last updated: 2025-10-28

Post by gseidel on Can't get SMC_SmoothPath to work CODESYS Forge talk (Post)
Hi bertus, I cannot see any problem in the code you posted. Just some ideas: What is the value of D_ANGLE_TOL? - Do you need the assignment bAbort := NOT bDecoder? Does it help to leave it out? Any errors (e.g. SMC_SmoothPath.Error/ErrorID) or PLC log messages? What if you comment out SMC_SmoothMerge and SMC_LimtiDynamics, is corner smoothing still not working? Is bDecode written from a different task (e.g. visu)? Then I would recommend to assign to a local variable (bDecodeLocal := bDecode) and use that for all FBs. Otherwise, FBs might see different values of bDecode in a single cycle, which will cause problems. Regards, Georg
Last updated: 2025-12-17

Post by timvh on EXCEPTION [watchdog] how to find position cause CODESYS Forge talk (Post)
Monitor what your current cycle time is (in the Task Configuration when you are online). If this is sometimes close to 200ms, then change your code (e.g. limit the loops, or prevent copying a lot of data between objects). Or just set the Watchdog time (or sensitivity) higher if you don't care that it sometimes takes longer than 200ms. If you want to find out which objects in your application consume the most time, then buy a PDE (Professional Developer Edition) license. With this you get a license for the Profiler. This can help you a lot to find the root cause, because it will create a nice overview of all objects, their calls and the time (percentage) it takes to execute it.
Last updated: 2026-02-09

Post by e13740e on Parameterized Property syntax for array element processing CODESYS Forge talk (Post)
Since parameterized (indexed) properties are not possible, I decided to use architectural approach "Indexing Property Adapter" to achieve the intended goal — avoiding code duplication for validated access to array elements. Essence: Create a Function Block Adapter (FB_PropertyAdapter) that encapsulates the logic for working with a single element of the target array (e.g., with one settings structure). Declare Properties inside the adapter block for accessing each individual field of the data structure. All validation logic is implemented within the Set accessors of these properties. Data Binding via VAR_IN_OUT: The adapter block receives a reference to a specific data element from the global array through its VAR_IN_OUT section, which ensures direct work with the original data without copying. Create an Array of Adapters: In the parent POU (e.g., FB_SettingsManager), an array of these adapter blocks is created — one for each element of the global array that needs to be managed. Initialize Bindings: In a FOR loop, each adapter instance from the array is given a reference to the corresponding data element. Result: This approach allows accessing the data via the index of the adapter array, and then through the property name, which simulates the behavior of an indexed property: MyAdapterArray[Index].MyProperty Thus, the validation and data access logic is written only once inside the adapter block and is then reused multiple times by creating instances of it in an array. This completely solves the problem of code duplication while providing a clean, scalable, and object-oriented architecture compatible with standard CODESYS features. Question closed.
Last updated: 2025-10-19

Post by vstrom on Codesys v3.5.22.10 - Internal error:System.AggregateException...Value cannot be null...Parameter name: expLValue CODESYS Forge talk (Post)
Hi to all, I receive an error when I try to compile a project that in v.3.5.21.50 have no problem. The error seems to comes out when I add the Visualization part into the project. The complete error is: [ERROR] Internal error:System.AggregateException: One or more errors occurred. ---> System.Exception: Internal error in Code ---> System.ArgumentNullException: Value cannot be null. Parameter name: expLValue at _3S.CoDeSys.LanguageModelManager.LanguageModelBuilder.CreateAssignmentExpression(IExprementPosition pos, IExpression expLValue, IExpression expRValue, Operator kindof) at _3S.CoDeSys.LanguageModelManager.LanguageModelBuilder.CreateAssignmentStatement(IExprementPosition pos, IExpression expLeft, IExpression expRight) at ..(IExpression , IExpression ) at ..(_IAssignmentExpression ,  ) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.AssignmentStatementReplacer.ReplaceExpressionStatement(_IExpressionStatement expressionStatement, _ICompiledPOU cpou) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.ExpressionStatementReplacerVisitor.visit(_ISequenceStatement sequenceStatement) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.ExpressionStatementReplacerVisitor.visit(_IIfStatement ifst) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.ExpressionStatementReplacerVisitor.visit(_ISequenceStatement sequenceStatement) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.ExpressionStatementReplacerVisitor.visit(_IIfStatement ifst) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.ExpressionStatementReplacerVisitor.visit(_ISequenceStatement sequenceStatement) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.ExpressionStatementReplacerVisitor.visit(_IForStatement forloop) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.ExpressionStatementReplacerVisitor.visit(_ISequenceStatement sequenceStatement) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.ExpressionStatementReplacerVisitor.visit(_ISequenceStatement sequenceStatement) at ..(_ICompiledPOU ) at ..(_ICompiledPOU ) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Codegeneration.(_ICompiledPOU , _ISignature ) at ..(_ICompiledPOU ) at ..(_ICompiledPOU& ) at ..() --- End of inner exception stack trace --- --- End of inner exception stack trace --- at _3S.CoDeSys.Compiler35220.CompilerPhases.CompilerPhase5_Codegenerator.(IList1 ) at _3S.CoDeSys.Compiler35220.CompilerPhases.CompilerPhase5_Codegenerator.(IScope5 , IList1 ) at _3S.CoDeSys.Compiler35220.CompilerPhases.CompilerPhase5_Codegenerator.(ICodegenerator ) at _3S.CoDeSys.Compiler35220.CompilerPhases.CompilerPhaseControllerGenerateCode.() at _3S.CoDeSys.Compiler35220.CompilerPhases.CompilerPhaseControllerGenerateCode.() ---> (Inner Exception #0) System.Exception: Internal error in Code ---> System.ArgumentNullException: Value cannot be null. Parameter name: expLValue at _3S.CoDeSys.LanguageModelManager.LanguageModelBuilder.CreateAssignmentExpression(IExprementPosition pos, IExpression expLValue, IExpression expRValue, Operator kindof) at _3S.CoDeSys.LanguageModelManager.LanguageModelBuilder.CreateAssignmentStatement(IExprementPosition pos, IExpression expLeft, IExpression expRight) at ..(IExpression , IExpression ) at ..(_IAssignmentExpression ,  ) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.AssignmentStatementReplacer.ReplaceExpressionStatement(_IExpressionStatement expressionStatement, _ICompiledPOU cpou) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.ExpressionStatementReplacerVisitor.visit(_ISequenceStatement sequenceStatement) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.ExpressionStatementReplacerVisitor.visit(_IIfStatement ifst) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.ExpressionStatementReplacerVisitor.visit(_ISequenceStatement sequenceStatement) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.ExpressionStatementReplacerVisitor.visit(_IIfStatement ifst) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.ExpressionStatementReplacerVisitor.visit(_ISequenceStatement sequenceStatement) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.ExpressionStatementReplacerVisitor.visit(_IForStatement forloop) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.ExpressionStatementReplacerVisitor.visit(_ISequenceStatement sequenceStatement) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Optimization.ExpressionStatementReplacerVisitor.visit(_ISequenceStatement sequenceStatement) at ..(_ICompiledPOU ) at ..(_ICompiledPOU ) at _3S.CoDeSys.Compiler35220.Phase5_Codegeneration.Codegeneration.(_ICompiledPOU , _ISignature ) at ..(_ICompiledPOU ) at ..(_ICompiledPOU& ) at ..() --- End of inner exception stack trace ---<---
Last updated: 2026-04-22

Post by gustavocsw on MQTT memory leak problem CODESYS Forge talk (Post)
Hello everyone, I'm using the IoT Library to implement the MQTT communication with my local broker server in order to publish and subscribe at specifics topics to share and consume information about my application. But, it seems that are occurring some memory leak problem in a "high" frequency (more than 10 Hz) subscribe process. I follow the same method as in IoT Lib exemples, and at first looks perfect but my PLC was rebooting frequently and when I check its memory usage that was increasing as fast as the subscribe massage was sent. I'm using a WEG PLC410 and a WEG PLC500, and this error occurred in both of them (including in CODESYS Control Win x64). The application sends to the system a message JSON with the float payload Ex. {"data" : 0.8500}, but this happens with a INT, or BOL as well. I use the follow code in my application to find the value: //FindFirstValueByKey VARs PROGRAM JSON_VELO VAR //------Setting the JSON Subscriber to Set the Relay Value jsonDataVelo : JSON.JSONData; jsonByteArrayReaderVelo : JSON.JSONByteArrayReader; xST1okVelo : BOOL; FindFirstValueByKeyVelo : JSON.FindFirstValueByKey; jsonElementVelo : JSON.JSONElement; xDoneReaderVelo : BOOL; xDoneFindVelo : BOOL; //STRING and WSTRING for Subscribe the massage sPayloadJsonVelo : STRING := 'opa'; psPayloadJsonVelo : POINTER TO BYTE := ADR(sPayloadJsonVelo); //wsPayloadJsonRelaySet : WSTRING := "opa"; wsPayloadJsonVelo : WSTRING := STRING_TO_WSTRING('opa'); pwsPayloadJsonVelo : POINTER TO WORD := ADR(wsPayloadJsonVelo); lrVelo : LREAL; xKeepAliveVelo : BOOL; xSetVelo : BOOL; RSSet : RS; LIMPAR : STRING; //Find the msg end sFindVelo : STRING := '}'; psFindVelo : POINTER TO STRING := ADR(sFindVelo); iLenVelo : INT; iSizeVelo : INT := 12; udiContMsg : UDINT; END_VAR // FindFirstValueByKey CODE // Relay Set configuration xSetVelo := MQTT_SUBSCRIBER.RSVelo.Q1; IF xSetVelo THEN xKeepAliveVelo := TRUE; END_IF IF xKeepAliveVelo THEN udiContMsg := udiContMsg + 1; iLenVelo := TO_INT(StrLenA(psPayloadJsonVelo)); iSizeVelo := iLenVelo - TO_INT(MQTT_SUBSCRIBER.udiPayloadSizeVelo); StrDeleteA(psPayloadJsonVelo,iSizeVelo,iLenVelo); wsPayloadJsonVelo := STRING_TO_WSTRING(sPayloadJsonVelo); pwsPayloadJsonVelo := ADR(wsPayloadJsonVelo); //MQTT.ConvertUTF8toUTF16(sourceStart:= ADR(sPayloadJsonVelo), targetStart:= ADR(wsPayloadJsonVelo), dwTargetBufferSize:= TAM, bStrictConversion:= 1); //Reset jsonByteArrayReader jsonByteArrayReaderVelo ( xExecute := TRUE, pwData := pwsPayloadJsonVelo, jsonData := jsonDataVelo, xDone => xDoneReaderVelo ); FindFirstValueByKeyVelo( xExecute := xDoneReaderVelo, wsKey := "data", diStartIndex:= 0, jsonData := jsonDataVelo, jsonElement => jsonElementVelo, xDone => xDoneFindVelo ); IF xDoneFindVelo THEN lrVelo := jsonElementVelo.value.lrValue; //Reset jsonByteArrayReader jsonByteArrayReaderVelo ( xExecute := FALSE, pwData := pwsPayloadJsonVelo, jsonData := jsonDataVelo, xDone => xDoneReaderVelo ); FindFirstValueByKeyVelo( xExecute := FALSE, wsKey := "data", diStartIndex:= 1, jsonData := jsonDataVelo, jsonElement => jsonElementVelo, xDone => xDoneFindVelo ); xKeepAliveVelo := FALSE; GVL.xSetVeloRead := TRUE; END_IF END_IF And this to subscribe at the topic: //SUBSCRIBE VAR: //----------------- Subscribe Velocity ----------------------- MQTTSubscribeVelo : MQTT.MQTTSubscribe;//Variable MQTTSubscriber block -X - function-X wsTopicSubscribeVelo : WSTRING(1024) := "CORE/odometry/GET/data/simp"; // Topic to publish a message sSubscribeMassageVelo : STRING; udiPayloadSizeVelo : UDINT; xSDoneVelo : BOOL; xSErrorVelo : BOOL; xReceiveVelo : BOOL; eSTypeVelo : MQTT.MQTT_ERROR; eSMQTTErrorVelo : MQTT.MQTT_ERROR; RSVelo : RS; udiCont : UDINT; //SUBSCRIBE CODE: MQTTSubscribeVelo( xEnable:= MQTT_CLIENT.xConnection_Broker AND NOT xSErrorVelo AND NOT JSON_VELO.xKeepAliveVelo, pbPayload:= JSON_VELO.psPayloadJsonVelo, udiMaxPayloadSize:= SIZEOF(JSON_VELO.sPayloadJsonVelo), udiPayloadSize => udiPayloadSizeVelo, mqttClient:= MQTT_CLIENT.ClientMQTT, wsTopicFilter:=wsTopicSubscribeVelo, xDone => xSDoneVelo, xError=> xSErrorVelo, xReceived => xReceiveVelo, eMQTTError=> eSMQTTErrorVelo ); RSVelo(SET := xReceiveVelo, RESET1 := JSON_VELO.xKeepAliveVelo);
Last updated: 2024-09-09

Post by greenwood on CODESYS Control Raspberry Pi mit Servotreiber T6 von StepperOnline CODESYS Forge talk (Post)
Hallo, ich versuche, eine Modbus-RTU-Kommunikation zwischen meinem Raspberry Pi mit CODESYS Control für Raspberry Pi 64 SL und einem Servotreiber von StepperOnline, Typ T6, herzustellen. Die Verbindung ist wie folgt: RJ45-Stecker am Servotreiber -> Kabel mit RJ45 an einem Ende und USB-A-Stecker am anderen Ende -> Seriell-zu-USB-Konverter -> Raspberry Pi. Der Seriell-zu-USB-Konverter und die Kabel habe ich zusammen mit dem Motor und Treiber von StepperOnline gekauft und sie sind dafür gedacht, den Servotreiber mit einem Computer zu verbinden, auf dem deren Setup-Software läuft. dmesg | grep tty auf dem Pi sagt mir, dass der USB-zu-Seriell-Konverter auf ttyusb0 ist. Ich weiß nicht, wie man das in einen COM-Port übersetzt, ich habe COM 1 genommen. Ich habe ein Projekt in Codesys erstellt und ein Modbus_COM-Gerät hinzugefügt, einen Modbus_Master_COM_Port und einen Modbus_Slave_COM_Port angehängt. Auf der Registerkarte "Allgemein" des Modbus_COM habe ich die folgenden Werte eingestellt: Slave address 1 Baud rate 9600 Parity None Data bits 8 Stop bits 2 Ich habe den Servotreiber auf die gleichen Werte eingestellt. (Ich habe auch andere Werte getestet, aber mit dem gleichen Ergebnis). Auf der Registerkarte "Modbus Slave Channel" des Modbus_Slave_COM_Port habe ich einen Kanal hinzugefügt und die folgenden Werte eingetragen: Access type Read Holding Registers (Function Code 3) Read Register offset 0x0000 Length 1 Ich habe noch keinen Code geschrieben, weil ich noch nicht herausgefunden habe, wie man die Kommunikation programmiert. Wenn ich das Projekt zum Raspberry Pi herunterlade scheint der Modbus_Master_COM_Port zu laufen (grünes Symbol), aber der Modbus_Slave_COM_Port nicht (rotes Dreiecksymbol). Wenn ich einen anderen COM-Port eintrage, haben sowohl der Master als auch der Slave das rote Dreiecksymbol. Ich habe dies auch mit meinem Windows-PC unter Verwendung von Codesys Control Win 64 versucht und die gleichen Ergebnisse bekommen. Ich wäre dankbar für jede Hilfe oder Tipps, wie ich den Grund dafür herausfinden kann, warum der Servotreiberreiber nicht reagiert.
Last updated: 2024-05-31

Post by taqamert on Codesys 2.3 & Peak PCAN CODESYS Forge talk (Post)
I will use Codesys to program a PLC. I will connect the PLC to the computer via the CAN interface using PEAK CAN, but Codesys does not recognize the CAN adapter. I have added the following libraries. What should I do? What steps should I follow?
Last updated: 2024-07-03

Post by joelwright24 on codesys sp20 opcua not working CODESYS Forge talk (Post)
I also had this problem connected CODESYS to UAExpert for the first time. In the device, I need to allow anonyomous log in. Follow steps 14 - 17 of the following tutorial: https://docs.factoryio.com/tutorials/codesys/setting-up/codesys-opc-ua-sp17/#creating-the-project
Last updated: 2024-09-11

Post by timvh on CoDeSys 3.5 SP20 "No Offline Help installed" CODESYS Forge talk (Post)
Open the CODESYS Installer (from the menu Tools). Go to Browse. Search for: help ... Select the CODESYS Offline Help which you would like to install. (probably you have to close CODESYS to install it and reopen it after installation).
Last updated: 2024-10-01

Post by bernardchen on Modbustcp.lib missing codesys v2.3 CODESYS Forge talk (Post)
a codesys project V2.3.9 opened with error of libuary missing. Modbustcp.lib and Modbustcpsrv.lib where can I download these two libs . I am a beginner of codesys. this codesys v2.3 is running in virtualbox XP system without internet access.
Last updated: 2025-03-12

Post by timvh on Codesys Control for PLCnext (PLC - AXL F 2152) CODESYS Forge talk (Post)
Do not filter on Phoenix devices. First add an Ethernet device (from CODESYS). Then add a Profinet Controller (from CODESYS). Then add your Phoenix devices to this CODESYS Profinet Controller.
Last updated: 2025-09-09

Post by ekristoffe on Problem install codesys 3.5.17 SP 30 with Codesys Installer CODESYS Forge talk (Post)
hello, it seem the installer 2.2.1 fix this problem. please try after updating codesys installer (if the auto update doesn't show the latest version available, you may have to download manually from the codesys store).
Last updated: 2024-01-26

Post by davidbo on Does CODESYS use its own native driver for I2c? CODESYS Forge talk (Post)
CODESYS Control for Raspberry Pi MC Does CODESYS use its own native driver for I2c? I have a python script communicating with a device simultaneously with a CODESYS doing the same. The bus is not saturated. But I get many read errors
Last updated: 2024-02-13

Post by simonep on new version of CODESYS have problem to load GSDML files CODESYS Forge talk (Post)
I have update codesys today but now i can't install my GSDML files, until Friday I was always able to load without any problem, now it gives me this error. Codesys version V3.5 SP19 Patch 1 + (64 bit)
Last updated: 2024-05-20

Post by ranadheer on conformation about the CODESYS Extends SL and CODESYS SDK CODESYS Forge talk (Post)
hello everyone would anyone here respond, Is CODESYS Extends SL and CODESYS SDK are same. If both are not same could you please give related data about this. Best Regards Ranadheer
Last updated: 2025-11-10

Post by tyronnosaurus on ReceiveWatchdog FB not working on J1939 P2P PGNs CODESYS Forge talk (Post)
Hi guys. I've got a device that sends a status message over J1939 and a PLC running Codesys to receive it. This message uses a P2P PGN (as opposed to a broadcast PGN). Codesys can only read it if I mark the J1939_ECU as "Local" (see screenshot 1). The message is received correctly, that is not the problem. The problem is detecting if the message stops being received. Local ECUs have no Watchdog checkbox to detect if the message has been received in the last X seconds. In order to implement a watchdog, I've used a ReceiveWatchdog FB. The same code works well for any non-P2P message, but doesn't work for this particular P2P message I'm trying to monitor. Even if I physically disconnect the device, ReceiveWatchdog.xBusy stays True, and ReceiveWatchdog.xError never triggers due to a timeout error. Is there any caveat in the ReceiveWatchdog FB that makes it unable to monitor P2P PGNs in Local J1939_ECUs?
Last updated: 2024-07-11

Post by antonz on CoDeSys v3.5: creating libraries for both 32-bit and 64-bit controllers CODESYS Forge talk (Post)
Looking for thoughts on creating libraries that can be used on both 32-bit and 64-bit controllers. We are currently writing software in CoDeSys for both target types and will continu to do so for the near future. Projects are always unique, no straight forward copy/paste, yet there is enough similarity between them to use libraries for recurring logic. I do not want to create and maintain twice for both platforms if this is not absolutely necessary. I am aware of useful datatypes like __XWORD, __XINT, __UXINT. Still looking for more information and/or sample code for portable pointer arithmetic. In addition to that: how should one go about when creating and working with compiled libraries? Would I need to compile the same lib twice, once for 32-bit targets once for 64-bit targets? I would end up with two different libs with the same namespace, which does not sound elegant to me. Note: I did not intentionally make the previous paragraph bold. The forge forum software seems to do this automatically upon insertion of a word which starts with two underscores, e.g. __XWORD (yeah, here we go again :) )
Last updated: 2025-08-25

Post by francescoc on Custom log CmpLog CODESYS Forge talk (Post)
Hi, I am trying to create a log in my application. Since I cannot find any documentation regarding modifying the codesys configuration file to be able to log in ms, i tried to create a new log via CmpLog.LogCreate. Below is the part of the code where I create the logger and write a test string. In the log tab of codesys I actually see the new log that was created, but it is empty, and in the folder I cannot find any files. I can't find any detailed documentation. Can you guys give me support? Are there any examples? Thank you IF NOT FirstCycle THEN LogName:= 'LOGS/TestLog'; LogOptions.bEnable:= 1; LogOptions.iMaxEntries:= 5000; LogOptions.iMaxFiles:= 100; LogOptions.iMaxFileSize:= 5000; LogOptions.szName:= LogName; LogOptions.uiType:= CmpLog.LogTypes.LT_TIMESTAMP_RTC_HIGHRES; LogOptions.uiFilter:= CmpLog.LogClass.LOG_ALL; LogHandle:= CmpLog.LogCreate(pOptions := ADR(LogOptions), pResult:= ADR(Result)); LogHandle:= CmpLog.LogOpen(pszName:= LogName, pResult:= Result); Component_Manager.CMAddComponent2('TestLogNEW', 16#00000001, ADR(udiCmpIdNEW), 0); CmpLog.LogAdd2(LogHandle, udiCmpIdNEW, CmpLog.LogClass.LOG_INFO, 1, 1, 'Logger started...'); END_IF IF TestWrite THEN TestWrite:= FALSE; CmpLog.LogAdd2(LogHandle, udiCmpIdNEW, CmpLog.LogClass.LOG_INFO, 1, 1, 'Write test'); END_IF
Last updated: 2024-03-16

Post by fajean on CODESYS control on RPi starts, shortly runs, then exits CODESYS Forge talk (Post)
I have a Raspberry Pi 4 we have been using for years to run CODESYS for development purposes. I recently have had to re-install the OS (Raspberry OS lite). The only change to the default configuration is not creating the "pi" user during install. I (apparently successfully) installed the 4.10.0.0 control on the Raspberry Pi. We have licences on a dongle. I am able to start the control. systemctl status shows it as running for a little while (exactly, precisely 30 seconds as per my tests, every time), then it becomes exited. I can restart the control, and the same thing happens again. Every time. In the brief moments it is running, I can log in to the PLC. Working fast and restarting the control many times, I have been able to configure users. I have been able to download my application. I have been able to run the application, and stop on a breakpoint. I have been able to connect with the licence manager and confirm the dongle is detected and licences are listed as OK. I see nothing wrong until the service just exits. I have found nothing in the logs. It is like the runtime just terminates with no error code or message after exactly 30 seconds. Any help would be appreciated.
Last updated: 2024-06-13

<< < 1 .. 225 226 227 228 229 .. 914 > >> (Page 227 of 914)

Showing results of 22828

Sort by relevance or date