Search talk: CODESYS UML

 
<< < 1 .. 881 882 883 884 885 .. 913 > >> (Page 883 of 913)

Post by joshskellig on Publish a JSON payload via MQTT Publish (using IIot Libraries) CODESYS Forge talk (Post)
I am trying to figure out how to get a JSON payload to properly publish to my MQTT Broker. I am able to generate JSON using the examples from Codesys, but when I send that payload via MQTT there are characters that are extra or not recognized by my MQTT client. Any idea what could be causing it? PROGRAM PLC_PRG VAR hostname: STRING := 'localhost'; port: UINT := 1883; topic: WSTRING(1024) := "testing/"; payload: BYTE; factory : JSON.JSONDataFactory; eDataFactoryError : FBF.ERROR; pJsonData : POINTER TO JSON.JSONData := factory.Create(eError => eDataFactoryError); fb_JBuilder : JSON.JSONBuilder; wsValue : WSTRING := "Value1"; diRootIndex, diObject1Index : DINT; iValue : INT := 1234; jsonArrayWriter : JSON.JSONByteArrayWriter; wsJsonData : WSTRING(1000); xFirst : BOOL := TRUE; mqttClient: MQTT.MQTTClient; mqttPublish: MQTT.MQTTPublish; mqttPublishProperties: MQTT.MQTTPublishProperties := (bPayloadFormatIndicator := 1, wsContentType := "application/json"); END_VAR // Json Functionality IF xFirst THEN fb_JBuilder(pJsonData := pJsonData, diRootObj => diRootIndex); fb_JBuilder.SetKeyWithValue("Key1", wsValue, diParentIndex := diRootIndex); diObject1Index := fb_JBuilder.SetKeyWithObject("Key2", diParentIndex := diRootIndex); fb_JBuilder.SetKeyWithValue("Key3", iValue, diParentIndex := diObject1Index); xFirst := FALSE; END_IF jsonArrayWriter(pwData := ADR(wsJsonData), udiSize := SIZEOF(wsJsonData), jsonData := pJsonData^, xAsyncMode := FALSE); MSU.StrTrimW(pString:= ADR(wsJsonData)); // MQTT Functionality mqttClient( sHostname:=hostname, uiPort:=port, eMQTTVersion:=MQTT.MQTT_VERSION.V5 ); mqttPublish( mqttClient:=mqttClient, pbPayload:=ADR(wsJsonData), udiPayloadSize:=SIZEOF(wsJsonData), wsTopicName:=topic, mQTTPublishProperties:=mqttPublishProperties );
Last updated: 2024-04-10

Post by rabaggett on CODESYS control for Raspberry Pi 64 SL errors CODESYS Forge talk (Post)
Hi, I am trying to create a project using a raspberry pi, I have added the modules for the Pi and MCP3008. I have encountered som errors that I don't know how to track down. 1. The GPIOs give preprocessor errors, but I read that this does not prevent compiling. This seems to be true. I can build the empty project with no errors. 2. After adding a SPI master and MCP3008, the preprocessor errors double, but seem similar and the project again builds with no errors. 3. I add a DUT and GVL, with a function, and I get the following errors. They remain even if I delete these things. ------ Build started: Application: Device.Application ------- Typify code... [ERROR] crr: C0032: Cannot convert type 'Unknown type: 'ADR(GVL_Io_17160064_c083_41f8_9e53_208be7537753_HPS_7.Io_17160064_c083_41f8_9e53_208be7537753_HPS_7)'' to type 'POINTER TO IoConfigParameter' [ERROR] crr: C0077: Unknown type: 'GVL_Io_17160064_c083_41f8_9e53_208be7537753_HPS_7.Io_17160064_c083_41f8_9e53_208be7537753_HPS_7' [ERROR] crr: C0046: Identifier 'GVL_Io_17160064_c083_41f8_9e53_208be7537753_HPS_7' not defined Compile complete -- 3 errors, 0 warnings I attach the project. What am I doing wrong? Thanks!
Last updated: 2024-05-02

Post by hanoues on setting date and time on CPX-E CODESYS Forge talk (Post)
Hello, Can anybody here tell me how to modify the time and date on my CPX-E? I used the code I found on CODESYS online help, but it doesn't work. What am I missing? FUNCTION current_date_time : STRING VAR stUTC_Timestamp : SysTime; //utc time // ULINT#1528280694913 stLocal_TimeStamp : SysTime; //local time but is in general equal // ULINT#1528280694913 stdNow : SysTimeDate; //local time in an object to access each number (day, month...) dtNow : DATE_AND_TIME;//DT#2018-6-6-10:24:54 todNow : TIME_OF_DAY; // TOD#10:24:54.913 datNow : DATE; // D#2018-6-6 END_VAR SysTimeRtcHighResGet(stUTC_Timestamp); // ULINT#1528273494913 SysTimeRtcConvertHighResToLocal(stUTC_Timestamp, stdNow); //convert UTC ULINT to Local SysTime // stdNow.wYear = UINT#2018 // stdNow.wMonth = UINT#6 // stdNowy.wDay = UINT#6 // stdNow.wHour = UINT#10 // stdNow.wMinute = UINT#24 // stdNow.wSecond = UINT#54 // stdNow.wMilliseconds = UINT#913 // stdNow.wDayOfWeek = UINT#3 // stdNow.wYday = UINT#157 SysTimeRtcConvertDateToHighRes(stdNow, stLocal_TimeStamp); // ULINT#1528280694913 dtNow := TO_DT(stLocal_TimeStamp / 1000 ( ms )); // DT#2018-6-6-10:24:54 todNow := TO_TOD(stLocal_TimeStamp MOD TO_ULINT(T#1D)); // TOD#10:24:54.913 datNow := TO_DATE(dtNow); // D#2018-6-6 (convert to appropriate string) current_date_time := concat('$N[', TO_STRING(dtNow)); current_date_time:= concat(current_date_time,'.'); current_date_time:= concat(current_date_time, TO_STRING(stdNow.wMilliseconds)); current_date_time:= concat(current_date_time,'] - '); RETURN;
Last updated: 2024-05-21

Post by tortilla on J1939 connection between two devices CODESYS Forge talk (Post)
Hey, I'm pretty new to CoDeSys so I don't know a lot of things yet. I have to create a connection between two devices (CANbus - J1939 connection). The idea for now is to send a message from one to another (one operates on 3.5 SP11 the other one on 2.3) I watched a few videos, worked with the documentation and worked with chatGPT 4o and was able to build the attached file. This part is about the device on 3.5.11: I'm using the J1939LocalECUDiag, TransmitParameterGroup, TransmissionTrigger Function blocks to send the message but my TransmitPG.xBusy / .xDone never turns to True and therefore my message is not sent while TransmitPG.xExcecute is True. I added the two devices in the CANbus in the J1939Manager and addapted the options like I've seen in the documentation. Can anyone explain what's wrong with my code in this casse or give me advices how to properly create a connection between my two devices? Thanks in advance!
Last updated: 2024-05-23

Post by jkessler on IoDrvModbusTCP_Diag not defined when using MODBUS CODESYS Forge talk (Post)
Hi, Same for me ! Works in Codesys 3.5.19 but not in 3.5.20. I'm currenly using with a WAGO PLC200 [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0046: Identificateur 'IoDrvModbusTCP_Diag' non défini [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0080: Le bloc fonctionnel 'IoDrvModbusTCP' doit être instancié pour permettre l’accès [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0004: 'IoDrvModbusTCP_Diag' n’est pas un composant de 'IoDrvModbusTCP' [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0046: Identificateur 'ModbusTCPSlave_Diag' non défini [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0080: Le bloc fonctionnel 'IoDrvModbusTCP' doit être instancié pour permettre l’accès [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0004: 'ModbusTCPSlave_Diag' n’est pas un composant de 'IoDrvModbusTCP' [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0046: Identificateur 'ModbusTCPSlaveUnit_Diag' non défini [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0080: Le bloc fonctionnel 'IoDrvModbusTCP' doit être instancié pour permettre l’accès [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0004: 'ModbusTCPSlaveUnit_Diag' n’est pas un composant de 'IoDrvModbusTCP' Thanks in advance
Last updated: 2024-05-29

Post by jkessler on IoDrvModbusTCP_Diag not defined when using MODBUS CODESYS Forge talk (Post)
Hi, Same for me ! Works in Codesys 3.5.19 but not in 3.5.20. I'm currenly using with a WAGO PLC200 [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0046: Identificateur 'IoDrvModbusTCP_Diag' non défini [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0080: Le bloc fonctionnel 'IoDrvModbusTCP' doit être instancié pour permettre l’accès [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0004: 'IoDrvModbusTCP_Diag' n’est pas un composant de 'IoDrvModbusTCP' [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0046: Identificateur 'ModbusTCPSlave_Diag' non défini [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0080: Le bloc fonctionnel 'IoDrvModbusTCP' doit être instancié pour permettre l’accès [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0004: 'ModbusTCPSlave_Diag' n’est pas un composant de 'IoDrvModbusTCP' [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0046: Identificateur 'ModbusTCPSlaveUnit_Diag' non défini [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0080: Le bloc fonctionnel 'IoDrvModbusTCP' doit être instancié pour permettre l’accès [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0004: 'ModbusTCPSlaveUnit_Diag' n’est pas un composant de 'IoDrvModbusTCP' Thanks in advance
Last updated: 2024-05-29

Post by jkessler on IoDrvModbusTCP_Diag not defined when using MODBUS CODESYS Forge talk (Post)
Hi, Same for me ! Works in Codesys 3.5.19 but not in 3.5.20. I'm currenly using with a WAGO PLC200 [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0046: Identificateur 'IoDrvModbusTCP_Diag' non défini [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0080: Le bloc fonctionnel 'IoDrvModbusTCP' doit être instancié pour permettre l’accès [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0004: 'IoDrvModbusTCP_Diag' n’est pas un composant de 'IoDrvModbusTCP' [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0046: Identificateur 'ModbusTCPSlave_Diag' non défini [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0080: Le bloc fonctionnel 'IoDrvModbusTCP' doit être instancié pour permettre l’accès [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0004: 'ModbusTCPSlave_Diag' n’est pas un composant de 'IoDrvModbusTCP' [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0046: Identificateur 'ModbusTCPSlaveUnit_Diag' non défini [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0080: Le bloc fonctionnel 'IoDrvModbusTCP' doit être instancié pour permettre l’accès [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0004: 'ModbusTCPSlaveUnit_Diag' n’est pas un composant de 'IoDrvModbusTCP' Thanks in advance
Last updated: 2024-05-29

Post by jkessler on IoDrvModbusTCP_Diag not defined when using MODBUS CODESYS Forge talk (Post)
Hi, Same for me ! Works in Codesys 3.5.19 but not in 3.5.20. I'm currenly using with a WAGO PLC200 [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0046: Identificateur 'IoDrvModbusTCP_Diag' non défini [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0080: Le bloc fonctionnel 'IoDrvModbusTCP' doit être instancié pour permettre l’accès [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0004: 'IoDrvModbusTCP_Diag' n’est pas un composant de 'IoDrvModbusTCP' [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0046: Identificateur 'ModbusTCPSlave_Diag' non défini [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0080: Le bloc fonctionnel 'IoDrvModbusTCP' doit être instancié pour permettre l’accès [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0004: 'ModbusTCPSlave_Diag' n’est pas un composant de 'IoDrvModbusTCP' [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0046: Identificateur 'ModbusTCPSlaveUnit_Diag' non défini [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0080: Le bloc fonctionnel 'IoDrvModbusTCP' doit être instancié pour permettre l’accès [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0004: 'ModbusTCPSlaveUnit_Diag' n’est pas un composant de 'IoDrvModbusTCP' Thanks in advance
Last updated: 2024-05-29

Post by jkessler on IoDrvModbusTCP_Diag not defined when using MODBUS CODESYS Forge talk (Post)
Hi, Same for me ! Works in Codesys 3.5.19 but not in 3.5.20. I'm currenly using with a WAGO PLC200 [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0046: Identificateur 'IoDrvModbusTCP_Diag' non défini [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0080: Le bloc fonctionnel 'IoDrvModbusTCP' doit être instancié pour permettre l’accès [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0004: 'IoDrvModbusTCP_Diag' n’est pas un composant de 'IoDrvModbusTCP' [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0046: Identificateur 'ModbusTCPSlave_Diag' non défini [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0080: Le bloc fonctionnel 'IoDrvModbusTCP' doit être instancié pour permettre l’accès [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0004: 'ModbusTCPSlave_Diag' n’est pas un composant de 'IoDrvModbusTCP' [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0046: Identificateur 'ModbusTCPSlaveUnit_Diag' non défini [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0080: Le bloc fonctionnel 'IoDrvModbusTCP' doit être instancié pour permettre l’accès [ERREUR] EmPlcProgram: Application [Device: Logique API]: C0004: 'ModbusTCPSlaveUnit_Diag' n’est pas un composant de 'IoDrvModbusTCP' Thanks in advance
Last updated: 2024-05-29

Post by greenwood on CODESYS Control Raspberry Pi mit Servotreiber T6 von StepperOnline CODESYS Forge talk (Post)
Hallo, Ich scheine den Grund gefunden zu haben, das Kabel mit dem RJ45 Stecker ist für RS232 verdrahtet (am anderen Ende des Kabels ist ein 9-poliger SUB-D Stecker, nicht wie von mir im Eingangspost behauptet ein USB Stecker). In der Anleitung des Treibers ist immer nur von RS 485 die Rede. Alerdings habe ich es gestern abend noch geschafft eine funktionierende Version der setup-software herunterzuladen, und die verbindet sich offenbar über RS232. Daraufhin habe ich mir in der Anleitung des Treibers das Pinout der RJ45 Buchse nochmal angesehen, und die hat Kontakte für RS232 und für RS485. (Die liegen jeweils ganz am Rand, so ist mir das vorher nicht aufgefallen). Ich muss also als Nächstes ein richtig verdrahtetes Kabel auftreiben, und dann sehen ob das mit dem Adapter den ich habe funktioniert. An einen Abschlusswiderstand habe ich auch schon gedacht, nur weiss ich nicht wo ich den an einem RJ45 Stecker / Buchse - Paar anbringen soll... Ich bitte um Entschuldigung für die Verwirrung, ich mache das alles zum ersten Mal und es ist ganz schön viel auf einmal für mich. Nochmal vielen Dank für die Unterstützung!
Last updated: 2024-06-01

Post by nikgind on Codesys Communication Manger - Required information model version exists in the model repository but is not found CODESYS Forge talk (Post)
Hi I am trying to import a custom information model that I created using UA Modeler. I have only added two new methods and two new object types. It is possible to add the information model to the Communication Manager and the two new object types are shown in the Information Model tab. After compiling i get the following error: Communication Manager [Device: PLC Logic: Application]: The information model http://opcfoundation.org/UA/ is required by http://yourorganisation.org/Bsp_3.1/ with a minimal publication date from 15.12.2023 but the device has only a model from 15.09.2021 installed. Probably the information model from 15.09.2021 is missing in the information model repository. The error message does not make sense to me. Should it not be “Probably the information model from 15/12/2023 is missing in the information model repository”? Anyway I have installed the information model from 15/12/2023 but not from 15/09/2021. Which makes the error message even stranger.
Last updated: 2024-06-09

Post by caprez95 on Deleting the trend recording history CODESYS Forge talk (Post)
Hallo Ich möchte eine laufende Trendaufzeichnung stoppen, den Inhalt löschen und Trend-Diagramm auf 0 zurücksetzen. Laut Codesys soll das mit dem folgenden Code möglich sein: You can insert an input element in the visualization which the operator can use to delete the previous value recording in the trend visualization at runtime. The curve displayed until then is removed and the display starts over. In the application (example: in the program PLC_PRG), implement the following code: itfTrendRecording : ITrendRecording; itfTrendStorageWriter : ITrendStorageWriter; itfTrendStorageWriter3 : ITrendStorageWriter3; sTrendRecordingName : STRING := 'TrendRecording'; itfTrendRecording := GlobalInstances.g_TrendRecordingManager.FindTrendRecording(ADR(sTrendRecordingName)); xClearHistoryTrend: BOOL; IF xClearHistoryTrend THEN itfTrendRecording := GlobalInstances.g_TrendRecordingManager.FindTrendRecording(ADR(sTrendRecordingName)); IF itfTrendRecording <> 0 THEN itfTrendStorageWriter := itfTrendRecording.GetTrendStorageWriter(); IF __QUERYINTERFACE(itfTrendStorageWriter, itfTrendStorageWriter3) THEN itfTrendStorageWriter3.ClearHistory(); END_IF END_IF In the visualization of the trend recording, add a button for deleting the previous curve. Configure its Toggle property with the variable PLC_PRG.xClearHistoryTrend. ⇒ When xClearHistoryTrend is set to TRUE, the previously recorded curve is deleted. The recording immediately starts again. Dies löscht auch die Daten vom Trend, aber das Diagramm wird nicht auf 0 zurückgesetzt, sondern läuft einfach da weiter wo man gestoppt hat. Braucht es für den Diagramm-Reset noch einen zusätzlichen Befehl? Gruss
Last updated: 2024-06-11

Post by brubingh on Download Missing Libraries not working CODESYS Forge talk (Post)
We are working on a project and the customer required 3.5.16 BF4. After working on the project for a few weeks I opened it the next morning and it could not access libraries. IecVarAccess could not be accessed. I checked if windows updated - it did not. So no explanation for why it lost access other than that I shut down the computer for the night. Note that I am using a demo license. I still haven't figured out any reason to purchase a license. So I spent the next hour reinstalling CodeSys. Note that I did NOT uninstall first. After install I waited another 5 minutes for it to open the first time. I clicked File->Open to open the project. Previously I had selected File->Recent Projects - not sure if that makes and difference. But after this process it did open the project and compile it just fine. This is miserable. If this had happened when I went on site to a customer I would have lost hours of work doing the reinstall. Is there a different and quicker fix?
Last updated: 2024-06-13

Post by kaotic2499 on Upgraded Raspberry 2b to Raspberry 5, Trends Broken? CODESYS Forge talk (Post)
Hello! Raspberry pi 2b just is getting a bit slow so decided to go for a Raspberry 5. Project is now upgraded to suit Pi 64 SL... so, now although everything runs perfectly... for some reason my trends will not save! its driving me nuts... ^Tried merging tasks with main program & trends ^tried re-prioritizing tasks (shifting 1 - 31 etc) ^Recreated the Trend Recording manager from scratch ^Tried swapping persisitant vars to GVL Retains then non-retains... (Project attached is as per before trial&error) Raspberry Pi 2b still runs "perfectly" though its very chuggy (Still saves the trends, note this is of an pretty much identical project minus the device compatibility) Does anyone have any advice to offer? project attached.... I feel it could be outside of Codesys itself causing the issues, but cant see/find anything on the internet to assist (or anyone else with the same problem as me...) Can attach project in another format (non archive) any assistance is much appreciated!
Last updated: 2025-10-19

Post by aris on Modbus write via FB failure CODESYS Forge talk (Post)
Hi all, I am using CoDeSys V3.5 and a soft controller Win V3x64. I am trying to read a modbus slave via Function Blocks and not via the channels of the hardware tree for the Slave. I created some requests of type ModbusRequest and I notice that I can read Input Registers and Coils but I can not write Holding Registers and Coils. I am using the library IoDrvModbusTCP 4.1.0.0. When i just use a single modbus request with FC06 (or FC16), there is no request sent to the slave and although the xExecute takes its true value from a pulse of 2 seconds duration, I take almost every 3 minutes an error "TCP_COMMUNICATION_ERROR - 16#A5 - TCP Port. error. Request was not sent". My code is ok because if i change the function code for reading registers, everything works fine. Did anyone have this issue in the past? Thank you in advance.
Last updated: 2025-11-06

Post by rk-gaw on Unhandled exception and refactoring error CODESYS Forge talk (Post)
Hello everyone. I hope this is the right place to ask for help, this error is causing me a great amount of time loss and I really would like to end this nightmare. I don't know why but at times if I try to Browse -> Display Cross Reference on a variable Codesys just crashes. I'll attach the file with the complete crash report hoping someone can figure why it happend. I think that the unhandled exception comes from the PersisranceManager Module and is connected with the other big problem I'm facing: I cannot refactor in my project, if I'll try to refactor a POU name the whole POU will become "frozen", it's like its desynchronizing from the project and the project cannot find the pointer to the POU once I refactor it. And when I open the project a warning pop-up will show up with the frozen POUs name, but I cannot figure out what the warning is telling me. I'll attach every warning and error pop up the project is showing me, and thanks in advance to anyone who can figure something out.
Last updated: 2025-12-10

Post by salvatorethomas on Port instantiation of serial interface in WAGO PLC using Modb_L05.lib in CoDeSys v2.3 CODESYS Forge talk (Post)
Hi — good description of the problem. A few suggestions / questions that might help narrow this down: Since your first serial port (COM2) works fine but the second (COM4 + MODBUS_EXT_MASTER) never opens, check whether the two ports are truly independent — some WAGO modules share internal resources, so COM4 might conflict with other functions or modules. Make sure that the physical wiring and module configuration for the second port (baud rate, flow control, RS-485 vs RS-422, etc.) exactly match what the library expects — a mismatch in flow control or wiring could prevent port opening even if the LED signals seem OK. Try using a plain SERIAL_INTERFACE on COM4 first (like you did for COM2) without Modbus logic — if that opens, you know the hardware + port config is fine, so the issue is more likely with modb_L05.lib. If the port opens but Modbus still fails, enable debug/logging (if available) to inspect whether the port opening fails or the subsequent Modbus negotiation fails. If you like — I can share a minimal example project I used with WAGO + COM4 + Modbus that worked; you could adapt that to test your setup. Wacky Flip
Last updated: 2025-12-01

Post by chaylak on MC_ReadActualPosition with ST code CODESYS Forge talk (Post)
hi everyone, i am trying use MC_ReadActualPosition module in ST but i cant do it,( if i use CFC yes i read it) my axis is SoftMotion General Axis Pool->VirtAxisZ [Device: SoftMotion General Axis Pool] codesys V3.5 SP20 program: PROGRAM PLC_PRG VAR VirtAxisZ : AXIS_REF_VIRTUAL_SM3; fbPowerZ : MC_Power; fbReadPos : MC_ReadActualPosition; bEnable : BOOL := TRUE; lrActPos : LREAL; bValid : BOOL; bError : BOOL; fbResetZ : MC_Reset; xZ_Valid : BOOL; xZ_Busy : BOOL; xGlobalPower : BOOL; xGlobalReset : BOOL; xBtnTeachingMode : BOOL; lrGrvZ_OffsetTorque : LREAL := 0.5; lrPulseMmZ : LREAL; rPosFromBlock : LREAL; xZ_IsPowered : BOOL; xZ_PowerError : BOOL; iZ_PowerErrorID : LREAL; rZ_ActualPos : LREAL; lrTargetTorque : LREAL; sZ_ErrorString : STRING; //********** jog fbJogZ : MC_Jog; xJogForward : BOOL; xJogBackward : BOOL; rZ_ActVelocity : REAL; END_VAR fbResetZ( Axis:= VirtAxisZ, Execute:= xGlobalReset); fbPowerZ( Axis:= VirtAxisZ, Enable:= xGlobalPower, bRegulatorOn:= xGlobalPower, bDriveStart:=xGlobalPower , Status=> xZ_IsPowered, Busy=> xZ_Busy, Error=> xZ_PowerError, ErrorID=> iZ_PowerErrorID ); IF xGlobalPower THEN fbJogZ( Axis:= VirtAxisZ, JogForward:= xJogForward, JogBackward:= xJogBackward, Velocity:= 100, Acceleration:= 100, Deceleration:= 100, Jerk:= 1000); END_IF fbReadPos( Axis := VirtAxisZ, Enable := TRUE, Valid => bValid, Position => lrActPos, Error => bError ); IF VirtAxisZ.bError THEN sZ_ErrorString := 'Z Ex err'; ELSIF NOT xZ_IsPowered THEN sZ_ErrorString := 'Z Ex (Power Off)'; ELSE sZ_ErrorString := 'Z Ex Ready'; END_IF IF xBtnTeachingMode THEN lrTargetTorque := lrGrvZ_OffsetTorque; ELSE lrTargetTorque := 0; END_IF VAR_INPUT CFC_Motion: INT; END_VAR
Last updated: 2026-05-15

Post by wollvieh on Sysfile Konfiguration CODESYS Forge talk (Post)
...auch noch eine schöne Beschreibung zur Sysfile Konfiguration! Mit Version 3.5.19 wurde die Dateiverwaltung geändert. Siehe folgendes Problem: CDS-81506 – Sicherheitslücke im Dateizugriffssystem des CODESYS Control SysFile-Systems. Es gibt zwei Lösungen: Ändern Sie den Speicherort der Datei (Sie müssen zu /PlcLogic/ wechseln). Wenn Sie die Datei nicht in PlcLogic speichern möchten, fügen Sie die folgende Zeile in der CODESYSControl.cfg unter [SysFile] hinzu: ForceIecFilePath=0 Hier die offizielle Versionsbeschreibung: [[COMPATIBILITY_INFORMATION]] Durch die Aktivierung von ForceIecFilePath ist der Dateizugriff von IEC nun auf die konfigurierten Pfade beschränkt (Dateisandbox)! [SysFile] ForceIecFilePath=1 (neuer Standardwert) Der Standardpfad ist das aktuelle Verzeichnis, der PlcLogic-Unterordner oder ein konfigurierter Pfad. Jeder Dateizugriff außerhalb dieses Pfades wird über PlaceholderFilePath konfiguriert, beispielsweise der Zugriff auf temporäre Dateien oder Wechseldatenträger: [SysFile] PlaceholderFilePath.1=/tmp, $TMP$ PlaceholderFilePath.2=/media/usb, $USB$ PlaceholderFilePath.2.Volatile=1 Weitere Informationen finden Sie in unserem Tutorial „Dateipfade & Platzhalter“. Um das alte Verhalten wiederherzustellen, kann ForceIecFilePath wie folgt konfiguriert werden: [SysFile] ForceIecFilePath=0 Wir empfehlen jedoch dringend, diese Einstellung auf dem neuen Standardwert zu belassen!
Last updated: 2026-01-21

Post by konstantin on Lenze i950 Servo and WAGO PFC200 CODESYS Forge talk (Post)
Hello, In our workshop we have a Lenze i950 servo drive that has an EtherCAT bus and CiA402 compatibility. The WAGO is PFC200 750-8212 and as per documentation it has built-in license for SoftMotion Light functionality. It is not capable of supporting the full SoftMotion functionality like gearing and synchronizing. I added the EtherCAT esi files from Lenze and the EtherCAT master does see the drive, then I added a SoftMotion Light Axis object. The problem is that I can only energize the axis, I cannot execute any other commands. I set the positive and negative torque limits from the PDOs to 200% and when I try to move the axis by force it does not move back to its original position. I use the SML function blocks from the PLCOpen library and the error from the function blocks is that the op mode cannot be changed. Then I tried using a standard SoftMotion axis object and everything works fine, except the MC_Home function block. The axis moves back to its position when forced out of it. I follow this guide from Lenze - Lenze i950 CODESYS V3 What could cause this issue with the SoftMotion Light axis object? Best Regards Konstantin Kolev
Last updated: 2026-02-11

Post by pernockham on Gateway in China - "Gateway not connected" CODESYS Forge talk (Post)
Some new test. Now I cannot connect from Automation server to my gateway in any way also from my office setup with my unit directly connected to my router by dhcp. I can use the IDE and the tool "Connect Edge Gateway" and successfully connect to my server/link to my Automation server account. However no PLC will respond from Automation server "Network scan". I guess the traffic should be initiated by the gateway towards automation server? Any tips on how I can diagnose my problem? Ports to be opened etc? Thing is that this has been working previously but not now (base system has been updated from debian 12 to debian 13, but I dont know at which point it has stopped working). Setup as before. A "Codesys Control for Linux SL" running on a debian 13 installation. Any help/tips appreciated! Per Update. Found the error. Had a wrong gateway-setting. Which meant the PLC could not reach internet. Checked by "ping google.com" from the PLC.
Last updated: 2026-02-12

Post by yannickasselin on Lenze i950 Servo and WAGO PFC200 CODESYS Forge talk (Post)
In order to use SoftMotion Light, a servo drive needs to support CiA 402 operating modes: Profile Position (PP), Profile Velocity (PV) and Homing Mode (HM). https://content.helpme-codesys.com/en/CODESYS%20SoftMotion%20Light/_sm_light_requirements.html According to the Lenze i950 documentation you linked in your post, none of these modes are supported. Not even Homing Mode which explains why MC_Home does not work even with the full SoftMotion. The full SoftMotion uses Cyclic Synchronous Position Mode (CSP) but still uses Homing Mode (HM) when using MC_Home. You can monitor PDO 0x6060 (Mode of Operation). When using SoftMotion Light you will see it set to 1 (PP) for a MC_MoveAbsolute_SML and MC_MoveRelative_SML and to 3 (PV) for MC_MoveVelocity_SML and to 6 (HM) for MC_Home_SML. When using the SoftMotion instructions, it will pretty much always be set to 8 (CSP) except when using MC_Home, then it will be set to 6 (HM).
Last updated: 2026-02-13

Post by fajean on Issue with library updates CODESYS Forge talk (Post)
We make heavy use of internally developed libraries, which are often nested on multiple levels. I routinely work simultaneously on several libraries along with a project that use them. I make changes to a library and immediately perform a download (online or otherwise) in the project. For the longest time, we had zero issue with this. But starting a good while back, with 3.5 SP19 I think, CODESYS started not noticing library updates in other instances most of the time. When the update is missed, the project sees no need to update the code, and any download ignores the new code. A "Clean all" does not solve the issue. But if I close and then re-open the project, then the new version is noticed and the download works. The other solution is saving the library to the registry multiple times (say, 20-30 times, less if lucky), and then at some point the project notices the changed library. I am now on SP21, and it is still not fixed. This is driving me mad, any tasks probably takes me double the time or more due to this problem. My colleague has the same problem on a separate computer. Is this a known issue? Is there a setting somewhere that changes how updates are checked? Thanks for any help!
Last updated: 2026-02-13

Post by charleskirkland on Connect to Azure IoT Hub CODESYS Forge talk (Post)
It sounds like your TLS setup is basically correct, since the handshake works via OpenSSL, so the issue is likely on the CODESYS side rather than the certificates themselves. From what I’ve seen with the Azure IoT Hub Client SL library, you should double-check that the SAS token is actually being generated and passed correctly to the function blocks (especially wsDeviceSaS) and that the MQTT/HTTPS FB is really triggered cyclically-otherwise the controller won’t initiate the connection at all. Also, make sure DNS, time (NTP), and full certificate chain trust are properly configured on the controller, since IoT Hub authentication depends on them even when using SAS tokens. Another thing worth checking is the library/runtime version-there are reports that certain versions changed behavior and caused connection issues. I’d recommend starting with the official demo project (AzureMQTTDemo) and comparing it step by step with your setup to see what’s missing or not triggered. Speed Stars
Last updated: 2026-04-27

Post by shamcke on Array with generic constant as persistent variable CODESYS Forge talk (Post)
Hello, I have written a function block that uses a generic constant for the upper bound of an array. I wanted to have this array in the persistent memory area, thus I constructed my FB as follows: FUNCTION_BLOCK FbWithGenericArrayLength VAR_GENERIC CONSTANT uiArrayLength : UINT := 10; END_VAR VAR PERSISTENT arr : ARRAY[1..uiArrayLength] OF INT; END_VAR In my PLC_PRG I declare an instance of said FB PROGRAM PLC_PRG VAR myFb : FbWithGenericArrayLength<10>; END_VAR This compiles just fine. When I let CODESYS fill my persistent list, it adds duplicate entries {attribute 'qualified_only'} VAR_GLOBAL PERSISTENT RETAIN // Generated instance path of persistent variable PLC_PRG.myFb.arr: ARRAY [1..uiArrayLength] OF INT; // Generated instance path of persistent variable PLC_PRG.myFb.arr: ARRAY [1..uiArrayLength] OF INT; END_VAR so I manually delete the duplicate. When i now compile, I get errors ------ Build started: Application: Device.Sim.Device.Application ------- Typify code... [ERROR] Sandbox_FW31: PersistentVars [Device: PLC Logic: Application](Line 4): C0161: Border 'uiArrayLength' of array is no constant value [ERROR] Sandbox_FW31: PersistentVars [Device: PLC Logic: Application](Line 4): Type of mapped variable is not equal to original type Compile complete -- 2 errors, 0 warnings Build complete -- 2 errors, 0 warnings : No download possible Is is simply not possible to use a generic constant for the persistent array? Thanks in advance. Edit: It seems I can manually replace the uiArrayLength in the persisten list by the value 10 I used as the generic constant for this particular instance.
Last updated: 2026-05-29

<< < 1 .. 881 882 883 884 885 .. 913 > >> (Page 883 of 913)

Showing results of 22807

Sort by relevance or date