Post by timvh on Readable IO names
CODESYS Forge
talk
(Post)
IF you create an ENUM {attribute 'qualified_only'} {attribute 'strict'} TYPE E_IO : ( FIRST := 0, SECOND := 1 ); END_TYPE You should be able to access the array items like: IOCard_OUTPUT[E_IO.FIRST]
Last updated: 2024-09-28
Post by tmo21 on Automation server - trends stop recording - need to manually reconnect
CODESYS Forge
talk
(Post)
Hi Edwin, Thanks for your message. Edge controller Version: 4.4.0.0 based on 3.5.17.30 PLC version: Device Identification Name CODESYS Control for Raspberry Pi MC SL Vendor 3S - Smart Software Solutions GmbH Device type Softmotion3S Firmware version 4.4.0.0
Last updated: 2024-10-23
Post by nonstop-cat on Problem of assigning physical addresses to variables of type ARRAY OF ARRAY as MW and QW
CODESYS Forge
talk
(Post)
Array writing method error,,,<arrayname>: ARRAY [<ll1>..<ul1>, <ll2>..<ul2>, <ll3>..<ul3>]</ul3></ll3></ul2></ll2></ul1></ll1> OF <basedatatype></basedatatype></arrayname>
Last updated: 2025-03-31
Post by nonstop-cat on Problem of assigning physical addresses to variables of type ARRAY OF ARRAY as MW and QW
CODESYS Forge
talk
(Post)
Array writing method error,,,<arrayname>: ARRAY [<ll1>..<ul1>, <ll2>..<ul2>, <ll3>..<ul3>]</ul3></ll3></ul2></ll2></ul1></ll1> OF <basedatatype></basedatatype></arrayname>
Last updated: 2025-03-31
Post by eschwellinger on RaspberryPi 5 gateway problem
CODESYS Forge
talk
(Post)
Do you use the same type Raspberry PI64 SL in the device tree? Which version of the Pi package / Runtime do you use? 4.16.0.0?
Last updated: 2025-06-12
Post by timvh on Unable to select VisuDialogs.Numpad in Open Dialog input configuration
CODESYS Forge
talk
(Post)
You should not use the "open dialog" to change the value. Instead use the input configuration "Write Variable" to change a variable value in the visualization. in the setting of this input command, you can choose the Input type (select dialog).
Last updated: 2025-07-23
Post by gseidel on The default ramp type selection in SoftMotion V4.18.0.0 is Quadratic
CODESYS Forge
talk
(Post)
Hi imdatatas, thanks for your detailed and thoughtful feedback. We will discuss the topic in our team. Best regards, Georg
Last updated: 2025-10-02
Post by eschwellinger on WAGO PFC200 FW25 unable to connect
CODESYS Forge
talk
(Post)
please double check if you have in the project the same plc type like online available. (untag the " Hide non matching device filter.."
Last updated: 2023-12-09
Post by lostcontrol on Remote Ethernet/ip Adapter communication with scanner running on codesys
CODESYS Forge
talk
(Post)
is the bus running.? what type of values/IO is the adaptor providing? do you have a map of the data layout? are you actually looking at the right offset?
Last updated: 2023-12-16
Post by dhumphries on Not able to see input data coming from eip adapter on codesys
CODESYS Forge
talk
(Post)
The green icon with an ! next to the device is concerning. Is the data type correct for the input, you are using a byte input but the description says string. Is there anything useful in the status tab?
Last updated: 2024-03-06
Post by eschwellinger on How to Connect / Go Online without re-downloading the project
CODESYS Forge
talk
(Post)
Which plc type is it: Either use Automationserver to do this or save the project archives instead of projects or use the source dowload function and reopen the application from plc. So you need to chose one of them.
Last updated: 2024-04-13
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 kevinm on Data source and safety PLC
CODESYS Forge
talk
(Post)
I am having the same trouble. However, if I change the Login Configuration settings to 'Type: Login using the credentials determined at runtime' then the Connection information continues as 'Connection state: Connecting' and 'Error information: OK'. There is no User Management on the source PLC.
Last updated: 2024-05-16
Post by gcodejedi on The element of type 'VisuFbElemImage' could not be updated. Reason: Index was outside the bounds of the array.
CODESYS Forge
talk
(Post)
Hello, I am experiencing this exact same issue. Were you able to get yours resolved? If so, would you mind sharing the solution you discovered? Thanks!
Last updated: 2025-11-03
Post by callumo1 on Check For Open Dialogs On Client
CODESYS Forge
talk
(Post)
Thanks for the reply. I want to be able to check if any dialogs are open of any name. I already have a function similar to what you have send but I don't want to have to run it for all the different dialog names. Thanks
Last updated: 2023-09-26
Post by mawaloc on creationg on dynamic widgets
CODESYS Forge
talk
(Post)
Hello, Is there is any way to create a different dynamic widget than what can be found on codesys. I would like to create similar with adding things like limits etcc. in codesys I just see 180 deg or 360 deg. and shape are differents Any tutorial on it. ThankYou
Last updated: 2023-10-20
Post by maxkemmeren on PFC200 (750-8214) high linux load average, but seems random. Possibly EtherCAT related.
CODESYS Forge
talk
(Post)
Have you received any feedback or found any solutions to the load problem. We are running into similar issues, even without codesys running the load avarage is above 1 meaning that it is to busy already without plc code running. Hope you might have some more insight.
Last updated: 2024-07-11
Post by damian177 on Problem with downloading OPC UA tags by Data Source Manager
CODESYS Forge
talk
(Post)
Unfortunately , Data Source Manager from Codesys has any problem with OPC UA Server delivered with ifix SCADA. Someone can help me add manually any tag from UaExpert to codesys ? How should be was a structure for an example of one tag ? I try like in attachement, but question is , if it a good idea ?
Last updated: 2024-09-08
Post by lbouchard on CANOpen SIL2 error: UNSAFESTACK_NOT_OPERATIONAL
CODESYS Forge
talk
(Post)
Hello, Working in 3.5 SP11 32 bit and using the 3S CANopenSafety Slave 3.5.11.0 library on an IFM CR711S. The 3SCSSD.CANOpenDevicesSIL2 function block keeps throwing "UNSAFESTACK_NOT_OPERATIONAL" Additionally, the Status of the device gives "There was an error accessing an I/O parameter". Any ideas on where my issues may lay? I have not found any good documentation that would explain the issue.
Last updated: 2025-05-23
Post by pmasip on Codesys Control for Raspberry Pi 4.10.0.0 - Raspberry Pi OS > 2023-12-05
CODESYS Forge
talk
(Post)
So none of the images from the 64bit archive work with any Codesys Control versions? I have tried the last Pi OS with every Codesys Control version and they don't work. I was wondering if there's any stable combination of versions.
Last updated: 2024-01-04
Post by masmith1553 on SDO generation
CODESYS Forge
talk
(Post)
If you add any device to the CANOpen Manager it will send messages to verify the device is on the network. Do you have the Enable expert settings check box checked in the General tab? have you added any SDOs in the SDOs tab? I avoid using the CANOpen Manager and just use the CAN_Tx and CAN_Rx blocks from the library.
Last updated: 2024-01-25
Post by nima-khajehali on Touch Issues in Tablet (HMI)
CODESYS Forge
talk
(Post)
Hi Everybody, I download the Visualization on the Dell tablet as HMI. The button of HMI does not work with any touches. However, the buttons is working well with a plugged in mouse. Is there any configuration in Visu. manager or setting that I can modify? (Latitude 7230 Rugged Extreme Tablet) Please help me.
Last updated: 2024-02-08
Post by koehler on Codesys 3.5.12 Module not Found
CODESYS Forge
talk
(Post)
Hi there, I am getting troubles with a project. In the Hardware configuration I got some Lenze drives 9400. One of them got as status " Module not Found". Connection are good. ID Node of the Canopen network is also good. I don't find any reason for this status, nor any options to check.
Last updated: 2024-04-17
Post by culius on How to reset AzureMQTTClient after error?
CODESYS Forge
talk
(Post)
Hey Guys, is there any chance of direct reset of the AzureMQTTClient? When the Client runs in an error, I can not reset the client whit switch xEnable to off and on again. I always need to make a hard reboot. Any Ideas, or have someone else experienced this behavior? Kind Regards
Last updated: 2024-06-04
Post by struccc on Inheritence of struct,
CODESYS Forge
talk
(Post)
Strangely reminds me to my struggles... Want to do something "Elegant", reusable, universal, practical... In CODESYS??? π First of all, before you get too deep into this: If you could find a way, to make a "universal" log entry object, containing the variable length data itself, you wouldn't be able to store them in an array, or access them like an array, or pass them by value as a type. (please correct me, if I'm wrong, incorrect, or not precise). Because... Basically you can't declare a type with variable memory footprint. This is a very deeply embedded characteristic of CODESYS, and all IEC 61131-3 systems, and it has many reasons behind. And yes, it is a very common trap / mistake, to forget about. So, with a log entry - I guess - it's pretty much the purpose: store data and metadata together, and then handle it in a uniform way. There are ways to handle this, really depends on what is the purpose. For example: 1. Entries with fixed length (Maybe it is not as evil as it looks for the first time. Depends on the situation, but definitely the fastest and easiest code) You can have your base object, with an internal, fixed length string or byte array variable. I would go with a string, and call it _Data.; And then you can make properties, like As_Bool, As_Int, As_Real... In the 'set' accessors, you can do like: pReal := ADR(_Data); // POINTER TO REAL As_Real := pReal^; In the 'get' accessors, evidently: pReal := ADR(_Data); // POINTER TO REAL pReal^ := AS_Real; Or, can use ANY type, if you are not obsessed with variable / property like access: 2. Fixed length, but nicer First, some disadvantage to any values: - You can only assign values with write access. No literals, constants, etc... - Can only be used as input variable of function or function_block - Therefore, stg you could reach: LogEntry.Initialize (stVariable|rVariable|iVariable|xVariable); Just a quick example (it's funny to play with ANY): Be careful it was not tested. I'm sure can be done better, please feel free to comment FUNCTION_BLOCK FB_LogEntry VAR_INPUT MsgClass : UDINT; // Like DEBUG, WARN, ERR... MsgCode : UDINT; // Like Errors.ERR_FAILED MsgTS : DT; // The timestamp END_VAR VAR _Data : STRING(80); // Our data container... _Descr : __SYSTEM.AnyType; // A standard descriptor for our data, containing TYPE_CLASS, address and size END_VAR METHOD SET_Value : BOOL VAR_INPUT anyValue : ANY; END_VAR VAR I : DINT; diSize : DINT; pStr : POINTER TO STRING; END_VAR // Check what did we receive in anyValue. diSize := anyValue.diSize; // We use constant __SYSTEM.TYPE_CLASS to identify the received data type CASE anyValue.TypeClass OF // Maybe we don't want to store references, pointers... and who knows what else... __SYSTEM.TYPE_CLASS.TYPE_REFERENCE, __SYSTEM.TYPE_CLASS.TYPE_POINTER : SET_Value := FALSE; // For the planned types we will be just fine. TYPE_CLASS.TYPE_BOOL, TYPE_CLASS.TYPE_INT, TYPE_CLASS.TYPE_REAL : SET_Value := TRUE; // Optionally string can be handled separately, maybe we have received STRING(255), but practically it is shorter than 80 bytes... TYPE_CLASS.TYPE_STRING : pStr := anyValue.pValue; diSize := MIN(anyValue.diSize, LEN(pStr^) + 1); // Get the actual size, and rewrite the received structure member diSize := MIN(SIZEOF(_Data), diSize); // Can chop down the received string to our length... SET_Value := TRUE; // Maybe want to play a little bit more here, to narrow down or convert datatypes, etc... // Or just reject any other datatype ELSE SET_Value := FALSE; RETURN; END_CASE // Fail, if the received value is still larger than our container... IF diSize > SIZEOF(_Data) THEN SET_Value := FALSE; END_IF // Here we should be ok, just set up the _DataType structure, and copy store the data IF SET_Value THEN THIS^._Descr.TypeClass := anyValue.TypeClass; // The typeclass is already filtered THIS^._Descr.diSize := diSize; // Set the (adjusted) size THIS^._Descr.pValue := ADR(_Data); // This will not change, just to be sure {IF defined (pou:SysMem.SysMemCpy)} SysMem.SysMemCpy(_DataType.pValue, anyValue.pValue, TO_UDINT(anyValue.diSize)); {ELSE} // An ugly replacement MemCpy FOR I:=0 TO diSize - 1 DO _Descr.pValue[I] := anyValue.pValue[i]; END_FOR {END_IF} // Otherwise, in case of failure maybe better set an empty value (overwrite the former data descriptor) ELSE THIS^._Descr.TypeClass := TYPE_CLASS.TYPE_NONE; THIS^._Descr.pValue := ADR(_Data); THIS^._Descr.diSize := 0; END_IF METHOD GET_Value : BOOL VAR_INPUT anyValue : ANY; END_VAR VAR I : DINT; END_VAR // We just have to serve the data, using the __System.AnyType structure received // Roughly we can say: IF anyValue.TypeClass = _Descr.TypeClass AND anyValue.pValue <> 0 // This should not be possible, already taken care of by Codesys (?) THEN {IF defined (pou:SysMem.SysMemCpy)} SysMem.SysMemCpy(anyValue.pValue, _DataType.pValue, TO_UDINT(MIN(anyValue.diSize, _Descr.diSize))); {ELSE} // An ugly replacement MemCpy FOR I:=0 TO MIN(anyValue.diSize -1, _Descr.diSize - 1) DO anyValue.pValue[I] := _Descr.pValue[I]; END_FOR {END_IF} // Just to make sure, that our string is terminated... IF anyValue.TypeClass = TYPE_CLASS.TYPE_STRING THEN anyValue.pValue[anyValue.diSize -1] := 0; END_IF GET_Value := TRUE; RETURN; END_IF // ... But can play more CASE anyValue.TypeClass OF TYPE_CLASS.TYPE_WSTRING : ; // Could do conversion TYPE_CLASS.TYPE_XSTRING : ; // Wow, I have to figure this out TYPE_CLASS.TYPE_PARAMS : ; // BTW, what is this, how to use? TYPE_CLASS.TYPE_ANYNUM : ; // ... END_CASE Be careful it was not tested. I'm sure can be done better, please feel free to comment 3. If you really want to do entries with variable size In a standard environment, it would be similar to the previous, except you dont have the container variable _Data, just use a pointer, practically _Descr.pValue At Initialize (SET_Value), you have to allocate the memory, would be easy with SysMem.SysMemAlloc - nowadays with SysMem.SysMemAllocData -, and you make sure to release it after use with SysMem.SysMemFreeData... SysMemAlloc was already hidden. The problem with this, that sooner or later your application will totally fragment the dynamic memory, and fail... So should look for some form of dynMaybe MemUtils.MemoryManager (I am not sure what is the status and the future of it). 4. You will end up by a LogEntry Factory ... 5. You could still have a look at this IEC Snippets BTW, Standard Codesys Logger is not a bad choice either. If you are really interested, I share some more code / library.
Last updated: 2025-03-09
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.