Post by timvh on Get Alarm status in Codesys
CODESYS Forge
talk
(Post)
You are right, that you can use the GetState method, but it is not that simple. You first have to get a list of (filtered) alarms from the AlarmManager. You can find an example in Forge how to do this. See https://forge.codesys.com/prj/codesys-example/alarm-manager/home/Home/ Then you can go through this list to get the state of all the (filtered) alarms. See below the code which you could use. This is all based on the example from forge. Create a program: // This example shows how to access alarms via structured text. PROGRAM PLC_PRG VAR xInit : BOOL := TRUE; udiResult : UDINT; fbAlarmFilterCriteriaAll : FB_AlarmFilterCriteriaAll; fbAlarmManagerClient : FB_AlarmManagerClient; itfAlarmManagerClient : IAlarmManagerClient := fbAlarmManagerClient; xAlarm1 : BOOL; xAlarm2 : BOOL; xWarning : BOOL; iNrOfAlarmsInAlarmList : INT; iNrOfActiveAlarmsInAlarmList : INT; paitfAlarm: POINTER TO ARRAY [0..0] OF AlarmManager.IAlarm; iAlarmIndex : INT; eAlarmState: AlarmManager.AlarmState; END_VAR IF xInit THEN xInit := FALSE; fbAlarmManagerClient.itfAlarmFilterCriteria := fbAlarmFilterCriteriaAll; // register alarm client to get updated about alarm status / changes udiResult := AlarmManager.g_AlarmHandler.RegisterClient(itfAlarmManagerClient, 0, 0); END_IF // Polling the number of alarms udiResult := AlarmManager.g_AlarmHandler.GetActiveAlarms(itfAlarmManagerClient, parritfActiveAlarms => paitfAlarm, iCountActiveAlarms => iNrOfAlarmsInAlarmList); iAlarmIndex := 0; iNrOfActiveAlarmsInAlarmList := 0; WHILE iAlarmIndex < iNrOfAlarmsInAlarmList DO eAlarmState := paitfAlarm^[iAlarmIndex].GetState(); IF eAlarmState = AlarmManager.AlarmState.Active OR eAlarmState = AlarmManager.AlarmState.ActiveAcknowledged THEN iNrOfActiveAlarmsInAlarmList := iNrOfActiveAlarmsInAlarmList + 1; END_IF iAlarmIndex := iAlarmIndex + 1; END_WHILE See below some details about the function blocks: One function block should implement the IAlarmFilterCriteria interface. This can be empty except a few methods. FUNCTION_BLOCK FB_AlarmFilterCriteriaAll IMPLEMENTS AlarmManager.IAlarmFilterCriteria Method implementation (others related to interface are empty) METHOD AreAllAlarmClassesSelected : BOOL AreAllAlarmClassesSelected := TRUE; METHOD AreAllAlarmGroupsSelected : BOOL AreAllAlarmGroupsSelected := TRUE; METHOD GetPriorityFrom : USINT GetPriorityFrom := 0; METHOD GetPriorityTo : USINT GetPriorityTo := 255; The other function block should implement IAlarmManagerClient and get a reference to the FB which implements the IAlarmFilterCriteria FUNCTION_BLOCK FB_AlarmManagerClient IMPLEMENTS AlarmManager.IAlarmManagerClient VAR_INPUT itfAlarmFilterCriteria: AlarmManager.IAlarmFilterCriteria; END_VAR Method implementation (others related to the interface are empty) METHOD GetFilterCriteria : AlarmManager.IAlarmFilterCriteria // see VAR_INPUT for filter GetFilterCriteria := itfAlarmFilterCriteria; Off course you have to add the AlarmManager to your application and add some alarms to it.
Last updated: 2025-09-02
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 anhkdv on Motion FB Error
CODESYS Forge
talk
(Post)
Hi! I'm a newbie. I'm doing a project for Delta Robot using Codesys and got this error when trying to move in a dynamic coordinate system. This error occurs when I use FB MC_MoveLinearRelative and FB SMC_GroupWait
Last updated: 2023-10-08
Post by trycyclepower on How to set unit in Axis
CODESYS Forge
talk
(Post)
I am very new to Motion in Codesys. I have linear axis and would like to setup as mm, I want to move axis and control axis in mm, mm/s. How do I do that? I know my electronic gearing is 200000.
Last updated: 2024-08-29
Post by mucleus on How to implementation Gantry Robot path.
CODESYS Forge
talk
(Post)
Hello. How can I move path like in the attached image using CODESYS's robotics library? (MC_MoveLinearAbsolute, MC_MoveDirectAbsolute, MC_MoveCircularAbsolute, etc.) Please help me. Thanks.
Last updated: 2025-02-13
Post by davidbo on Why is Application_DataLog.sqlite not moved to my directory
CODESYS Forge
talk
(Post)
In CODESYScONTROL_User.cfg I have [SysFile] FilePath.1=/etc/, .dat FilePath.2=/home/pi/DataLog/, .sqlite, .sqlite.metadata, .sqlite-journal, .sqlite.tmp PlcLogicPrefix=1 Should that not write the Application_DataLog.sqlite in the /home/pi/DataLog/ directory? Or how do move the working directory for AC_Datalog ?
Last updated: 2025-08-22
Post by pr0schwein on Driving the slave axis across master's zero point - caming
CODESYS Forge
talk
(Post)
Is there a way to move the slave axis across the zero point of the master axis with variable start and stop points? For example: Slave start at 270Β° and end at 50Β°. thanks :)
Last updated: 2024-01-18
Post by matt-s on HMI Pushbutton/Move Instruction
CODESYS Forge
talk
(Post)
I know, that is not the issue though. The issue is the HMI_Blower_Auto_PB variable not changing to false. I do not have the IO modules plugged in yet, that is why there are NaN values for those variables. That should not affect this.
Last updated: 2024-01-25
Post by ph0010421 on Sending Sequential Modbus TCP Packets
CODESYS Forge
talk
(Post)
Hello You'll need to write a proper sequence to send, then wait for confirmation, and then move on to the next step. Use the CASE statement in ST. It's perfect for creating a sequence.
Last updated: 2024-03-08
Post by xabier on No work Control Torque Codesys with Drivers M751 Control Techniques
CODESYS Forge
talk
(Post)
YEs..This drive supported Softmotion... I attaced the photos...for example with this driver can i move in absolute mode but i canΒ΄t aplicated FB set Torque and the 2 FB are down the same libre SM3_Basic
Last updated: 2024-03-14
Post by eschwellinger on OPC Da Server Code Meter Issues after Enabling License
CODESYS Forge
talk
(Post)
it is mandatory to activate the OPC DA license into the 32-xxxxxx legacy container (not UFC) you need a remove ticket -> contact CODESYS store - my question to move the license
Last updated: 2024-05-03
Post by bertoldo on Robo Scara3
CODESYS Forge
talk
(Post)
the interpolation block does not start from the absolute value. It returns to zero even when writing to dLastWayPosX , Y , Z.
Last updated: 2024-10-15
Post by ojz0r on Leitungsverzweigung mit einem existierenden Block (z.B. AND-Glied) zu verbinden
CODESYS Forge
talk
(Post)
What you want is to use the CFC language instead of FB.
Last updated: 2024-11-11
Post by enricoghisla on Functional block
CODESYS Forge
talk
(Post)
How can i access to the variable in the FB from outside without put them in the in/out?
Last updated: 2024-04-16
Post by enricoghisla on Functional block
CODESYS Forge
talk
(Post)
How can i access to the variable in the FB from outside without put them in the in/out?
Last updated: 2024-04-16
Post by snhatton on How to write a for loop in ladder?
CODESYS Forge
talk
(Post)
Hi there, little late to the party, but you could also use the ST block for in-line ST code and implement a for loop as you normally would. ST Block is super handy if you just need a small amount of in-line structured text code without creating a new POU. Hope this helps!
Last updated: 2025-10-06
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 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 smartcoco on Bit / Bool data types in function parameters
CODESYS Forge
talk
(Post)
Memory addressing is measured in bytes, with BOOL occupying one byte. BIT is quite unique as it occupies one bit. So, try not to use BIT in the program. You can use the Unpack function to solve your problem.
Last updated: 2024-01-18
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 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
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.