Search talk: Data type function

 
<< < 1 .. 28 29 30 31 32 .. 61 > >> (Page 30 of 61)

Post by imdatatas on Auto Declare window disappears by itself in the Ladder editor CODESYS Forge talk (Post)
Hello Everyone, The "Auto Declare" window disappears by itself in the Ladder editor. For example, a new function block is wanted to be added to the Ladder editor. (For example; MC_Jog block and instance name will be fbMcJog). To do this, "Empty box with EN/ENO" is added to the ladder line from the Toolbox on the right and when you type MC_Jog in the empty box and press enter, normally the "Auto Declare" window appears and you are expected to be asked to write the instance name here. However, this "Auto Declare" window closes itself immediately, it does not wait for the user to enter a value or close the window. I often encounter this situation in many IDE versions. Does this seem like a bug? If anyone has encountered a similar problem while creating a new program name, function or function block instance name regarding the "Auto Declare" window and knows a solution, I would be glad if you could share it. Best wishes Imdat
Last updated: 2025-03-06

Post by micik on Reverse bytes in an array CODESYS Forge talk (Post)
Hello, I'm getting the data in Codesys that is an array of 8 bytes. From this array, I need to foram LREAL number, however, because of different endiannes I need to reverse bytes in this array and then copy to a LREAL variable. For this I'm using a loop and it works OK. I wonder if there is a built in function to do this. I have found CAA Memory library but it has functions like reverse bytes in DWORD. But it seems it doesn't have what I need. https://content.helpme-codesys.com/en/libs/CAA%20Memory/Current/CAA_Memory/Reverse-Bit-Swap-ByteWord-order/ReverseBYTEsInDWORD.html What I need is a function to reverse bytes in an 8 byte array, or something similar.
Last updated: 2024-08-22

Post by micik on Reverse bytes in an array CODESYS Forge talk (Post)
Hello, I'm getting the data in Codesys that is an array of 8 bytes. From this array, I need to foram LREAL number, however, because of different endiannes I need to reverse bytes in this array and then copy to a LREAL variable. For this I'm using a loop and it works OK. I wonder if there is a built in function to do this. I have found CAA Memory library but it has functions like reverse bytes in DWORD. But it seems it doesn't have what I need. https://content.helpme-codesys.com/en/libs/CAA%20Memory/Current/CAA_Memory/Reverse-Bit-Swap-ByteWord-order/ReverseBYTEsInDWORD.html What I need is a function to reverse bytes in an 8 byte array, or something similar.
Last updated: 2024-08-22

Post by manuknecht on Persistence Manager does not save alphabetically first value CODESYS Forge talk (Post)
After some more digging I realized that I get an error on the PLC Logger saying PersistenceChannel: 150 (invalid type in data: SimpleLibrary). I suppose the issue could be found in the ConfigData, which is automatically generated and which looks like this: 1 9##83 SimpleLibrary#GVL.aMoreZeros.[1]#0#64512#15#0 <[2]#0#64520#15#0 <[3]#0#64528#15#0 <[4]#0#64536#15#0 <#0#64544#15#0 <[6]#0#64552#15#0 <<lrVar#0#64560#15#0 <strVar#0#64428#16#80 <uiDummy#0#64370#11#0 Perhaps the fact that the variable is stored within a library confused the compiler? I tried changing the PersistenceChannel parameters to xCompressTags := FALSE which changed the entry in the data file from _xCompressTags BOOL:TRUE _xCompressTags BOOL:FALSE but the actual content of the data file and also the config data did not change.
Last updated: 2023-10-17

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

After un upgrade of "CODESYS Control for Raspberry Pi MC SL" from v4.7 to v4.9 SysFileOpen function stopped working CODESYS Forge talk (Thread)
After un upgrade of "CODESYS Control for Raspberry Pi MC SL" from v4.7 to v4.9 SysFileOpen function stopped working
Last updated: 2023-08-22

Post by sedoerr on Check For Open Dialogs On Client CODESYS Forge talk (Post)
You need to create a function around this function to check the dialogs you use in your program. That's the way i have done it.
Last updated: 2023-09-26

Post by felipemsgarcia on Axis EtherCAT address CODESYS Forge talk (Post)
Hello, I'd like to write some parameters to axes from inside a function block where I passed axis by reference, using ETC_CO_SdoWrite. Is it possible to get the device address from inside the function block? Please see example below. Thank you!
Last updated: 2025-03-06

Post by ken-san-sg on Function Block Method call from OPC UA Client CODESYS Forge talk (Post)
Hello, Is it possible to call mathod which is implemented in Function Block POU from OPC UA client?
Last updated: 2025-07-18

Can a table be used as an input to date and time variables on a function block diagram? CODESYS Forge talk (Thread)
Can a table be used as an input to date and time variables on a function block diagram?
Last updated: 2022-09-15

Why do I get C0434: Function block AbstractFunctionBlock is ABSTRACT and cannot be instantiated for a Reference? CODESYS Forge talk (Thread)
Why do I get C0434: Function block AbstractFunctionBlock is ABSTRACT and cannot be instantiated for a Reference?
Last updated: 2022-08-14

Can a table be used as an input to date and time variables on a function block diagram? CODESYS Forge talk (Thread)
Can a table be used as an input to date and time variables on a function block diagram?
Last updated: 2022-09-15

Function block that after 2 rising edge it gives a bool and resets every 3 seconds CODESYS Forge talk (Thread)
Function block that after 2 rising edge it gives a bool and resets every 3 seconds
Last updated: 2023-04-07

Post by smartcoco on Function block method default arguments CODESYS Forge talk (Post)
It's not that you missed something, it's that CODESYS doesn't have this feature. I hope CODESYS can add this feature. We also hope to add function overload functionality.
Last updated: 2023-12-22

Post by atone on System Date and Time Function CODESYS Forge talk (Post)
SysTimeRtcConvertUtcToLocal is marked as obsolete, but there's not hint on the actual implementation. Which function should I use instead? Edit: even the new online help is still using SysTimeRtcConvertUtcToLocal as example...
Last updated: 2024-01-05

Post by ragarcia on Error while using UpdateConfiguredIPSettings to change IP address CODESYS Forge talk (Post)
I did check I cannot see any error log. It is when executing the Reconfigure function that I get an error as return from that function.
Last updated: 2024-02-19

Post by aniket-b on EtherCAT drive not moving CODESYS Forge talk (Post)
I have EtherCAT drive communicating properly without an error but when I use MC_JOG function, it is not moving at all, I can use MC_Power function and drive does respond to that but other functions are not working,. Please suggest what is wrong here.
Last updated: 2024-03-04

Post by acc00 on Variable Sync Issue In Soft Plc Redundancy CODESYS Forge talk (Post)
Hi arundara, I'm also experimenting with Redundandcy. Is the sync variable function the following: "RedundancySynchronizeData()" ? Does the Task time increase a lot when you activate the sync function?
Last updated: 2024-03-11

Post by mmpl on CAA Library Function CODESYS Forge talk (Post)
I want to change date and time format. I am using CAA storage library function. I am not receiving any value in to output.
Last updated: 2024-04-16

Post by davelewis104 on J1939 SA CODESYS Forge talk (Post)
I am curious if there is a function block or function that will allow me to monitor the J1939 CANBus and pull out all of the SAs that are on a particular bus, without having to have them loaded in the J1939 manager?
Last updated: 2024-04-30

Post by kporter on Exception with ReadNbrSlaves function CODESYS Forge talk (Post)
I've been playing with the code using the Windows soft master and the ReadNbrSlaves function block seems to work here: https://content.helpme-codesys.com/en/libs/EtherCATStack/4.8.0.0/EtherCATStack/pou-ETCMasterStack/DynamicConfig/fld-DynamicConfig.html
Last updated: 2025-10-31

Post by sb879 on Non-formal invocation of function blocks in CODESYS CODESYS Forge talk (Post)
Is it possible to do non-formal invocation of function blocks in CODESYS? I get an error when I try, see the attached pic. Also attached a pic from IEC 61131-3 describing non-formal invocations.
Last updated: 2025-12-04

Post by sb879 on Non-formal invocation of function blocks in CODESYS CODESYS Forge talk (Post)
Is it possible to do non-formal invocation of function blocks in CODESYS? I get an error when I try, see the attached pic. Also attached a pic from IEC 61131-3 describing non-formal invocations.
Last updated: 2025-12-04

Post by somlioy on Non-formal invocation of function blocks in CODESYS CODESYS Forge talk (Post)
No that is not possible for function blocks, although it is possible to that with methods and functions as you see in your second pic.
Last updated: 2025-12-05

Post by timvh on Alarmmanagement – Dynamic Alarm List CODESYS Forge talk (Post)
Probably best to create an alarm template for your motor function block. Then automatically the alarm manager can be filled with all the alarms for all instances of the motor function blocks (based on the created alarm template). See: https://content.helpme-codesys.com/en/CODESYS%20Visualization/_cds_obj_alarm_group_template.html
Last updated: 2026-04-25

<< < 1 .. 28 29 30 31 32 .. 61 > >> (Page 30 of 61)

Showing results of 1512

Sort by relevance or date