Post by swe-hob on call of a method of a function block in another program
CODESYS Forge
talk
(Post)
Hi, Let's assume following: PRG_1 fb_1 : fbExample1; fb_1.method_1 do something... PRG_2 fb_2 : fbExample2; fb_2.method_2 if xTest then PRG_1.fb_1.method_1(); end_if; Is there a reason why runtime hangs when I call the method_1 in PRG_1 from a method in PRG_2? Both programs run in the same task. No chance that any other program calls the method. What I practically do there is that in the program PRG_2 I add a structed object into a buffer. In PRG_1 I just process the items in the buffer.
Last updated: 2024-06-03
Post by swe-hob on call of a method of a function block in another program
CODESYS Forge
talk
(Post)
Hi, Let's assume following: PRG_1 fb_1 : fbExample1; fb_1.method_1 do something... PRG_2 fb_2 : fbExample2; fb_2.method_2 if xTest then PRG_1.fb_1.method_1(); end_if; Is there a reason why runtime hangs when I call the method_1 in PRG_1 from a method in PRG_2? Both programs run in the same task. No chance that any other program calls the method. What I practically do there is that in the program PRG_2 I add a structed object into a buffer. In PRG_1 I just process the items in the buffer.
Last updated: 2024-06-03
Post by timvh on FB string and naming
CODESYS Forge
talk
(Post)
I see, you want to initialize the FB. To be able to initialise it like you described, you need to add the FB_Init method to your FB. (right click on the FB, select add object --> method). Then press the arrow down, to select the FB_Init (overwrite default implementation). In the VAR_INPUT section of this method, add the variable --> Tag : STRING; Then in the code section of this method add: THIS^.Tag := Tag; // copy initial value to local variable in FB Search Google if you want to know more about FB_Init. PS, reflection + instance path, is also an option if you want to get the full name of the instance (path) of the Function Block. See: https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_pragma_attribute_instance_path.html
Last updated: 2024-09-30
Post by dangjoris on raspistepper error after install
CODESYS Forge
talk
(Post)
Hi, I am in the same situation. Is this still your best method? To go back to sp17? best regards
Last updated: 2024-09-30
Post by ouzago on ERROR C0138: No matching 'FB_Init' method found for instantiation of VisuClientObjectMgr
CODESYS Forge
talk
(Post)
When I created a new project in CODESYS using the "Standard Project" template and then added a Visualization, I was receiving the C0138 error during compilation. This issue persisted even with a new, completely empty project. A Quick and Effective Solution (My Method): After many attempts, I solved the problem as follows: From the File -> New Project menu, I selected the "HMI Project" template directly, instead of the "Standard Project" template. After creating the project with this template, I added my POUs, Tasks, and programs (e.g., Ladder, ST). Using this method, the project compiled successfully without any errors. So, my question is: are there any other solutions besides this method?
Last updated: 2025-10-07
Post by smartcoco on Release SP20 - Changes in behaviour?
CODESYS Forge
talk
(Post)
You should use this method: VAR NULL:REFERENCE TO FB_MSG END_VAR Add_EVT_OUT REF= NULL;
Last updated: 2024-03-25
Post by arwie on Use MC_Home without enabling the drive for homing method 35
CODESYS Forge
talk
(Post)
This is a homing routine which is controlled by setting mode of operation and started by setting a bit in the control word. If MC_Home is not usable for this homing method then I need to implement the same functionality. But how?
Last updated: 2025-06-25
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 tvm on Function block method default arguments
CODESYS Forge
talk
(Post)
This works for me in Schneider Machine Expert 2.2, which is based on Codesys 3.5.19. It did not work in Machine Expert 2.1, which was based on Codesys 3.5.16. METHOD PUBLIC Method1 : INT VAR_INPUT TestVar: INT:= 5; END_VAR Method1:= TestVar; PROGRAM SR_Main VAR TestFB: TEST_FB; Var1: INT; END_VAR Var1:= TestFB.Method1();
Last updated: 2024-01-04
Post by jmauer on Codesys 3.5 SP16 Modbus change port settings.
CODESYS Forge
talk
(Post)
Hello, I'm coming to you today because I'm trying to make the baudrate and the slave number dynamic. I've tried the "updateComPortSettings" method on the slave device but it doesn't work and gives the "Modbus_COM_Port" an error. Can you tell me how you got this method to work? Thanks in advance for your help jΓ©rΓ©my
Last updated: 2024-02-20
Post by alexgooi on Init Array input on a method
CODESYS Forge
talk
(Post)
Dear Forum, I would like to initialize an array input on a method. When I do this, I get the following error: "The type of ARRAY [1..2] OF BOOL cannot have a default value in this context." I attached a picture for more clarity. Is this simply not possible or is there a different way of tackling this problem? Thank you in advance
Last updated: 2024-02-26
Post by cihangur on C0138: No matching 'FB_Init' method found for instantiation of VisuClientObjectMgr
CODESYS Forge
talk
(Post)
This "FB_Init" error has become very annoying lately. It's usually related to webvisu and is resolved by deleting all objects and related libraries. Of course, you need to re-add the deleted objects. Lately, we've generally been managing by not upgrading, but this problem persists in every version since SP20 and should be resolved. I updated a project from SP 19 to SP 21 and found 116 similar errors. [ERROR] alarmmanager, 4.7.0.0 (intern): ReplaceAlarmPlaceholdersConverted: C0138: No matching 'FB_Init' method found for instantiation of CharBufferString [ERROR] visuelemsalarm, 4.7.0.0 (system): protDrawRowHeader [VisuFbElemAlarmTable]: C0138: No matching 'FB_Init' method found for instantiation of CharBufferString [ERROR] alarmmanager, 4.7.0.0 (intern): AnalyzePlaceholders2 [Alarm]: C0138: No matching 'FB_Init' method found for instantiation of CharBufferString If you have an ERROR related VisuClientObjectMgr you can try to disable "Visualization Manager - Settings - Support client animations and overlay of native elements " selection "C0138: No matching 'FB_Init' method found for instantiation of VisuClientObjectMgr" etc
Last updated: 2025-10-10
Post by imdatatas on String length issue in GetRecipeNames method
CODESYS Forge
talk
(Post)
Hi, If the string length in the GetRecipeNames method is lower than the default value, there will be a problem with the resulting Recipe file names. For example; When the method in the link is called, let's say the defined string length is 19. In this case, the string content is corrupted as in the image. strArr: ARRAY[0..9] OF STRING(19); https://content.helpme-codesys.com/de/libs/Recipe%20Management/Current/pou-RecipeManCommands/GetRecipeNames.html The same problem does not occur when the string definition is made in the default size. strArr: ARRAY[0..9] OF STRING; FYI Regards, Imdat
Last updated: 2025-02-19
Post by imdatatas on String length issue in GetRecipeNames method
CODESYS Forge
talk
(Post)
Hi, If the string length in the GetRecipeNames method is lower than the default value, there will be a problem with the resulting Recipe file names. For example; When the method in the link is called, let's say the defined string length is 19. In this case, the string content is corrupted as in the image. strArr: ARRAY[0..9] OF STRING(19); https://content.helpme-codesys.com/de/libs/Recipe%20Management/Current/pou-RecipeManCommands/GetRecipeNames.html The same problem does not occur when the string definition is made in the default size. strArr: ARRAY[0..9] OF STRING; FYI Regards, Imdat
Last updated: 2025-02-19
Post by imdatatas on C0138: No matching 'FB_Init' method found for instantiation of VisuClientObjectMgr
CODESYS Forge
talk
(Post)
Hello everyone, I downloaded the "Example: PLC Chat Net Base Services" example from the Codesys help site to review and try it out. https://content.helpme-codesys.com/en/CODESYS%20Examples/_ex_cds_plc_chat_net_base_services.html However, when I open and compile the example program with SP21 Patch2, I get the strange error message below regarding Visualisation component, and it fails to compile. " [ERROR] visuelems, 4.8.0.0 (system): VisuFbTabControl: C0138: No matching 'FB_Init' method found for instantiation of VisuClientObjectMgr " Are others experiencing the error "C0138: No matching 'FB_Init' method found for instantiation..." when trying to compile example projects created with older versions of Codesys with a later version of the IDE? How did you overcome this problem? Could you share your solutions? Regards, Imdat
Last updated: 2025-08-26
Post by sean-barton on Function block method default arguments
CODESYS Forge
talk
(Post)
I have default arguments specified for function block methods but when calling a method, an error is produced requiring me to supply all the arguments despite there being default values. According to the online documentation, under section "Calling a Method" and subsection "argument passing" of the following link: https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_obj_method.html "Passing an argument for an input ... can be omitted ... for which a default or initial value was specified in the declaration..." I have found this to be the case for all Codesys IDEs I've used, 3.5.11, 3.5.16, 3.5.17, 3.5.19. Am I missing something?
Last updated: 2023-12-21
Post by alexgooi on FB_INIT in library
CODESYS Forge
talk
(Post)
Dear Forum, I currently have a challenge. I have a library with some communication classes. These communication classes need to be linked to an interface like this: Devices_and_controllers.Comm_Frame.Modbus_GVL_Link.KNX_TCP[Interface_Index] := THIS^; This is executed via a FB_Init() method. When I try to do this in a program this works fine. But when I declare the FB_Init() in the library the FB_Init() method is being called but the link is not made (interface still has the value 0000000000). The Objects and interfaces are defined in the library (GVL), so Iβm assuming the data should be there. When I call the FB_Init method explicitly in the program it also works fine. Whys is this not working when it is all defined in the library? And is it even possible to create a structure like this in Codesys? Kind regards Alex
Last updated: 2024-05-22
Post by arwie on Use MC_Home without enabling the drive for homing method 35
CODESYS Forge
talk
(Post)
Is it possible to use MC_Home without enabling the drive (MC_Power)? On the drive the homing method 35 (Homing on current position) has to be executed. The drive has to stay disabled due to safety. This is explicitly allowed by the drive. Unfortunately MC_Home reports the error SMC_REGULATOR_OR_START_NOT_SET when executed. Are there other options to start homing, if not with MC_Home?
Last updated: 2025-06-25
Post by imdatatas on MC_MoveAbsolute: C0138: No matching 'FB_Init' method found for instantiation of SMC_MoveAbsRelPerformerImpl [ERROR]
CODESYS Forge
talk
(Post)
Hello everyone, Updating and converting an existing working Codesys Softmotion axis control project to the latest Codesys IDE and Softmotion version always gives the following error message during compilation. " [ERROR] sm3_basic, 4.18.0.0 (codesys): MC_MoveAbsolute: C0138: No matching 'FB_Init' method found for instantiation of SMC_MoveAbsRelPerformerImpl " -- Previously working version: Codesys IDE SP18.50, Softmotion 4.10.0.0 -- Later updated version with the error: Codesys IDE SP21.10, Softmotion 4.18.0.0 Has anyone encountered a similar issue? How can this be resolved? Regards, Imdat
Last updated: 2025-07-24
Post by william-blandon on RecipeManCommands.ReloadRecipes
CODESYS Forge
talk
(Post)
Hello. I'm trying to use RecipeManCommands.ReloadRecipes Method for getting recipes from files. When I call the method it does not generate any error but also not reload any recipe to the recipe definition. Actually I have 6 recipe files on the directory PlcLogic. The rest of the methods work creating recipes, saving to file, etc. Does any one have the same issue? it is something to be set on the recipe manager?
Last updated: 2024-05-16
Post by ben1 on How to stay in a method until something is finished.
CODESYS Forge
talk
(Post)
Why must you use a method? Top of my head can't you just use the button to turn on a bit and use it in a normal task? Just turn a bit on with the button, and run a TON from it in code, and turn it back off with the ton. And then just log the pressure on both the rising & falling edge?
Last updated: 2025-11-03
Post by benemenn on OPC UA Method - How to wait for result?
CODESYS Forge
talk
(Post)
Hi, just being curious. Are you providing opc ua methods or calling them? Either way, how did you implement this?
Last updated: 2025-03-26
Post by dat422 on OPC UA Method - How to wait for result?
CODESYS Forge
talk
(Post)
Hi, I am also interested to know on how to use the Codesys OPCUA Client to call methods from e.g. a python opcua server.
Last updated: 2025-03-28
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
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.