<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Talk</title><link href="https://forge.codesys.com/forge/talk/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/</id><updated>2026-10-31T00:14:10.989000Z</updated><subtitle>Recent posts to Talk</subtitle><entry><title>Patched Wine packages for Ubuntu and CODESYS 3.5</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/9508a5f827/?limit=25#8968" rel="alternate"/><published>2026-10-31T00:14:10.989000Z</published><updated>2026-10-31T00:14:10.989000Z</updated><author><name>mondinmr</name><uri>https://forge.codesys.com/u/mondinmr/</uri></author><id>https://forge.codesys.com5906beb5619c1cd1aa3371dc5b27f6c320ac5874</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;I have now published Ubuntu amd64 packages of my patched Wine build for CODESYS, targeting &lt;strong&gt;Ubuntu 22.04, 24.04, 26.04 and 26.10&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The packages are based on &lt;strong&gt;Wine 11.20&lt;/strong&gt; and include all five compatibility patches covering NCrypt, thread suspension, security tokens, service tokens and local WMI marshalling. Both 32-bit and 64-bit Windows applications are supported through WoW64.&lt;/p&gt;
&lt;p&gt;In my working environment, CODESYS 3.5 SP21 successfully compiled and went online with a very complex project containing hundreds of thousands of lines of code and extensive use of polymorphism.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PPA and installation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;All four binary builds have completed successfully and are now published and available through APT.&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="https://launchpad.net/~mondinmr/+archive/ubuntu/wine-adv" rel="nofollow"&gt;Wine ADV for CODESYS PPA&lt;/a&gt;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo add-apt-repository ppa:mondinmr/wine-adv
sudo apt update
sudo apt install wine-adv
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The runtime installs under /opt/wine-adv and provides dedicated commands, allowing it to coexist with your existing Wine installation.&lt;/p&gt;
&lt;p&gt;For example, to launch CODESYS from an existing dedicated prefix:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;WINEPREFIX="$HOME/.wine.codesys" wine-adv \
  'C:\Program Files\CODESYS 3.5.21.30\CODESYS\Common\CODESYS.exe'
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Adjust the executable path to match your installed version. Use the same WINEPREFIX when running the CODESYS installer or installing its prerequisites.&lt;/p&gt;
&lt;p&gt;The package contains the patched Wine runtime. CODESYS and its required Microsoft .NET components must be installed separately inside the prefix.&lt;/p&gt;
&lt;p&gt;Source code, patches and packaging are available on the &lt;a class="" href="https://launchpad.net/wine-adv" rel="nofollow"&gt;project page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is an experimental community build. Feedback and test results from other users are welcome!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CODESYS Installer and CodeMeter licensing are also working in my setup.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For CodeMeter, I use the &lt;strong&gt;native Linux CodeMeter runtime&lt;/strong&gt;, while the Windows applications run under the patched Wine build.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>From target start Win OnScreenKeyboard</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/8cc44c61c0/?limit=25#29bd" rel="alternate"/><published>2026-10-29T09:28:27.927000Z</published><updated>2026-10-29T09:28:27.927000Z</updated><author><name>dmb-fan</name><uri>https://forge.codesys.com/u/dmb-fan/</uri></author><id>https://forge.codesys.comefbb1fe32a34a63c32cabbaf34a5e501409af835</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Thanks, but today morning it works on random base. (from Target Visu directly).  After a few attemps I found the problem:&lt;br/&gt;
The button for the keyboard is on the Master-Frame. And it works on every single Visu-Screen, but NOT on the Start-Visu! (But there is a short flash on the bottom of the screen...)&lt;br/&gt;
And of course I tested the whole time with the Start-Visu. Now I copy the Bitmap-Button on the Start Screen OVER the Frame Bitmap, too and it works. So I think its a bug...&lt;br/&gt;
For me works this: in the visu for the element&lt;br/&gt;
Input-Config &amp;gt;&amp;gt; OnMouseUp &amp;gt;&amp;gt; ExecuteClientProgram &amp;gt;&amp;gt; 1. Parameter = 'osk.exe'&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>From target start Win OnScreenKeyboard</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/8cc44c61c0/?limit=25#5be3" rel="alternate"/><published>2026-10-28T14:40:05.287000Z</published><updated>2026-10-28T14:40:05.287000Z</updated><author><name>TimvH</name><uri>https://forge.codesys.com/u/timvh/</uri></author><id>https://forge.codesys.comdb79c67cf41f19d8082c3f97bd8feff06ae9b0ee</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Check the CODESYS log. Do you see something like this?:&lt;/p&gt;
&lt;p&gt;2026-10-28T14:27:50.602Z: Cmp=SysFile, Class=2, Error=39, Info=4, pszInfo=!!!! Access denied to 'C:/Windows/System32/osk.exe' due to ForceIecFilePath&lt;br/&gt;
2026-10-28T14:27:50.602Z: Cmp=SysFile, Class=1, Error=0, Info=0, pszInfo= To grant access, this path may be configured as a PlaceholderFilePath&lt;/p&gt;
&lt;p&gt;PS, if you give an irritating, or annoying or blaming answer, I will never try to help you again.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>SMC_Interpolator / CNC Abort – ControlAxisByPos Sometimes Remains Busy and Axis Continues Moving</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/4c3b2a1abd/?limit=25#b4f4" rel="alternate"/><published>2026-10-27T16:35:07.197000Z</published><updated>2026-10-27T16:35:07.197000Z</updated><author><name>gseidel</name><uri>https://forge.codesys.com/u/gseidel/</uri></author><id>https://forge.codesys.com2169edb2a66cf062a10a9a65bbb039489f79ec71</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi kishan,&lt;/p&gt;
&lt;p&gt;I would recommend to first execute a stop (input bSlowStop or bQuickStop of the interpolator). Only when the interpolator has stopped you should abort the interpolator and preprocessing FBs. BTW., a new rising edge of the execute input should suffice.&lt;/p&gt;
&lt;p&gt;In case preprocessing is done in a different task: take care to write the abort signal to a local variable in the path and interpolation task and use this local copy. (Otherwise, some preprocessing FBs might see an abort and others not, in the same cycle of the task.)&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Georg&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>From target start Win OnScreenKeyboard</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/8cc44c61c0/?limit=25#e2ab" rel="alternate"/><published>2026-10-27T16:06:50.335000Z</published><updated>2026-10-27T16:06:50.335000Z</updated><author><name>dmb-fan</name><uri>https://forge.codesys.com/u/dmb-fan/</uri></author><id>https://forge.codesys.com1058f3cdacd10d930a956e134e17c7f988b22f75</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi !&lt;br/&gt;
I am get crazy....&lt;br/&gt;
I try to start osk.exe from Visu or PLC.&lt;br/&gt;
From Visu I can't load it, always error (It change from programm execute always to load receipe ..!?!?)&lt;br/&gt;
From PLC always freeze of PLC,&lt;br/&gt;
- I allowed the win service of the PLC the data exchange between desktop and service&lt;br/&gt;
- I allowed in ..user.cfg &lt;span&gt;[SysProcess]&lt;/span&gt;  Command=AllowAll&lt;br/&gt;
Shutdown with SysProcessExecuteCommand works, but 'osk.exe' or the complete path always crashed the system. &lt;br/&gt;
And like always: No documentation. Just guessing. Or know somebody more and have a link for me?&lt;br/&gt;
THANKS !&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>From target start Win OnScreenKeyboard</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/4c692e7518/?limit=25#2403" rel="alternate"/><published>2026-10-27T16:06:41.901000Z</published><updated>2026-10-27T16:06:41.901000Z</updated><author><name>dmb-fan</name><uri>https://forge.codesys.com/u/dmb-fan/</uri></author><id>https://forge.codesys.com51a233ca8e027e4eab8bca0068f447403233916b</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi !&lt;br/&gt;
I am get crazy....&lt;br/&gt;
I try to start osk.exe from Visu or PLC.&lt;br/&gt;
From Visu I can't load it, always error (It change from programm execute always to load receipe ..!?!?)&lt;br/&gt;
From PLC always freeze of PLC,&lt;br/&gt;
- I allowed the win service of the PLC the data exchange between desktop and service&lt;br/&gt;
- I allowed in ..user.cfg &lt;span&gt;[SysProcess]&lt;/span&gt;  Command=AllowAll&lt;br/&gt;
Shutdown with SysProcessExecuteCommand works, but 'osk.exe' or the complete path always crashed the system. &lt;br/&gt;
And like always: No documentation. Just guessing. Or know somebody more and have a link for me?&lt;br/&gt;
THANKS !&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Checking the device tree, not just the code: what else is worth a static check?</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/8a6dfb2f05/?limit=25#b2d2" rel="alternate"/><published>2026-10-27T08:10:53.689000Z</published><updated>2026-10-27T08:10:53.689000Z</updated><author><name>caspershes</name><uri>https://forge.codesys.com/u/caspershes/</uri></author><id>https://forge.codesys.comee26d5c6932b4c07a1b4da6baf8b8d5d7b3fb4b3</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;I spend most of my time reviewing other people's CODESYS projects before commissioning,&lt;br/&gt;
and two kinds of defects keep showing up. Both compile clean. Both read fine.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;One is in the code.&lt;/strong&gt; A pause timer whose own input gets cleared inside the branch&lt;br/&gt;
the timer is supposed to gate:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;rampDelay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kr"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;run_2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kr"&gt;IF&lt;/span&gt; &lt;span class="n"&gt;NOT&lt;/span&gt; &lt;span class="n"&gt;run_2&lt;/span&gt; &lt;span class="kr"&gt;OR&lt;/span&gt; &lt;span class="n"&gt;rampDelay&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Q&lt;/span&gt; &lt;span class="kr"&gt;THEN&lt;/span&gt;
    &lt;span class="n"&gt;run_1&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;run_2&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;FALSE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;      &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;timer&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="n"&gt;own&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cleared&lt;/span&gt; &lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="n"&gt;here&lt;/span&gt;
&lt;span class="kr"&gt;ELSE&lt;/span&gt;
    &lt;span class="n"&gt;run_1&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;FALSE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;run_2&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;FALSE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;END_IF&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Next scan IN is FALSE, the timer resets, the condition is true again, and the second&lt;br/&gt;
pump starts immediately. A 30-second ramp delay that actually lasts one task cycle.&lt;br/&gt;
The setpoint is on the HMI, the operator turns it, and nothing changes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The other is not in the code at all.&lt;/strong&gt; On one site the outdoor temperature read 0.0 °C&lt;br/&gt;
in mild weather. The ST was correct, the variable was bound to the channel — but the&lt;br/&gt;
channel's sensor type was left at "disabled", so nothing was ever digitised. Same class:&lt;br/&gt;
a module with Disable_module = TRUE, or an analog output bound to a variable while its&lt;br/&gt;
mode is off. Nothing in the project reports any of this, and the code review never looks&lt;br/&gt;
there, because the configuration lives in the device tree and not in the POUs.&lt;/p&gt;
&lt;p&gt;That second class is what pushed me to parse the &lt;code&gt;.export&lt;/code&gt; format rather than PLCopenXML&lt;br/&gt;
alone — the export carries the device tree and the visualization, so "nothing ever writes&lt;br/&gt;
this alarm variable" stops being a guess and becomes a fact you can check against the&lt;br/&gt;
screen bindings.&lt;/p&gt;
&lt;p&gt;Three things about the format that cost me time, in case they save you some:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the same device parameter can appear three times (template, internal copy, actual&lt;br/&gt;
  configuration) — the &lt;strong&gt;last&lt;/strong&gt; occurrence is the one in effect;&lt;/li&gt;
&lt;li&gt;the enum value of a parameter is not in the parameter itself, it is one level down&lt;br/&gt;
  in &lt;code&gt;BaseType/Value&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;a channel counts as used when a variable is bound to &lt;code&gt;SensorValueN.SensorValue&lt;/code&gt; —&lt;br/&gt;
&lt;code&gt;InputStatus&lt;/code&gt; is a bad indicator, people deliberately bind it on spare inputs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the question. &lt;strong&gt;What else would you check automatically, given both the code and the&lt;br/&gt;
device tree?&lt;/strong&gt; I am collecting rules from sites, not from style guides, and the&lt;br/&gt;
configuration side feels largely unexplored.&lt;/p&gt;
&lt;p&gt;For what it is worth, the checker I use for this is free and runs offline (single exe,&lt;br/&gt;
no install, nothing uploaded anywhere): &lt;a href="https://github.com/caspershes/plc-lint" rel="nofollow"&gt;https://github.com/caspershes/plc-lint&lt;/a&gt; — 43 rules&lt;br/&gt;
at the moment, reads &lt;code&gt;.export&lt;/code&gt; and PLCopenXML. Happy to add rules people here suggest.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Hilscher cards CoDeSys Control RTE</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/3e90d1016a/?limit=25#80d4" rel="alternate"/><published>2026-10-23T07:50:29.700000Z</published><updated>2026-10-23T07:50:29.700000Z</updated><author><name>dmb-fan</name><uri>https://forge.codesys.com/u/dmb-fan/</uri></author><id>https://forge.codesys.coma3b236425a5e4f6bbcc0008674e887381ec79d2e</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;You have to know this (and the crap help site don't tell you):&lt;br/&gt;
- Changes in CODESYSControl_User.cfg, not in CODESYSControl.cfg (crash of PLC/Win possible)&lt;br/&gt;
- Redundancy is important for Profibus, also if you don't use it because the libarys depending on it &lt;br/&gt;
- The no. after the device is the slot numer for PLC device config  &lt;/p&gt;
&lt;p&gt;&lt;span&gt;[ComponentManager]&lt;/span&gt;&lt;br/&gt;
Component.1=CmpDrvSchedulerAMP&lt;br/&gt;
Component.2=CmpCodeMeter&lt;br/&gt;
Component.3=CmpHilscherCIFX&lt;br/&gt;
Component.4=CmpNetXCanDlDrv   ; this is not in help, but thats makes the internal driver load &lt;br/&gt;
Component.5=CmpRedundancy&lt;br/&gt;
Component.6=CmpRedundancyConnectionIP&lt;/p&gt;
&lt;p&gt;&lt;span&gt;[CmpHilscherCIFX]&lt;/span&gt;&lt;br/&gt;
TraceLevel=0xFFFFFFFF&lt;br/&gt;
InterruptMode=0&lt;br/&gt;
DMAMode=1&lt;br/&gt;
;DynamicFirmware=1&lt;br/&gt;
BootloaderFile=$Firmware$/HilscherCIFX/Firmware/NETX100-BSL.bin &lt;br/&gt;
FirmwareFilePath=$Firmware$/HilscherCIFX/Firmware&lt;br/&gt;
;non-dynamic declaration of FW-files:&lt;br/&gt;
; 100 !!! CIFIX50 cards but files called 100 !!! Device.0.BootloaderFilePath=$Firmware$\HilscherCIFX\Firmware\NETX100-BSL.bin &lt;br/&gt;
Device.0.Channel.0.FirmwareFile=$Firmware$\HilscherCIFX\Firmware\cifxcom.nxf&lt;br/&gt;
Device.1.BootloaderFilePath=$Firmware$\HilscherCIFX\Firmware\NETX100-BSL.bin &lt;br/&gt;
Device.1.Channel.0.FirmwareFile=$Firmware$\HilscherCIFX\Firmware\cifxdpm.nxf&lt;/p&gt;
&lt;p&gt;;;;; And good luck, you will need it !  ;;;;&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Hilscher cards CoDeSys Control RTE</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/3e90d1016a/?limit=25#a36f" rel="alternate"/><published>2026-10-22T13:37:08.896000Z</published><updated>2026-10-22T13:37:08.896000Z</updated><author><name>dmb-fan</name><uri>https://forge.codesys.com/u/dmb-fan/</uri></author><id>https://forge.codesys.com28fbfbfcbbd64db08680ea55496ad62907cc73ef</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;the information "license completly by Codesys" is WRONG.&lt;br/&gt;
For DP Master function you need the license from Hilscher, too.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title> Block the program upload</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/48e39dbe3e/?limit=25#a401" rel="alternate"/><published>2026-10-21T14:20:26.042000Z</published><updated>2026-10-21T14:20:26.042000Z</updated><author><name>TimvH</name><uri>https://forge.codesys.com/u/timvh/</uri></author><id>https://forge.codesys.com9704ad7d43507f6122236b401b987fc331543b63</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Don't share your username and password.&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>