Post by mondinmr on Why SysPipeWindows is not implemented in RTE?
CODESYS Forge
talk
(Post)
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 every way compared to Windows RTE, especially from the security aspect (Not in kernel space) and the issues with Windows updates, 10% stubbornly insist (sometimes for trivial commercial reasons) on using Windows. Managing IPC with circular buffers in shared memory is quite ugly, or rather really ugly and unaesthetic. In the manuals, I saw the SysPipeWindows libraries, so I decided to test them, but unfortunately, I noticed that they are not implemented for RTE devices. Technically, I could try to open them as regular files, but SysFileOpen returns 16#27 or 16#39 depending on how I set the name (direction of the slashes). Here is the code to create shared memory and named pipes. Shared memory work great, named pipes no! #ifdef Q_OS_WIN32 SECURITY_ATTRIBUTES sa; SECURITY_DESCRIPTOR sd; InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION); SetSecurityDescriptorDacl(&sd, TRUE, NULL, FALSE); sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = &sd; sa.bInheritHandle = FALSE; const wchar_t* name = L"Global\\ShmTest"; HANDLE hMapFile = CreateFileMapping( INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(SharedData), name); if (hMapFile == NULL) { qCritical("Error creating shared memory"); return 1; } data = static_cast<SharedData*>(MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(SharedData))); if (data == NULL) { qCritical("Error mapping shared memory"); return 1; } HANDLE hPipe = CreateNamedPipe( TEXT("\\\\.\\pipe\\MyPipe"), PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 1024 * 1024, 1024 * 1024, NMPWAIT_USE_DEFAULT_WAIT, &sa); if (hPipe == INVALID_HANDLE_VALUE) { qCritical("Error creating named pipe"); return -1; } if (!ConnectNamedPipe(hPipe, NULL)) { qCritical("Error connecting to named pipe"); return -1; } checkPipe(hPipe); #endif
Last updated: 2024-02-02
Post by ofey on EtherCAT fieldbus
CODESYS Forge
talk
(Post)
Hi, everyone! I'm trying to set up a PLC controller and a connection to an EtherCAT slave device in Codesys. I want to create a flexible program that I can upload to multiple controllers with different remote IO connected (same program). On one plant i may have 5 AI-cards and 3 DO-cards, and on another I may have 4 AI-cards and 2 DO-cards. For not needing to maintain several different programs wih different devices defined in the program (one for each set up) I thought that using a remote IO would make it easier having a single program. That way I could refer to different memory addresses instead of predefined slots/channels and IO's, that would give me errors if there was a different IO on the plant than what the program expected. When I tried setting up the etherCAT master, I saw that I had to define the etherCAT slave devices with the different IO'cards for me to be able to refer to the memory addresses in a PRG. Exactly what I was trying to avoid. My setup is something like a program that can handle 16 separate pump controls. In a year maybe 6 plans get deployed, and depending on how large the project is, the number of pumps can vary between 4 and 16. And the managers dont want to have IO's for all 16 pumps on every cabinet, and I dont want to maintain 16 separate projects files in case of updates etc. I thought the best way to tackle this was having a single project that read/write data to the different pump IO's by remote IO (fieldbus ethercat) addresses. And the number of pump controls are activated by an external GUI. If pump 1-6 is activated by the GUI, then the PLC-program tries to read/write input/outputs from predefined addresses for the expected IO's. My test setup is a PFC200 WAGO controller and a EtherCAT fieldbus coupler (750-354) with some IO. I hope I didn't explain this too horrible, and if there is a more easy and elegant solution for this challenge I appreciate a feedback on this.
Last updated: 2024-04-08
Post by eschwellinger on Code Size
CODESYS Forge
talk
(Post)
will start with next relaese on RTE, at the moment not possible.
Last updated: 2023-09-08
Post by eschwellinger on SPI Master not running/MCP3008 Missing driver.
CODESYS Forge
talk
(Post)
SPI enabled on 'sudo raspi-config' reduce _diMaxSpeed
Last updated: 2023-09-12
Post by eschwellinger on FILE_OPERATION_DENIED
CODESYS Forge
talk
(Post)
security related..since SP19 not hardware based
Last updated: 2023-09-26
Post by eschwellinger on USB <-> CAN, CANfox, Component CmpCANFoxDrv NOT loaded
CODESYS Forge
talk
(Post)
mit aktueller Verion muss auch CANfox gehen..
Last updated: 2023-10-13
Post by tehthoams on Library Search not working
CODESYS Forge
talk
(Post)
Also, Codesys 3.5.19.30 64 bit.
Last updated: 2023-10-17
Post by ph0010421 on Codesys ARTI .XML file not creating but working.
CODESYS Forge
talk
(Post)
I'd contact Beijer directly.
Last updated: 2023-10-30
Post by eschwellinger on Persistent variables are not read after initialization
CODESYS Forge
talk
(Post)
which version of the runtime do you use?
Last updated: 2024-09-02
Post by otbeka on CmpCrypto CryptoGenerateHash Not Outputting
CODESYS Forge
talk
(Post)
Still unable to fix this - is anyone able to help?
Last updated: 2024-09-18
Post by eschwellinger on Can't open license manager with raspberry CM4
CODESYS Forge
talk
(Post)
no, but why not staying on Arm SL?
Last updated: 2024-10-16
Post by sharvan on Visu User Management Dialog - Add user does not work
CODESYS Forge
talk
(Post)
I am also getting same issue.
Last updated: 2024-10-17
Post by benmatchless on CODESYS Gateway is not running
CODESYS Forge
talk
(Post)
same issue here, did you find anything?
Last updated: 2024-10-24
Post by jeroenaero on CodeSys Raspberry pi I2C driver not found
CODESYS Forge
talk
(Post)
I included a project archive in the attachments
Last updated: 2024-11-09
Post by andrax on CodeSys Raspberry pi I2C driver not found
CODESYS Forge
talk
(Post)
Are you using a multiplexer? Which one?
Last updated: 2024-11-11
Post by eschwellinger on The application does not exist on "device"
CODESYS Forge
talk
(Post)
please check the plc logger for more details
Last updated: 2024-12-17
Post by alawwirbilal on Codesys for raspberry pi 5 not working exactly
CODESYS Forge
talk
(Post)
Note: this runtime system is used
Last updated: 2025-03-06
Post by liai on an not create Symbol Configuration in Codesys V3.5 SP20 Patch 4
CODESYS Forge
talk
(Post)
Picture
Last updated: 2025-03-08
Post by kjernodhoker on library is not available
CODESYS Forge
talk
(Post)
What can i do?
Last updated: 2025-03-24
Post by kjernodhoker on library is not available
CODESYS Forge
talk
(Post)
now i get this error:
Last updated: 2025-03-24
Post by eschwellinger on Raspberry Pi 5 GPIO not working.
CODESYS Forge
talk
(Post)
3th April with the 4.15.0.0 release
Last updated: 2025-04-01
Post by jackwang on how to add TextList
CODESYS Forge
talk
(Post)
I can not see the png here
Last updated: 2025-05-20
Post by canplum on Codesys 3.5.21 fails to copy file to USB
CODESYS Forge
talk
(Post)
No unfortunately not until now.
Last updated: 2025-05-27
Post by eschwellinger on Two OneWireMaster on one Raspberry PI 5
CODESYS Forge
talk
(Post)
CODESYScontrol.cfg will be overwritten, CODESYSControl_Usr.cfg not.
Last updated: 2025-06-13
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
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.