I have a device CAADiagDeviceDefault: IoConfig_Globals.Axis_A In our library, we perform introspection of the Etc_SlaveDiag. In that case, we have connectors, and by searching for them by address, I can find them in the IO mapping using the offset and size provided by EtherCAT. However, a Lenze i700 drive, instead of placing the IO mapping in the Etc_SlaveDiag device, places it in a sub-device CAADiagDeviceDefault. So, when I perform introspection, I cannot find the IO correspondences. Yet, in the...
I have found a very interesting solution using: IoConfigTaskMap IoConfigConnectorMap IoConfigChannelMap The first is the list of IO tasks. The second is the connector for each IO module in the IOMap. The third is the individual input or output on the IOMap. One of the properties of the connector is another pointer to a connector, which corresponds with the connector of the EtherCAT slave. Through this information, it is possible to understand to which EtherCAT slave an IO connectormap corresponds....
Thank you for the response! It's a path I had already considered, however, while it has always worked for me on inputs, it doesn't on outputs, because if I enable the option to update all IOs at every scan, the IO tasks overwrite each other. However, I have found something very interesting which I am posting below.
Thank you for the response! It's a path I had already considered, however, while it has always worked for me on inputs, it doesn't on outputs, because if I enable the option to update all IOs at every scan, the IO tasks overwrite each other. However, I have found something very interesting which I am posting below.
Using SDO, I can read the EtherCAT mappings and offsets from various registers like 0x1c12, 0x1c13, etc. When I obtain registers mapped in the PDOs and various offsets, I could technically access directly to the statusword, controlword, etc., if they are mapped. I have noticed that on IoDrvEthercatLib.ETCSlave_Diag I can find pointers to the input and output buffers. However, although the input buffer can be easily read by referring to what has been obtained from the SDOs, it is not possible to write...
This library would be very useful for IPC communications. Using a UDP socket on localhost is unpredictable, as with slightly loaded machines it does not even guarantee packet delivery locally. Using TCP creates a lot of overhead. Message named pipes would be an excellent solution for Windows RTE. On Linux, since the release of the extension package, there is no issue, as it is sufficient to develop a component. However, although now 90% of our clients understand that Linux runtimes are better in...
In Windows I need create shared memory in PC software and connect from CODESYS. If shm is not GLOBAL doesn't work due different users between runtime and PC software. PC software need admin privileges. Name need "Global\\" before key. Very unsafe!!! If CODESYS create shared I cannot find key PC side. In Linux I can create shared memory as standard user, bind in the runtime docker, use keys without any "Global\\". Much more safe!!! If CODESYS create shared you need play with permissions to use app...
In Windows I need create shared memory in PC software and connect from CODESYS. If shm is not GLOBAL doesn't work due different users between runtime and PC software. PC software need admin privileges. Name need "Global\" before key. Very unsafe!!! In Linux I can create shared memory as standard user, bind in the runtime docker, use keys without any "Global\". Much more safe!!!
SOLVED!!! In this imx8 max_cstate=1 in kernel boot parameters is not working! We found a workaround: #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <stdint.h> int main(void) { int fd; uint32_t value = 0; fd = open("/dev/cpu_dma_latency", O_WRONLY); if (fd < 0) { perror("Error opening /dev/cpu_dma_latency"); return 1; } if (write(fd, &value, sizeof(value)) != sizeof(value)) { perror("Error writing to /dev/cpu_dma_latency"); close(fd); return 1; } while (1) { pause(); } } This simple...
We are experiencing serious jitter issues on an ARM64 imx8. Until now, on rpi and beaglebone derivatives, and on Intel, we never encountered jitter issues unless they were already present on the device. In this case, as can be seen from the attached graph, we have excellent maximum latency. The cyclictest on the isolated core dedicated to IEC CODESYS tasks shows a latency of 37Β΅s, with an average of 14Β΅s. Usually, on all other devices, with an RT kernel, with the appropriate parameters to avoid frequency...
Here, a test parser I implemented. It reads a CODESYS export (NOT PlcOpen, standard exports) file and saves it in a folder structure that replicates the project tree. It saves all DUTs and ST files in plain text. All the XML files will allow reconstructing the export for reimporting it into CODESYS in future tests. The objective is to achieve a system that, when integrated into CODESYS, enables generating a simpler Git structure for managing merges while working in a team. It could serve as a starting...
I tested the CODESYS Git integration to evaluate the purchase of the license. I couldn't find a solution for ssh in RSA, but as a valid alternative, I used the Bitbucket application keys, which allowed me to avoid using credentials. However, I gave up because the projects are not exported in plain text, which is useful for at least the ST part, 99.9% of our projects today. I can't rely solely on the tools provided in the development environment. Many times, when working in a team, it's necessary...
Due to the impossibility of accessing the projects (which we have already fully developed in ST) in text-only mode due to the ".project" file storage system, it is impossible to work on the projects with external tools such as VSCode, which now offer excellent support for developer tools based on AI such as Github Copilot. Today, these tools allow us to boost productivity and are becoming increasingly essential to remain competitive. On the PC side, we now delegate over 50% of the more tedious work...
All linux runtimes form 4.0 are released with Extension Package! You can use C/C++ integration. Inside package you can find examples.
It's probably not possible due project storage system! I don't understand project storage system! With medium projects, 60.000 - 300.000 ST lines and 20-30 Devices in different config, everything became very very slow to manage! Also git integration is unusable! For a single staging required me 20 minutes! If we work in team solve conflicts merging via git is not simple and every time possible.
After last update of ubuntu 22.04 codesys no more start! We encounter this error: symbol lookup error: /opt/codesys/lib/libpthread.so.0: undefined symbol: __libc_pthread_init, version GLIBC_PRIVATE
We use shared memory! A Qt Gateway provide shared memory for process, setting ane messages. A Qt remote PLC comunicate with gateway via UDP/TCP/RESTFull. We developed 2 framework, the first in use in many production machines, the second in road to be implemented in new applicaitons. In second framework we made also a QML simplified data mapping. Data excange is made via predefined structs. A tool that extend qmake process dump xml plcopen and phyton scripts to import structs in CODESYS avoiding double...
Here a i5 5th gen. On same PC there are: Runtime with ethercat master Qt/C++ Settings manager, Gateway, logger and recorder/player to provide and store program recordings. Qt/C++ HMI on LxQt Desktop. X2GO remote desktop connected via VPN. OpenVPN Server. MySQL server for programs management and messages management. As you can see, after about 2 hours max jitter is 45Β΅s, but it remain many time under 10Β΅s, there are spikes of 15-20Β΅s in about 10-15 minutes and 30-45Β΅s in about 30 minutes. We have...
I found this problem in many RTE devices. RTE work in kernel space, so some division by 0, some index out of bound in arrays and things like that in IEC tasks, bring sometime in this situations. To find that exceptions I use a runtime Linux SL (Working great in user space) in a kernel RT installed on my PC or in a RPi 4. I connect my PC or RPi to fieldBUS, download the application and test. When error bring me to stack exception, I fix it than I download everything in RTE and I reconnect fieldBUS...
I found this problem in many RTE devices. RTE work in kernel space, so some division by 0, some index out of bound in arrays and things like that in IEC tasks, bring sometime in this situations. To find that exceptions I use a runtime Linux SL (Working great in user space) in a kernel RT installed on my PC or in a RPi 4. I connect my PC or RPi to fieldBUS, download the application and test. When error bring me to stack exception, I fix it than I download everything in RTE and I reconnect fieldBUS...
Also in Debian 10? In many machines using kernel 4.19.xRT Is working good. On medium load we have some spike after many hours but it's remaining <50-100Β΅s depending on machine. Results obtained with LXQT, a heavy Qt/C++ application doing HMI and IoT works, a mysql server and a openVPN service running on other cores. In attached image you can see 65Β΅s max after 2.5 hours. It's a J1900 with medium load.
Also in Debian 10? In many machines using kernel 4.19.xRT Is working good. On medium load we have some spike after many hours but it's remaining <50-100us depending on machine. Results obtained with LXQT, a heavy Qt/C++ application doing HMI and IoT works and a openVPN service running on other cores.
In Linux runtimes >=4.4.x yes! You can use SL Extension Package, It's very easy to use following examples delivered in CODESYS!
In 4.4 is quite easy use SL Extension Package to develop external components. Using it you could develop an external i2c component.
Hi! In latest versions of Codesys Control for linux everything is improved very well! Only a few steps are required to obtain very low jitter on many CPUs. 0 - Use RT Preempt kernel (Debian has a precompiled RT kernel) 1 - DISABLE HYPERTHREADING FROM UEFI Setup/BIOS!!! 2 - In INTEL CPUS change in /etc/default/grub this line: GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=2,3 processor.max_cstate=1 intel_idle.max_cstate=0 acpi_irq_nobalance noirqbalance quiet" isolcpus detach cores 2 and 3 from Linux KERNEL....
Hi! In latest versions of Codesys Control for linux everything is improved very well! Only a few steps are required to obtain very low jitter on many CPUs. 0 - Use RT Preempt kernel (Debian has a precompiled RT kernel) 1 - DISABLE HYPERTHREADING FROM UEFI Setup/BIOS!!! 2 - In INTEL CPUS change in /etc/default/grub this line: GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=2,3 processor.max_cstate=1 intel_idle.max_cstate=0 acpi_irq_nobalance noirqbalance quiet" isolcpus detach cores 2 and 3 from Linux KERNEL....
Hi! In latest versions of Codesys Control for linux everything is improved very well! Only a few steps are required to obtain very low jitter on many CPUs. 0 - Use RT Preempt kernel (Debian has a precompiled RT kernel) 1 - DISABLE HYPERTHREADING FROM BIOS!!! 2 - In INTEL CPUS change in /etc/default/grub this line: GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=2,3 processor.max_cstate=1 intel_idle.max_cstate=0 acpi_irq_nobalance noirqbalance quiet" isolcpus detach cores 2 and 3 from Linux KERNEL. High cores...
Hi! In latest versions of Codesys Control for linux everything is improved very well! Only a few steps are required to obtain very low jitter on many CPUs. 0 - Use RT Preempt kernel (Debian has a precompiled RT kernel) 1 - DISABLE HYPERTHREADING FROM BIOS!!! 2 - In INTEL CPUS change in /etc/default/grub this line: GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=2,3 processor.max_cstate=1 intel_idle.max_cstate=0 acpi_irq_nobalance noirqbalance quiet" isolcpus detach cores 2 and 3 from Linux KERNEL. High cores...
Hi! In latest versions of Codesys Control for linux everything is improved very well! Only a few steps are required to obtain very low jitter on many CPUs. 0 - Use RT Preempt kernel (Debian has a precompiled RT kernel) 1 - DISABLE HYPERTHREADING FROM BIOS!!! 2 - In INTEL CPUS change in /etc/default/grub this line: GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=2,3 processor.max_cstate=1 intel_idle.max_cstate=0 acpi_irq_nobalance noirqbalance quiet" isolcpus detach cores 2 and 3 from Linux KERNEL. High cores...
Hi! In latest versions of Codesys Control for linux everything is improved very well! Only a few steps are required to obtain very low jitter on many CPUs. 0 - Use RT Preempt kernel (Debian has a precompiled RT kernel) 1 - DISABLE HYPERTHREADING FROM BIOS!!! 2 - In INTEL CPUS change in /etc/default/grub this line: GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=2,3 processor.max_cstate=1 intel_idle.max_cstate=0 acpi_irq_nobalance noirqbalance quiet" isolcpus detach cores 2 and 3 from Linux KERNEL. High cores...
MySQL server is on linux or Windows? I think could be a SSL related problem.
We are working on a direct transform. If we use only one EXPT(val, 4) result is similar to pow(val, 4) (NOT EQUAL). Problem in ARM 64 runtime came when we have a very long calculation with 5 EXPT summed and many others calcs in formula. OCTAVE, Matlab and C return same value, but ST using EXPT no with a big error. Why? Replacing EXPT(val, 4) with (val * val * val * val) work like MatLab, OCTAVE and c.
We are working on a direct transform. If we use only one EXPT(val, 4) result is similar to pow(val, 4) (NOT EQUAL). Problem in ARM 64 runtime came when we have a very long calculation with 5 EXPT summed and many others calcs in formula. OCTAVE, Matlab and C return same value, but ST using EXPT no with a big error. Why?
We are working on a direct transform. If we use only one EXPT(val, 4) result is similar to pow(val, 4) (NOT EQUAL). Problem in ARM 64 runtime came when we have a very long calculation with 5 EXPT summed. OCTAVE, Matlab and C return same value, but ST using EXPT no with a big error. Why?
I created a .pro file in QtCreator to simplify cross compilation and component developing for CODESYS Extendion Package SL. This can be used simply replacing TARGET variable to develop and compile inside QtCreator. File must live in source library path, where makefile is created by the SDK. I tested it on direct AMD64 and cross ARM64, in 4.4 ARM 64Bit SL and 4.4.1 Linux SL and it's Working. This is a base version of this file useful to start a new library. I tested it with a C++ wrapper and many...
Also pragma {warning 'some text'} is no more working in my setup. So is no more possible show important TODO information at compile time!
In 3.5.18 there are too many false warnings and errors!!! Warning like in attachment can be ignored, but is a non sense!!!!!!!!!! For example to avoid unreadable UNIONS that make only confusion we use a bits structure: TYPE SimpleAxisControlWord : STRUCT switchOn : BIT; enableVoltage : BIT; quickStop : BIT; enableOperation : BIT; startMove : BIT; free5 : BIT; free6 : BIT; faultReset : BIT; halt : BIT; free9 : BIT; free10 : BIT; free11 : BIT; free12 : BIT; free13 : BIT; free14 : BIT; free15 : BIT;...
Only for test purpose i put a reuturn in NCryptFreeObject after call, this bring in a memory leak, but now installer work, packages are installed, signatures working. So NCRYPT_PERSIST_ONLY_FLAG probability could be managed in a key property avoiding free when this property is set. In 3.5.18 Codesys Installer is needed, so dll should compiled also in 32bit, due this program is released only in 32bit (why in 2022??????). Some problem persists in online. A side comment out off topic... This massive...
Only for test purpose i put a reuturn in NCryptFreeObject after call, this bring in a memory leak, but now installer work, packages are installed, signatures working. So NCRYPT_PERSIST_ONLY_FLAG probability could be managed in a key property avoiding free when this property is set. In 3.5.18 Codesys Installer is needed, so dll should compiled also in 32bit, due this program is released only in 32bit. Some problem persists in online. A side comment out off topic... This massive usage of .net and C#...
Only for test purpose i put a reuturn in NCryptFreeObject after call, this bring in a memory leak, but now installer work, packages are installed, signatures working. So NCRYPT_PERSIST_ONLY_FLAG probability could be managed in a key property avoiding free when this property is set. In 3.5.18 Codesys Installer is needed, so dll should compiled also in 32bit, due this program is released only in 32bit. Some problem persist in online. A side comment out off topic... This massive usage of .net and C#...
Only for test purpose i put a reuturn in NCryptFreeObject after call, this bring in a memory leak, but now installer work, packages are installed, signatures working. So NCRYPT_PERSIST_ONLY_FLAG probability could be managed in a key property avoiding free when this property is set. In 3.5.18 Codesys Installer is needed, so dll should compiled also in 32bit, due this program is released only in 32bit. A side comment out off topic... This massive usage of .net and C# is making development system a...
Only for test purpose i put a reuturn in NCryptFreeObject after call, this bring in a memory leak, but now installer work, packages are installed, signatures working. So NCRYPT_PERSIST_ONLY_FLAG probability could be managed in a key property avoiding free. In 3.5.18 Codesys Installer is needed, so dll should compiled also in 32bit, due this program is released only in 32bit. A side comment out off topic... This massive usage of .net and C# is making development system a little bit too heavy.
Ok! I patched ncrypt.dll! Now signatures are verified!!!!!!! Now more tests are needed! In attachment there are modified files! Now missing of 0x4000000 FLAG managment (i'm not sure), bring randomly to this: 04b4:err:eventlog:ReportEventW L"Application: CODESYS.exe\nFramework Version: v4.0.30319\nDescription: The process was terminated due to an unhandled exception.\nException Info: System.AccessViolationException\n at Microsoft.Win32.SafeHandles.SafeNCryptProviderHandle.NCryptFreeObject(IntPtr)\n...
Ok! I patched ncrypt.dll! Now signatures are verified!!!!!!! Now more tests are needed! In attachment there are modified files!
Hi Ingo! I downloaded install2.sh to see what you are doing. I used 3.5.18 64bits, due a wine transition to 64bits in 7.0. They introduced syswow64 for 32bis compatibility and they started to suggest 64bits usage. 3.5.18 is in zip and not exe file. I extracted msi. I used winetricks to install dotnet472, arial, corefonts, vcrun2019. Aftrer that I dowloaded Edge runtime 2 64 from microsoft, due the one present in prerequisites of 3.5.18 not working. A very important step, for me is call winecfg, select...
Hi Ingo! I downloaded install2.sh to see what you are doing. I used 3.5.18 64bits, due a wine transition to 64bits in 7.0. They introduced syswow64 for 32bis compatibility and they started to suggest 64bits usage. 3.5.18 is in zip and not exe file. I extracted msi. I used winetricks to install dotnet472, aria, corrfonts, vcrun2019. Aftrer that I dowloaded Edge runtime 2 64 from microsoft, due the one present in prerequisites of 3.5.18 not working. A very important step, for me is call winecfg, select...
Hi Ingo! I downloaded install2.sh to see what are you doing. Used 3.5.18 64bits, due a wine transition to 64bits in 7.0. They introduced syswow64 for 32bis compatibility and started to suggest 64bits usage. 3.5.18 is in zip and not exe file. I extracted msi. I used winetricks to install dotnet472, aria, corrfonts, vcrun2019. Aftrer that I dowloaded Edge runtime 2 64 from microsoft, due the one present in prerequisites of 3.5.18 not working. A very important step, for me is call winecfg, select windows10,...
I downloaded install2.sh to see what are you doing. Used 3.5.18 64bits, due a wine transition to 64bits in 7.0. They introduced syswow64 for 32bis compatibility and started to suggest 64bits usage. 3.5.18 is in zip and not exe file. I extracted msi. I used winetricks to install dotnet472, aria, corrfonts, vcrun2019. Aftrer that I dowloaded Edge runtime 2 64 from microsoft, due the one present in prerequisites of 3.5.18 not working. A very important step, for me is call winecfg, select windows10,...
Just tested! Function is called. I only build this single DLL. Some difference on message above: - I configured with -prefix=/opt/wine-devel - I used make install, but install copied in /opt/wine- devel/lib/... and not in /opt/wine-devel/lib64/... so I copied DLL from lib to lib64. - I also modified spec file to declare new funcion, marked as STUB. Function is called by wine, BCryptExportKey is implemented in WINE, but I translated something in a wrong way and this result in an exception in NCryptFreeObject....
Ok! Let's go! 1 - I installed WINE Development 7.7 from repository. 2 - I downloaded 7.7 development source code. 3 - Go in 7.7 source: $ cd src/wine-7.7/ $ configure --enable-win64 $ cd dlls/ncrypt 4 - Edit main.c adding this just before SECURITY_STATUS WINAPI NCryptImportKey SECURITY_STATUS WINAPI NCryptExportKey(NCRYPT_KEY_HANDLE handle, NCRYPT_KEY_HANDLE decrypt_key, const WCHAR *type, NCryptBufferDesc *params, BYTE *data, DWORD datasize, DWORD *pcbResult, DWORD flags) { struct object *object...
My test was made in 7.7 Staging... So... ncrypt is partially implemented, but it's missing CODESYS required API calls.
My test was made in 7.7 Staging... So...
Put all locales to en_US.UTF8, let me install and run CODESYS 3.5.18 in wine. You can see attached image! The problem remain in ncrypt. 047c:fixme:ncrypt:NCryptOpenStorageProvider (000000005F38E318, L"Microsoft Software Key Storage Provider", 0): stub 047c:fixme:ncrypt:NCryptSetProperty flags 0x40000000 not supported This make impossible verify any signature. So is not possible do anything else editing code. Not very useful!
I just tried CODESYS 3.5.18 64 bit. WINEARCH=win64 WINEPREFIX=/home/<myuser>/.wine.codesys wine winecfg (Select Windows 10 as version) winetricks -q dotnet48 (Popup require 4.6.2, but 4.8 is realy required) winetricks --force -q vcrun2019 (2015-2019 in single package) wine CODESYS\ 64\ 3.5.18.0.msi (Extracted from ZIP download) -Deselected gateway due a linux gateway exists; -Deselected runtime due linux runtime exists; Installer work until IPMCLI.exe IPMCLI.exe fail in .net Culture Expetion: 0670:err:eventlog:ReportEventW...
I just tried CODESYS 3.5.18 64 bit. WINEARCH=win64 WINEPREFIX=/home/<myuser>/.wine.codesys wine winecfg (Select Windows 10 as version) winetricks -q dotnet48 (Popup require 4.6.2, but 4.8 is realy required) winetricks --force -q vcrun2019 (2015-2019 in single package) wine CODESYS\ 64\ 3.5.18.0.msi (Extracted from ZIP download) -Deselected gateway due a linux gateway exists; -Deselecting runtime due linux runtime exists; Installer work until IPMCLI.exe IPMCLI.exe fail in .net Culture Expetion: 0670:err:eventlog:ReportEventW...
I just tried CODESYS 3.5.18 64 bit. WINEARCH=win64 WINEPREFIX=/home/<myuser>/.wine.codesys wine winecfg (Select Windows 10 as version) winetricks -q dotnet48 (Popup require 4.6.2, but 4.8 is realy required) winetricks --force -q vcrun2019 (2015-2019 in single package) wine CODESYS\ 64\ 3.5.18.0.msi (Extracted from ZIP download) -Deselected gateway due a linux gateway exists; -Deselecting runtime due linux runtime exists; Installer work until IPMCLI.exe IPMCLI.exe fail il .net Culture Expetion: 0670:err:eventlog:ReportEventW...
I searched again! RPI 2 is supported in debian with linux-image-rt-armmp in 32 bits arch RPI 3 I cannot find info RPI 4 apparently only in 64 bits linux-image-rt-arm64 (Tested by me in debian daily build) and CODESYS for arm at 64 bits
I searched again! RPI 2 is supported in debian with linux-image-rt-armmp in 32 bits arch RPI 3 i cannot find info RPI 4 apparently only in 64 bits linux-image-rt-arm64 (Tested by me in debian daily build) and CODESYS for arm at 64 bits
I just mounted a PI2 image: $ unxz 20220121_raspi_2_bullseye.img.xz $ sudo losetup -Pf 20220121_raspi_2_bullseye.img $ sudo mount /dev/loop24p2 /mnt $ cd /mnt/etc/apt $ cat sources.list deb http://deb.debian.org/debian bullseye main contrib non-free deb http://security.debian.org/debian-security bullseye-security main contrib non-free # Backports are _not_ enabled by default. # Enable them by uncommenting the following line: # deb http://deb.debian.org/debian bullseye-backports main contrib non-free...
https://wiki.debian.org/RaspberryPi4
You could use Debian image. In Debian repo you can find RT PREEMPT precompiled path. Tuning kernel cmdline using CPU pinning and using a fixed pinning on codesys task make possible a jitter <30us on a PI4.
The problem is also in positive direction! 1 - We setted limits with SMC_SetSoftwareLimits after homing is done. 2 - FB return bDone and no errors. 3 - We see in Watch limits are right! 4 - We move in MC_MoveAbsolute to SWLimit. 5 - We fall in SMC_DI_SWLIMITS_EXCEEDED many mm before limit!!!
Sorry all axes have this problem. SoftMotion is V4.6.10
It is usually not our habit to use softmotion and PLCOpen, due our motion implementation. However, a customer asked us for an application with these tools. We came across a strange behavior of the SMC_SetSoftwareLimist FB. In 5 out of 6 instances of our axis it works, in one looking at the set parameters in the watch everything seems ok, positive limit at 1760 and negative limit at -415.5. However when we reach -375.5 we fall into negative limit error. The very strange thing is that all the other...
I tested but it's not working. Also hot enable/disable a slave is not possible. Disable a slave in editor move all adderessing space of next device back so it's not possible hot reenable it.
Is it possible keep multiple master configured in different mode (multiple slave configurations) and turn on only one at application boot? I'm developing a new application, on POU side OOP and polymorphism let me create a runtime configurable modular software, but on device side is hard to find a solution. Mapping on a structure field objects of a slave and use references in software is very useful, but a good solution should be dispose 20-30 master configuration in different hardware to select right...
Raspberry PI4, debian 64bit, Kernel RT stock from debian repo. Runtime SL ARM64. A little tuning in kernel parameters and CPU pinning. Jitter <= 52Β΅s with ethercat on native adapter. I think that on ARM remain a big margin of improvement, 6-7Β΅s should be possible.
Raspberry PI4, debian 64bit, Kernel RT stock from debian repo. Runtime SL ARM64. A little tuning in kernel parameters and CPU pinning. Jitter <= 52Β΅s with ethercat on native adapter. I think that on ARM remain a big margin of improvement.
Raspberry PI4, debian 64bit, Kernel RT stock from debian repo. Runtime SL ARM64. A little tuning in kernel parameters and CPU pinning. Jitter <= 52Β΅s with ethercat on native adapter.
It's only an Example! You can extract the code you need. Included parts are only to integrate shm in our framework. Look at private methods. You can take that methods and modify a little bit.
Shared memory is a right way, but... In Windows RTE you can use QSharedMemory, you must run application as administrator and use only GLOBAL shared memory. Shared memory should instantiated by OS application and not from CODESYS due visibility problems. In Windows not RTE you can use local memory, you can run app as same user of runtime. Shared memory should instantiated by OS application and not from CODESYS due visibility problems. In Linux QSharedMemory has some problem with codesys, you can run...
You could try a run condesys in chroot enviorement. If you add 32bit arch to 64bit OS. 1- dpkg --add-architecture armhf 2- Install minimal required 32bit libs, copy in /opt/codesys/lib/ 3- Copy sh and required 32bit libs in /opt/codesys/bin and lib 4- "mount -o bind ..." /dev /sys /proc /dev/shm to empty folders in /opt/codesys 5- copy /etc codesys files in /opt/codesys/etc 6- copy /var/opt/codesys in /opt/codesys/var/opt/codesys 7- use ldd to check all required libs. 8- chroot /opt/codesys 9- follow...
You could try a run condesys in chroot enviorement. If you add 32bit arch to 64bit OS. 1- dpkg --add-architecture armhf 2- Install minimal required 32bit libs, copy in /opt/codesys/lib/ 3- Copy sh and required 32bit libs in /opt/codesys/bin and lib 4- "mount -o bind ..." /dev /sys /proc /dev/shm to emty folders in /opt/codesys 5- copy /etc codesys files in /opt/codesys/etc 6- copy /var/opt/codesys in /opt/codesys/var/opt/codesys 7- use ldd to check all required libs. 8- chroot /opt/codesys 9- follow...
https://youtu.be/CVHdLKlwfBM This is a lathe blending machine. In video working in 2 axes, but it as 4 axes and 2 separated turrets. We installed this software in many production machines, only one source code make all machine in different configuration workning. Devices are different brands. Same machine work with 2 axes, some other 4 and some other 5. Source code is the same and only one project in all machines. Axes are not at pi/2 radiants, but variable angles. We can use gCode and recording...
https://youtu.be/CVHdLKlwfBM This is a lathe blending machine. In video working in 2 axes, but it as 4 axes and 2 separated turrets. We installed this software in many production machines, only one source code make all machine in different configuration workning. Devices are different brands. Same machine work whit 2 axes, some other 4 and some other 5. Source code is the same and only one project in all machines. Axes are not at pi/2 radiant, but variable angles. We can use gCode and recording track...
https://youtu.be/CVHdLKlwfBM This is a lathe blending machine. In video working in 2 axes, but it as 4 axes and 2 separated turrets. We installed this software in many production machines, only one source code make all machine in different configuration workning. Devices are different brands. Same machine work whit 2 axes, some other 4 and some other 5. Source code is the same and only one project in all machines. Axes are not at pi/2 radiant, but variable angles. We can use gCode and recording track...
https://youtu.be/CVHdLKlwfBM This is a lathe blending machine. In video working in 2 axes, but it as 4 axes and 2 separated turrets. We installed this software in many production machines, only one source code make all machine in different configuration workning. Devices are different brands. Same machine work whit 2 axes, some other 4 and some other 5. Source code is the same and only one project in all machines. Axes are not at pi/2 radiant, but variable angles. We can use gCode and recording track...
https://youtu.be/CVHdLKlwfBM This il a lathe blending machine. In video working in 2 axes, but it as 4 axes and 2 separated turrets. We installed this software in many production machines, only one source code make all machine in different configuration workning. Devices are different brands. Same machine work whit 2 axes, some other 4 and some other 5. Source code is the same and only one project in all machines. Axes are not at pi/2 radiant, but variable angles. We can use gCode and recording track...
https://youtu.be/CVHdLKlwfBM This il a lathe blending machine. In video working in 2 axes, but it as 4 axes and 2 separated turrets. We installed this software in many production machines, only one source code make all machine in different configuration workning. Devices are different brands. Same machine work whit 2 axes, some other 4 and some other 5. Source code is the same and only one project in all machines. Axes are not at pi/2 radiant, but variable angles. We can use gCode and recording track...
We made many prjects not using softmotion. Main work is build an altrnative library. We made it in full OOP paradigm (polimorphic objects make software very recyclable), SoftMotion and PLCOpen are made for auromation thinking people not for true software developers. Modern Runtimes like codesys have a deterministic synced cyclic. This is key feature to make everiting possible. A good knowledge of Mathematical Analisys, linear algebra, OOP paradigm is sufficient. Compliment for your work.
It would appear that PlcHadle.dll can only be used by having the SDK. However, it would be very interesting to be able to use it even without it, as it would open the way to unthinkable levels of integration. Today I go around it with shared memory. In this way we interface a big framework that we developed in Qt through a gateway in shm, however being able to use the PlcHandle would simplify our life a lot.
Ok! I made many tests! I can also install launching .msi file. Tests in 32bit gone all in a wrong way. Codesys installs, but not start. Tests in 64bit are working. Codesys is working, linux gateway is viewed, but remains big problems in cryptographic system. I see a massive usage of ncrypt.dll, and bcrypt.dll. Some function in wine ncrypt.dll is missing so XML, packages and libraries signature validation not working at all! I also try to copy ncrypt.dll from a native Windows10, but after that a new...
I installed 2 packages with PackageManagerCLI.exe, but without encryption working I cannot download missing libraries.
In following attachment you can see residual problems. Signatures validation, not working and XML Ethercat are opened in wrong mode! One of problems is around crypt32 and msasn1! I'm searching to solve deps.
In following attachment you can see residual problems. Signatures validation, not working and XML Ethercat are opened in wrong mode!
There are followed steps: $ sudo -s # dpkg --add-architecture i386 # wget -nc https://dl.winehq.org/wine-builds/winehq.key # apt-key add winehq.key # sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main' # apt-get update # apt-get purge wine* # apt-get install wine-staging # apt-get install msitools # exit $ declare -x WINEARCH="win64" $ declare -x WINEPREFIX="/home/marco/.wine.codesys" $ wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks...
There are followed steps: $ sudo -s # dpkg --add-architecture i386 # wget -nc https://dl.winehq.org/wine-builds/winehq.key # apt-key add winehq.key # sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main' # apt-get update # apt-get purge wine* # apt-get install wine-staging # apt-get install msitools # exit $ declare -x WINEARCH="win64" $ declare -x WINEPREFIX="/home/marco/.wine.codesys" $ wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks...
I just installed 3.5.17.20 under Wine-staging 7.0, on Ubuntu/Linux 20.04. Using installer don't work! I followed step like in Ingo install2.sh. Now I'm launching 64bit version, but some native library is needed for package manager.
Double click on send! Sorry!
Following Ingo and looking into his install2.sh, I installed Codesys 3.5.17.20 at 64bits on Ubuntu / Linux 20.04 with wine-staging 7.0. Unlike the version suggested by Ingo, it requires .NET 4.6.2. Once installed and launched it is very fluid and fast, much more responsive than on any Windows 10 Virtual machine. However some native library is required, otherwise some things don't work. For example crypt32, msacm32, crypt32, msasn and the various msxlm, due is not able to recognize the digital signatures...
Following Ingo and looking into his install2.sh, I installed Codesys 3.5.17.20 at 64bits on Ubuntu / Linux 20.04 with wine-staging 7.0. Unlike the version suggested by Ingo, it requires .NET 4.6.2. Once installed and launched it is very fluid and fast, much more responsive than on any Windows 10 Virtual machine. However some native library is required, otherwise some things don't work. For example crypt32, msacm32, crypt32, msasn and the various msxlm, due is not able to recognize the digital signatures...
LD is dead for me, like jurassic dinosaurs, but it's supported by an existing plugin!
LD is dead for me, like jurassic dinosaurs, but it's supported by an existing plugin!
Buster. I'm still in Buster, Bullseye is too young. Here is my kernel line in i7 using KVM as hypervisor. GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=2,3 processor.max_cstate=1 intel_idle.max_cstate=0 acpi_irq_nobalance noirqbalance console=ttyS0 earlyprintk=ttyS0 quiet nofb loglevel=0 vfio-pci.ids=1002:6987,1002:aae0,8086:9dc8 nofb nomodese intel_iommu=on iommu=1 video=vesafb:off,efifb:off vfio_iommu_type1.allow_unsafe_interrupts=1 kvm.ignore_msrs=1" In BIOS I disabled hyperthreading isolcpus=2,3 turn...
Buster. I'm still in Buster, Bullseye is too young. Here is my kernel line in i7 using KVM as hypervisor. GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=2,3 processor.max_cstate=1 intel_idle.max_cstate=0 acpi_irq_nobalance noirqbalance console=ttyS0 earlyprintk=ttyS0 quiet nofb loglevel=0 vfio-pci.ids=1002:6987,1002:aae0,8086:9dc8 nofb nomodese intel_iommu=on iommu=1 video=vesafb:off,efifb:off vfio_iommu_type1.allow_unsafe_interrupts=1 kvm.ignore_msrs=1" In BIOS I disabled hyperthreading isolcpus=2,3 turn...
Is not very clear what do you want? But a simple event press and release with debounce could be as follow: VAR tmDebounce : TON; oldState : BOOL; END_VAR .... tmDebounce(IN := buttonState <> oldState, PT := T#50ms); IF tmDebounce.Q THEN oldState := buttonState; IF buttonState THEN eventPressFunction(); ELSE eventReleaseFunction(); END_IF END_IF Functions, or if you prefer methods or actions are called only once after debounce time on falling or rising edges.