Post by kurtk on Modbus TCP Server
CODESYS Forge
talk
(Post)
ditto I'm just getting my codesys wheels on and the modbus stuff is confusing. I am re-platforming an existing PLC application On that platform one could simply tag variables to register numbers and the whole shooting match could be accessed via modbus and typically holding registers and input registers were treated the same way... On codesys I see there is a modbus TCP server Device I/O mapping tab and a Modbus TCP server IEC objects tab I get the sense that one can configure the serving of variables both/either way but am unclear about the optimum/necessary path. Apparently in the IEC Objects tab one can "ADD" something or other - presumeably channels. I have created a preliminary function block but the Select Function Block window shows nothing to select WTH ? I exported the Device mapping and was surprised to see the entire Device IO map - complete with all the bit-mapped holding/input registers!! WTH!!?? Bit-mapped words are strictly a nichey special purpose application. I am targetting making a couple hundred variables available which would turn into hundreds of pages of IO/mapping Is the FUnction Block IEC objects thingy an alternative to that ? I notice that CODESYS shows the tags which the PLC used to specify the register address... are tags used in CODESYS for any specific hard-core purpose ?
Last updated: 2025-08-19
Post by kurtk on dynamic modbus devices
CODESYS Forge
talk
(Post)
I am CODESYS neophyte getting my wheels on. My goal is to re-platform an existing PLC application written in 61131 ST I've got the majority of the code/variables in a compilable form - excluding all the IO and comms nuances I am not sure whether this the right forum An important functionality which I implemented on the other platform was totally dynamic modbus devices... Most configurations I have come across impose static MB configs in which all configured devices MUST be present and functional... I have monkeyed around with MB enough to know that herding a half dozen MB cats into a working config can be tricky. I just do them one at a time and dynamically turn them on/off in whatever combination is convenient with ID, IP, baud, parity etc being runtime tweakable. I am totally curious whether this is possible with codesys, or whether its device configuration corrals one into a static cage which requires re-building the code to support flexible variations. Best regards
Last updated: 2025-08-19
Modbus TCP Server
CODESYS Forge
talk
(Thread)
Modbus TCP Server
Last updated: 2025-08-19
Post by kurtk on runtime dynamic modbus devices
CODESYS Forge
talk
(Post)
I am CODESYS neophyte getting my wheels on. My goal is to re-platform an existing PLC application written in 61131 ST I've got the majority of the code/variables in a compilable form - excluding all the IO and comms nuances I am not sure whether this the right forum An important functionality which I implemented on the other platform was totally dynamic modbus devices... Most configurations I have come across impose static MB configs in which all configured devices MUST be present and functional... I have monkeyed around with MB enough to know that herding a half dozen MB cats into a working config can be tricky. I just do them one at a time and dynamically turn them on/off in whatever combination is convenient with ID, IP, baud, parity etc being runtime tweakable. I am totally curious whether this is possible with codesys, or whether its device configuration corrals one into a static cage which requires re-building the code to support flexible variations. Best regards
Last updated: 2025-08-19
Post by rer-code on Codesys 3.5.18.60 – Application Loss and Persistent Data Corruption
CODESYS Forge
talk
(Post)
Hi, I’m currently managing over 50 PLCs running Codesys version 3.5.18.60. At seemingly random intervals, some of these devices experience a failure where: All persistent variables are lost. Attempting to log in results in the message: “The application does not exist on device. Do you want to create it and proceed with download?” The log shows: “Loading retain-data/bootproject failed.” From what I’ve gathered, this may be due to a corrupted persistent data file, but I’m not entirely sure how to confirm or resolve this issue. If anyone has encountered something similar or has suggestions for troubleshooting or preventing this, I would greatly appreciate your input. Best regards
Last updated: 2025-08-19
Post by mqi2r on Newly created texlists wont appear in the selection dropdown
CODESYS Forge
talk
(Post)
For anyone with this issue, you may need to: Open the text list properties (right-click the text list once you create it). Select the Text List tab. Change the Download by option to Visualization. I was fighting this for so long. Once you do that, you should find your text list appears in the drop down when editing a visualisation.
Last updated: 2025-08-19
Newly created texlists wont appear in the selection dropdown
CODESYS Forge
talk
(Thread)
Newly created texlists wont appear in the selection dropdown
Last updated: 2025-08-19
Post by jonasz on TargetVisu not accepting touch inputs
CODESYS Forge
talk
(Post)
Hi, Did you find a solution to the problem?
Last updated: 2025-08-19
Post by viksym on How to get the motor scaling value from code
CODESYS Forge
talk
(Post)
If anybody finds this in the future, I managed to do it like this: scalingValue := EncoderPulseCountPerRev / ABS(AxisName.fScaleFactor); No need to use MC_ReadParameter as I am able to read this value directly from the axis object. Using an absolute value of the fScaleFactor is there in case the axis is set as inverted, in which case it would be a negative value. I was not able to figure out how to get EncoderPulseCountPerRev programatically, but since all my servos use an encoder with pulse count per revolution of 16#800000, the final equation looks like this: scalingValue := 16#800000 / ABS(AxisName.fScaleFactor);
Last updated: 2025-08-19
Post by jonasz on TargetVisu not accepting touch inputs
CODESYS Forge
talk
(Post)
So, in my case, the solution is to uncheck the option to support client animation and overlay native elements. Visualisation Manager -> Settings -> General Settings
Last updated: 2025-08-19
IDE chrashes when importing OPC UA ECM model
CODESYS Forge
talk
(Thread)
IDE chrashes when importing OPC UA ECM model
Last updated: 2025-08-19
How to get the motor scaling value from code
CODESYS Forge
talk
(Thread)
How to get the motor scaling value from code
Last updated: 2025-08-19
Post by micky on Mail_Service_SL Lib
CODESYS Forge
talk
(Post)
Hallo zusammen, ich habe folgendes Problem. Ich möchte mit der Lib Mail_Service_SL ein Mail versenden. Manchmal funktioniert es auch aber nicht zuverlässig. Wenn ich den Funktionsblock sendmail mit den entsprechenden Daten aufrufe bekomme ich die Fehlermeldung CHECK_RESULT_FAILD. Laut Dokumentation sollte im sServerMessage der Grund stehen, dieser ist aber leer. Was kann der Grund hierfür sein? Gibt es eine ander Lib mit der ich Mails versenden kann? Viele Grüße Micky
Last updated: 2025-08-19
Post by selim on CNC / G01 Speed is very slow (or go-stop motion) in Continuous short segment .
CODESYS Forge
talk
(Post)
Hi everyone, i face the same problem. The G-code doesn’t maintain the feed rate. If you don’t mind. can you share the final code?
Last updated: 2025-08-19
CNC / G01 Speed is very slow (or go-stop motion) in Continuous short segment .
CODESYS Forge
talk
(Thread)
CNC / G01 Speed is very slow (or go-stop motion) in Continuous short segment .
Last updated: 2025-08-19
Post by jzhvymetal77 on IecVarAccessLibrary.IBaseTreeNode methon
CODESYS Forge
talk
(Post)
I had this code working in a previous version of CoDeSys to read variables from a GVL that were added to the Symbol configuration. The problem now is that when I get the _IBaseTreeNode_Parent, it returns a valid interface, but none of the methods or properties work. If you monitor the _IBaseTreeNode in the watch window, it does show the correct child count. However, it fails at step 30, where the child count incorrectly returns zero. In the image, you can see that the watch window displays the correct value that the property should return. Attached is the full project code. FUNCTION_BLOCK Symbols_TO_STR VAR_INPUT i_sPath : STRING(255); i_diIndexChild : DINT; i_diIndexComponent : DINT; END_VAR VAR_OUTPUT q_diChildCount : DINT; q_diComponentCount : DINT; q_sName : STRING(255); q_sValue : STRING(255); q_sType : STRING(80); q_sErrorResult : STRING(80); END_VAR VAR uiStepCopy : UINT; uiStep : UINT; uiStepProcessCopy : UINT; uiStepProcess : UINT; _IBase : IecVarAccessLibrary.IBase; _pIIecVarAccess5 : POINTER TO IecVarAccessLibrary.IIecVarAccess5; _IIecVarAccess5 : IecVarAccessLibrary.IIecVarAccess5; _RTS_IEC_RESULT : IecVarAccessLibrary.RTS_IEC_RESULT; _udiResult : UDINT; _VariableInformationStruct : IecVarAccessLibrary.VariableInformationStruct; _IBaseTreeNode_Parent : IecVarAccessLibrary.IBaseTreeNode; _IBaseTreeNode_Child : IecVarAccessLibrary.IBaseTreeNode; _ITypeDesc_Child : IecVarAccessLibrary.ITypeDesc; _TypeDescAsUnion_Child : IecVarAccessLibrary.TypeDescAsUnion; _arIBaseTreeNode_Child : ARRAY[0..20] OF IecVarAccessLibrary.IBaseTreeNode; _TypeClass_Child : IecVarAccessLibrary.IBaseLibrary.TypeClass; _psSymbolName_Child : POINTER TO STRING; _sSymbolName_Child : STRING(255); _IBaseTreeNode_Component : REFERENCE TO IecVarAccessLibrary.IBaseTreeNode; _TypeClass_Component : IecVarAccessLibrary.IBaseLibrary.TypeClass; _ByteAddress_Component : __XWORD; _ByteOffset_Component : __XWORD; _sArrayIndexName_Component : STRING(20); _diArrayIndexCalc_Component : DINT; _diArrayIndexValue_Component: DINT; _psSymbolName_Component : POINTER TO STRING; _sSymbolName_Component : STRING(255); END_VAR uiStepCopy:=uiStep; uiStepProcessCopy:=uiStepProcess; CASE uiStep OF 10: // GET IBASE FROM CURRENT APP _IBase:= IecVarAccessLibrary.IecVarAccGetFirstInterface2(0); IF _IBase<>0 THEN uiStep:=20; ELSE q_sErrorResult:=CONCAT(UINT_TO_STRING(uiStep), ': IecVarAccGetFirstInterface2'); uiStep:=9000; END_IF 20: //QueryInterface IIecVarAccess5 from IBASE _pIIecVarAccess5 := _IBase.QueryInterface(IecVarAccessLibrary.ITFID_IIecVarAccess5, ADR(_RTS_IEC_RESULT)); IF _pIIecVarAccess5<>0 AND _RTS_IEC_RESULT=0 THEN _IIecVarAccess5 := _pIIecVarAccess5^; uiStep:=30; ELSE q_sErrorResult:=CONCAT(UINT_TO_STRING(uiStep), ': QueryInterface_IIecVarAccess5'); uiStep:=9000; END_IF 30: // Get IBaseTreeNode_Parent _IBaseTreeNode_Parent := _IIecVarAccess5.VarAccGetNode3(ADR(i_sPath), ADR(_VariableInformationStruct), ADR(_RTS_IEC_RESULT)); IF _IBaseTreeNode_Parent<>0 AND _RTS_IEC_RESULT=0 THEN q_diChildCount:=_IBaseTreeNode_Parent.ChildCount; uiStep:=40; ELSE q_sErrorResult:=CONCAT(UINT_TO_STRING(uiStep), ': IBaseTreeNode_Parent'); uiStep:=9000; END_IF 40: // Get IBaseTreeNod_Child IF(q_diChildCount-1>=i_diIndexChild AND i_diIndexChild >=0) THEN _IBaseTreeNode_Child := _IBaseTreeNode_Parent.GetChild(i_diIndexChild); IF _IBaseTreeNode_Child<>0 THEN uiStep:=50; ELSE q_sErrorResult:=CONCAT(UINT_TO_STRING(uiStep), ': IBaseTreeNode_Parent'); uiStep:=9000; END_IF ELSE q_sErrorResult:=CONCAT(UINT_TO_STRING(uiStep), ': i_diIndexChild OutBounds'); uiStep:=9000; END_IF
Last updated: 2025-08-20
Post by dkugler on Mail_Service_SL Lib
CODESYS Forge
talk
(Post)
ich meine mich zu erinnern, dass ich schon FB's hatte, die Fehlermeldungen mit löschen des Enable/Execute Bits abgelöscht haben. Dann würde bei dir sobald das Error Bit gesetzt wird, nichts mehr drin stehen. Vielleicht wäre es ein Versuch wert, den String vor dem zurücksetzen des Execute in eine Variable zu speichern, ob dann was drin steht und danach erst ablöschen?
Last updated: 2025-08-20
Post by dkugler on Mail_Service_SL Lib
CODESYS Forge
talk
(Post)
Last updated: 2025-08-20
Mail_Service_SL Lib
CODESYS Forge
talk
(Thread)
Mail_Service_SL Lib
Last updated: 2025-08-20
Post by jonasz on TargetVisu not accepting touch inputs
CODESYS Forge
talk
(Post)
This solution did not give me peace of mind, so I decided to check other options again, especially since artifacts appear on some controls in WebVis. The solution is to enable the Multitouch handling option in the additional settings tab.
Last updated: 2025-08-21
TargetVisu not accepting touch inputs
CODESYS Forge
talk
(Thread)
TargetVisu not accepting touch inputs
Last updated: 2025-08-21
C0077: Unknown type: 'NULL'
CODESYS Forge
talk
(Thread)
C0077: Unknown type: 'NULL'
Last updated: 2025-05-13
MS SQL Compact cutting off Database name?
CODESYS Forge
talk
(Thread)
MS SQL Compact cutting off Database name?
Last updated: 2025-08-21
Post by romrot on MS SQL Compact cutting off Database name?
CODESYS Forge
talk
(Post)
I'm trying to use an fbMsSQL_compact function to read data from an SQL database. It works with some databases, but there is one database that I can't seem to get it to work on. It's set up the same as the other databases that I've tested with the only difference I see is that the name of the database is cut off in the status message. I'll get a message like "User: User logged out succesfully from database: 12345" But the whole name of the database is something like 1234567.
Last updated: 2025-08-21
Post by wagokurt on TargetVisu option missing in IDE
CODESYS Forge
talk
(Post)
I have installed both the Codesys Control for Linux SL 4.16.0.0 and Target Visu for Linux 4.16.0.0 packages in Codesys 3.5 SP21 Patch2. When I try to add a target visu, it is missing. I have spent hours on this and tried different machines, all behave the same way. Is this a bug?
Last updated: 2025-08-21
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.