Post by arnaud on eCockpit - unable to start simulation
CODESYS Forge
talk
(Post)
Hi there! I'm using eCockpit WAGO software to develop HMI's for multiple projects. As I recently starting this, my knowledge on the software is somewhat limited (so maybe my question is a simple one). For most of my projects I can simulate the application and start it to test the code and HMI. However for two projects, I can initiate the "simulation activation" but I cannot start it. Nothing happens when I press start and the visualization shows "The online visualization is waiting for connection. please start the application". - I don't see any errors in the messages - Initially the project are made by a colleague, which moved on. I guess I'm forgetting something, like missing a setting. I appreciate any help I can get. If you need more information to help me out, let me know. Thanks!
Last updated: 2023-08-25
Post by ggarcia94 on CANOPEN SDO configuration
CODESYS Forge
talk
(Post)
Hello, I´m connected to two drives via CANOPEN. The connection seems to be ok. However, I´m not able to get the PDOs to work even tho they are configured as in the manual of the drives. Looking at the SDOs I´ve seen that for each PDO there is a "Disable PDO" SDO that does not exist in the manual or in the EDS file of the drives. This "Disable PDO" signal has the same Index and Subindex as another SDO used to set and enable the COB-ID of the PDO. I´m assuming this is normal but why is Codesys creating a "Disable PDO" SDO for each PDO and could that be the reason the PDOs are not working?
Last updated: 2023-09-25
Post by derpaul on PFC200 Update to 4.9.0.0 - No Connection
CODESYS Forge
talk
(Post)
Hallo Today I decided to perform an Update on my PFC200 but after the Update the Device was not reachable anymore. I tried reseting to factory reset. Software reset and so on, but nothing helps... In my Router I can see it, I cann SSH into the PFC200 but it is not reachable. Then I try to go back to 4.8.0.0 But now I get this error: [INFORMATION] Befehl SSH auf root@192.168.1.17 ausführen: Laufzeitsystem stoppen [FEHLER] Fehlerausgabe: /etc/init.d/codesyscontrol: line 34: /opt/codesys/scripts/init-functions: No such file or directory [INFORMATION] Standardausgabe: /etc/init.d/codesyscontrol: line 34: /opt/codesys/scripts/init-functions: No such file or directory Please help, I can't get this thing working... Regards
Last updated: 2023-09-27
Post by derpaul on PFC200 Update to 4.9.0.0 - No Connection
CODESYS Forge
talk
(Post)
Hallo Today I decided to perform an Update on my PFC200 but after the Update the Device was not reachable anymore. I tried reseting to factory reset. Software reset and so on, but nothing helps... In my Router I can see it, I cann SSH into the PFC200 but it is not reachable. Then I try to go back to 4.8.0.0 But now I get this error: [INFORMATION] Befehl SSH auf root@192.168.1.17 ausführen: Laufzeitsystem stoppen [FEHLER] Fehlerausgabe: /etc/init.d/codesyscontrol: line 34: /opt/codesys/scripts/init-functions: No such file or directory [INFORMATION] Standardausgabe: /etc/init.d/codesyscontrol: line 34: /opt/codesys/scripts/init-functions: No such file or directory Please help, I can't get this thing working... Regards
Last updated: 2023-09-27
Post by ofey on Modbus TCP communication
CODESYS Forge
talk
(Post)
Hi! I tried setting up the PLC I'm working with (Beijer GN-9373) to connect to a modbus master running on a laptop. I have an ethernet connection (via USB-C to ethernet) between the laptop and the controller. I have tried following tutorial on how to set this up. I have added an ethernet device with the IP-address of the PLC. Further I added a ModbusTCP_Slave_Device with default settings. I get the error "Failed to open TCP Port: 1" when I try to go online with the PLC. Earlier I tested the exact same set up with the soft PLC from codesys. I can then read/write values correctly with the Modbus master i have running on the laptop. Hope anybody can help me with this, thanks in advance!
Last updated: 2023-10-06
Post by felipemsgarcia on Edge Gateway online, but PLC is not online
CODESYS Forge
talk
(Post)
Hello, Up until yesterday (2023/11/20) I was able to connect to the PLC remotely with no issues through Edge Gateway. However, today I can see the Edge Gateway online but I can find the PLC even if I do a network scan. Following the same path as janber0206 @ https://forge.codesys.com/forge/talk/automation_server/thread/e78b11d7e9/, I looked into certificates and found that one of the Trusted publisher certificates has expired earlier today (2023/11/21). Please see image. Questions are: Does it affect the connection to the PLC through Edge Gateway? How do I fix it? Thank you very much in advance!
Last updated: 2023-11-21
Post by snhatton on OpC UA server on Raspberry Pi 64 SL runtime
CODESYS Forge
talk
(Post)
Good afternoon, After changing the security settings to: CommunicationPolicy: POLICY_BASICSHA256SHA256 CommunicationMode: ALL Activation: Activated UserAuthentication: ENABLED Then generate a new certificate on the device for the OPC-UA server from Security Agent->Device->OPC UA Server. Restart the runtime using tools->Update Raspberry Pi->Stop->Start for the changes to take effect. It may take a minute for the runtime to start. Initiate the connection from the UA server side. You should see a pop-up asking you to trust the certificate. Click on the button 'Trust Server Certificate'. Next, you should see a certificate in the quarantined folder of the security agent in CODESYS. Click and drag this from quarantined to trusted and then try connecting from UA expert to the device. These steps worked for me and my setup and I hope they can help you!
Last updated: 2023-12-11
Post by dhumphries on Ethernet/IP Issue
CODESYS Forge
talk
(Post)
Make sure the O->T and T->O bytes required by the remote device match the configuration in Codesys. Most of the EDS files I've imported have not worked by default. See the attached images for the connections and assemblies tabs. Note that the connections are in Bytes and the assemblies are in bits, you have to have enough bits to equal the bytes. Either mismatch will give a red/orange triangle. Page 343 of the manual (assuming the STF10-IP is an applied motion microstep driver) has some recommended connection settings, you should be able to confirm the input and output bits somehow, some devices have a web GUI, some require a software tool.
Last updated: 2024-02-03
Post by talpade on WAGO PLC 200 750-8216 Ethernet connection to Codesys 3.5
CODESYS Forge
talk
(Post)
Hello, I have the WAGO PLC 200 750-8210. In addition I have downloaded the "WAGO Devices and Libraries 2.0.4.3" and installed the library into the Codesys v 3.5. I then create a new project on Codesys 3.5 and select the device "750-8216 PFC200 (WAGO)" (which I downloaded from the WAGO library). However when I have connected the ethernet cable from the WAGO device to my computer and on my codesys 3.5 i press "Scan Network" on codesys and it does not detect the device. How can I get it to detect the device? (I have put the ethernet cable from my WAGO to the computer, but it does not show the device).
Last updated: 2024-02-05
Post by ewi04 on How to upload application file to remote controller (offline) ?
CODESYS Forge
talk
(Post)
Hi, I am looking for a good way to update a decice remotely. The devices are distributed worldwide and have normally no connection to the internet. The CODESYS Automation Server can't help here. So I want to update the decices via USB stick. I have written my own code* to update the files that are created with ‘Create boot application’. But sometimes strange things happen: visu elements are present, but are not found the application is no longer registered and therefore no longer starts I have not yet found out why these errors occur. Has anyone had similar problems or found a better way? Is there perhaps a CODESYS library or something else? Many thanks! *the code deletes the directories on the device and copies the new directories from the USB stick while the system is running (goes without saying)
Last updated: 2024-02-05
Post by arundara on OPC UA Server Stops after 5 consecutive disconnections of ethernet port
CODESYS Forge
talk
(Post)
Hello Every one, During testing of OPC UA communication between UA Expert software and the CODESYS SoftPLC on a Linux environment, an observation was made. When the Ethernet cable was disconnected and reconnected with 2-minute intervals, on the 5th attempt, the OPC UA connection failed to establish in UA Expert software. At this juncture, restarting the CODESYS SoftPLC enabled the reestablishment of OPC UA communication. The same result was obtained when testing on a Raspberry Pi SoftPLC. What is the reason behind this phenomenon? and whether there are settings to stop this behavior? Please help. Thanks & Regards.
Last updated: 2024-02-13
Post by riccardo on Web Browser special tools errors
CODESYS Forge
talk
(Post)
Goodmoning everyone, I hope a codesys tecnichian will see this post. I serched on the forum and I found many topic about this tool but very few reaplies. I am tring to use the Web Browser tool, but it doesn't seem to work properly. I put several links in several forms: https://google.com http://google.com/ http://www.google.com http://www.google.com/ http://www.studiojomega.it/ . . . https://192.168.1.101/u-os-app-codesys/application/visualization/webvisu.htm But I obtain always errors; mainly 400 and 404 and in the normal visu this message appears "www.Google.com has refuse the connection". Is the codesys browser able to work as every other browser or has it some limitation? There is some particular precaution to consider when I pass the link to the codesys browser? Thanks in advance, Riccardo
Last updated: 2024-02-29
Post by westcountryewe on Persistence Variables missing and DO NOT retain from Persistence Channel when using Boot Application
CODESYS Forge
talk
(Post)
We've been experiencing an issue through SP18, SP19 and now SP20 where the Persistence Variables do not retain if we upload our program via a Boot Application. If we use the exact same program, and perform a Direct Upload via the Laptop and Ethernet connection, the Persistence Variables work exactly as expected. I have submitted 2 bug support tickets but I haven't had a response back from Codesys. Has anybody experienced the same issues and discovered a workaround? We have a requirement to utilise the Boot Application method because of logistical restrictions of being able to get out to every site, so at the moment it's a bit restriction.
Last updated: 2024-05-15
Post by viksym on Get text from textlist
CODESYS Forge
talk
(Post)
Does anybody know how to get a specific text from a text list within a program. Obviously it works in a visualization, but because I will have an HMI that has it's own system and I will have to send variables to this HMI via an OPC UA connection, I need to be able to get a text into a string. I tried using the VisuElems like this, but it only returns an empty "" and nothing else. IF trig THEN sText := VisuElems.cmpDynamictext.DynamicTextGetDefaultText(ADR(sTextList), ADR(sAlarmID))^; //sText := VisuElems.cmpDynamictext.DynamicTextGetText(ADR(sTextList), ADR(sAlarmID))^; trig := FALSE; END_IF Any help and idea is highly appreciated because I am getting desperate here.
Last updated: 2024-05-31
Post by ppix on Establishing TLS Connection with MQTT Broker using MQTT Client SL Package
CODESYS Forge
talk
(Post)
For anyone confused with the process visit this link (the bottom section about creating a .pfx file) https://content.helpme-codesys.com/en/LibDevSummary/certificate.html#import-of-client-certificates-with-private-key. I solved this problem by creating a .pfx file and importing it into the security store under 'Own Certificates'(must have SP18 or newer to import .pfx). I used a gitbash shell to enter the openssl command that created the .pfx file. Once you import the file, in your TLS context, set your 'sUseCaseName' to be the same as the name listed in the 'Information' column of your imported certificate. This did it for me
Last updated: 2024-06-20
Post by mikek10 on HTTP Client TCP Init Error
CODESYS Forge
talk
(Post)
Hi, I tried posting in the discussion for the HTTP Client example but perhaps that is not monitored? I have been using http client successfully for approximately 12 months, however in recent weeks I have begun to get TCP_INIT_ERROR when attempting to communicate. The only resolution seems to be power cycling and then the connection begins to work again for a time. I am not aware of any changes to code or libraries between working ok and now. Cold reset does not resolve, only power cycle. It seems the error from NBS.TCP_Client is 6002 which I think is invalid_addr However the address is the same when working and not working?
Last updated: 2024-07-04
Post by peterned on Programatically restart Codesys OPC UA server?
CODESYS Forge
talk
(Post)
Hi, I'm using a Festo Codesys PLC (CPX-CEC-C1-V3), which is connected to a HMI panel. Both exchange data via OPC UA. Occasionally, the HMI stops displaying data, and looks as if there is no connection. If the HMI stops, the only way to make it work again is to restart the PLC. Restarting HMI has no effect. When the PLC is restarted, HMI starts working normally again. Is it possible to restart the OPC UA server from PLC code? I hope this will make fixing the HMI possible without a PLC restart. Thanks
Last updated: 2024-07-19
Post by jnoyau on Visualisaion while in simulation
CODESYS Forge
talk
(Post)
Hi all, Im new to Codesys 3.5, and am in the process fo making a visualisation i'd eventually export towards a Wago device. The issue I'm having currently is that when I compile and connect to the simulated program, my simulation won't launch. On the Visualisation tab, all I get is a text message (where previously there was my prepared visualisation) that says "The visualisation awaits a connection. Start the application" One thing to note: I work with Codesys 3.5 in french, so this is a rough translation. And a second: I'm not getting any errors nor warnings about the visualisation tab itself upon compiling Is there a step i'm missing after launching my simulation? Or would it be some really specific issue caused by the way I've set up my program? Thanks, J
Last updated: 2024-07-31
Post by expertplas on No connection to opc server from codesys opc client
CODESYS Forge
talk
(Post)
Hello, we have aproblen to connect our CODESYS OPC Client to the OPC Server. We installed the client according the CODESYS manual. We can browse the server and variables can be linked to the PLC. I created a self signed certificate for the CmpOPCUAClent as described. The server has a cerificate also. I copied the certificates to the trusted zone of server and client. But when it comes to data exchange we get an error message. "Communication error in data source OPC UA Library. Error ID : 7001 German : "Kommunikatinsfehler inder Datenquelle OPC UA -Bibiothek. Es wurde kein genauer Fehler angegeben. Fehler ID : 7001" It semms that there is no cerificate exchange. We are working with CODESYS 3.5 SP19 Patch 5. Can anyone here say something about this error or has an idea for a solution? Thanks.
Last updated: 2024-08-19
Post by dkugler on Webvisu client connection monitoring
CODESYS Forge
talk
(Post)
you can give this code snippet a try. It's extracted and simplyfied from my code: Install VisuElemBase lib if not installed yet. Execute in visu task: VAR pClientData : ARRAY [-1..100] OF POINTER TO VisuElemBase.VisuStructClientData; END_VAR VisuElemBase.g_ClientManager.BeginIteration(); pClientData := VisuElemBase.g_ClientManager.GetNextClient(); WHILE pClientData <> 0 DO pClientData[pClientData^.GlobalData.GlobalClientID] := pClientData; END_WHILE You have to make shure every no longer updated pointers in the array have to be deleted and no longer used by your code! Usage of this pointer access at your own risk :-) Works with SP16. From SP17 and newer there will be warnigs etc. using this solution as I remember. It will be great, if Codesys publishes a example or give a hint how to accesse this client values with the VisuUtil lib or other future-proof way!
Last updated: 2024-09-09
Post by shabroz-gill on Exception when OPCUA datasource disconnects from Server
CODESYS Forge
talk
(Post)
If i loose the network and the opcua data source suddenly looses connection with the server, i get an exception and my application stops working. I am using the latest version of the communication add v4.5.2.0 Is this a known issue? This makes the datasource unusable because it is inevitable that we will loose connectivity at some point, and the datasource crashing everything due to that seems to be a deal breaker. I can provide more details is someone from codesys is reading this. You can recreate is by just shutting off the Opc server after the codesys data source is connected and reading data from it. The codesys app does not crash everytime and sometimes it is able to reconnect without crashing, so you may have to try this a few times to see the exception. Best regards
Last updated: 2024-09-16
Post by acc00 on Redundancy Codesys Runtime, Synchronization
CODESYS Forge
talk
(Post)
Hi, I’m currently testing the Codesys Redundancy application with 2 Raspberry Pi, with the idea is of using in my project 2 Wago PFC200 and 1 Ethercat Master with 2 Remote IO. After I configure the redundancy, and one Pi is Active and the other is Passive, if I disconnect the Ethernet cable of the Active, the Passive become Standalone, which is good, but the problem is the following: -When I recover the Ethernet connection, both stay Standalone. They will NOT Sync until I do it manually in the Codesys environment. How to make the synchronization automatically? -If both Pi/PLC stays Standalone, who is managing the IO? (Ethercat and Serial) I have done a test with an Modbus Slave, where I am sending a counter that increase every second. And I see that when both PLC are standalone, they both keep an active connection with the Slave, and both write values. This does not seem good, since according to this in my project both PLC would try to control the IO at the same time. Note: The Codesys have an option (greyed out, not possible to select) which says “Auto Sync”. What is the purpose, and why I’m not able to select it? I'm using Codesys Control for Rapsberry Pi 64SL Runtime in my test environment (2xRaspberry Pi 4), with the idea of using Codesys Control PFC 200 Runtime in my project (2xWago PFC200 and 1 Ethercat Master with 2x Wago 750-354 Ethercat Fieldbus Coupler). Using the last Codesys 3.5 version (SP19 PAtch 5). I'd appreciate a lot any help on this questions!
Last updated: 2024-01-22
Post by anonymous on Hi, I try to send and receive data using a UDP connection via SysSocket 3.5.17.0. While sending data works fine, I have problems with the receiving part. I am able to capture the received data of client side in wireshark But unable to capture it on the codesys
CODESYS Forge
talk
(Post)
Hi, I try to send and receive data using a UDP connection via SysSocket 3.5.17.0. While sending data works fine, I have problems with the receiving part.I am able to capture the data of client side in wireshark but i am unable to capture it in the codesys. Heres the below part of code of client side. PROGRAM POU_udpclient_program VAR istep : INT := 1;//step variable for state machine xStart: BOOL;// Flag to start the UDP protocol iecSocketId: syssocket_interfaces.RTS_IEC_HANDLE;//socket handle for receiving iecCreateResult: syssocket_interfaces.RTS_IEC_RESULT; ipAddr: syssocket.SOCKADDRESS;//Socket address structure for receiving sIpAddress : STRING := '192.168.0.2'; wPort: WORD:= 12346; iecConnectResult : syssocket_interfaces.RTS_IEC_RESULT;//connect paramters sDataRec : STRING[255];//Buffer for received data xiRecBytes : __XINT;//number of bytes received iecRecResult : syssocket_interfaces.RTS_IEC_RESULT;//receive data parameters iecCloseResult : syssocket_interfaces.RTS_IEC_RESULT; END_VAR syssocket.SysSockInetAddr(sIpAddress,ADR(ipAddr.sin_addr)); ipAddr.sin_family := syssocket.SOCKET_AF_INET; ipAddr.sin_port := syssocket.SysSockHtons(wPort); CASE istep OF 1: //create socket IF xStart THEN iecSocketId:= syssocket.SysSockCreate(syssocket.SOCKET_AF_INET,syssocket.SOCKET_DGRAM,syssocket.SOCKET_IPPROTO_IP,ADR(iecCreateResult)); IF iecSocketId = syssocket_interfaces.RTS_INVALID_HANDLE THEN xStart := FALSE; istep := 1; ELSE istep := 2; END_IF END_IF 2: //connect to socket server using setoption iecConnectResult := syssocket.SysSockSetOption(iecSocketId,syssocket.SOCKET_SOL,syssocket.SOCKET_SO_REUSEADDR,ADR(ipAddr),SIZEOF(ipAddr)); istep := 3; 3: //receive data xiRecBytes := syssocket.SysSockRecvFrom(iecSocketId,ADR(sDataRec),SIZEOF(sDataRec),0,ADR(ipAddr),SIZEOF(ipAddr),ADR(iecRecResult)); istep := 4; 4: //close socket iecCloseResult:= syssocket.SysSockClose(iecSocketId); xStart := FALSE; istep := 1; END_CASE
Last updated: 2024-06-03
Post by ara32 on CODESYS 4 Linux:
CODESYS Forge
talk
(Post)
Hello! I managed to correctly launch CODESYS Developer Studio 3.5.17, almost all functionality works. The only issue remaining is that when connecting to a device and obtaining its public key, the NCryptEncrypt function is called, which is not fully implemented in the DLL source code, resulting in the connection not being established. Currently, the code of this function in the Wine repository looks like this: SECURITY_STATUS WINAPI NCryptEncrypt(NCRYPT_KEY_HANDLE key, BYTE *input, DWORD insize, void *padding, BYTE *output, DWORD outsize, DWORD *result, DWORD flags) { struct object *key_object = (struct object *)key; TRACE("(%#Ix, %p, %lu, %p, %p, %lu, %p, %#lx)\n", key, input, insize, padding, output, outsize, result, flags); if (flags & ~(NCRYPT_NO_PADDING_FLAG | NCRYPT_PAD_OAEP_FLAG | NCRYPT_PAD_PKCS1_FLAG | NCRYPT_SILENT_FLAG)) { FIXME("Flags %lx not supported\n", flags); return NTE_BAD_FLAGS; } if (flags & NCRYPT_NO_PADDING_FLAG || flags & NCRYPT_PAD_OAEP_FLAG) { FIXME("No padding and oaep padding not supported\n"); return NTE_NOT_SUPPORTED; } if (key_object->type != KEY) return NTE_INVALID_HANDLE; return map_ntstatus(BCryptEncrypt(key_object->key.bcrypt_key, input, insize, padding, NULL, 0, output, outsize, result, flags)); } The program crashes due to the NCRYPT_PAD_OAEP_FLAG flag. I'm not proficient in C++, but I attempted to add handling myself, and here's the result: SECURITY_STATUS WINAPI NCryptEncrypt(NCRYPT_KEY_HANDLE key, BYTE *input, DWORD insize, void *padding, BYTE *output, DWORD outsize, DWORD *result, DWORD flags) { struct object *key_object = (struct object *)key; TRACE("(%#Ix, %p, %lu, %p, %p, %lu, %p, %#lx)\n", key, input, insize, padding, output, outsize, result, flags); if (flags & ~(NCRYPT_NO_PADDING_FLAG | NCRYPT_PAD_OAEP_FLAG | NCRYPT_PAD_PKCS1_FLAG | NCRYPT_SILENT_FLAG)) { FIXME("Flags %lx not supported\n", flags); return NTE_BAD_FLAGS; } if (flags & NCRYPT_NO_PADDING_FLAG) { FIXME("No padding not supported\n"); return NTE_NOT_SUPPORTED; } BCRYPT_OAEP_PADDING_INFO oaepInfo = { 0 }; oaepInfo.pszAlgId = BCRYPT_SHA1_ALGORITHM; NTSTATUS status = BCryptEncrypt(key_object->key.bcrypt_key, input, insize, &oaepInfo, NULL, 0, output, outsize, result, flags); if (key_object->type != KEY) return NTE_INVALID_HANDLE; return map_ntstatus(BCryptEncrypt(key_object->key.bcrypt_key, input, insize, padding, NULL, 0, output, outsize, result, flags)); } Now, when calling the connection, it crashes with the error "bcrypt:BCryptEncrypt flags 0x4 not implemented." Can anyone help with enhancing this functionality or at least point me in the right direction?
Last updated: 2024-03-22
Post by george32 on Readable IO names
CODESYS Forge
talk
(Post)
Hello Folks, I have a quite basic understanding of how PLC programming works. However I keep getting stuck on 1 problem I could not get my head around. The problem is as follow: I have a PLC with 60 IO (20 inputs, 40 outputs). Each IO is defined as a function block. Furthermore I have an external IO card connected trough a CanBus connection. This IO card has 4 analog input channels (USINT), 4 digital inputs (Bool) and 4, digital outputs (Bool) Because I have 2 different components which both has data have I made 4 arrays to store the data off every component in one variable. PLC_Input: Array [1..20] of BOOL; PLC_Output: Array [1..40] of BOOL IOCard_Input: Array [1..8] of BOOL IOCard_Output: Array [1..4] of BOOL Because the control and reading of the different in and outputs is done by a TCP connection I want to use some kind of enumeration or struct to give each index a name so that my main would be a little bit more readable instead of all the magic numbers. Also this would make my program more dynamic for the furter in case I need to changes some in the IO nummers. For example: pump is placed on the fysical terminal strip number place 54, which is the 3th output of the IO card in the program: if I am sending a message with value 54 I would like to control IOCard_Output[3]. If there is a solution or methode to get this done, I can eventually do the following in my main program: IOCard_Output[Pump]. I have tried the following: IOCard_Output[Pump - 51] with an enumration but this keeps raising an error I hope some of you could help me further with this problem. In gross lines: I want to couple all the different IO to a more readable name and this readable name should control the right Array index Thanks in advance, George
Last updated: 2024-09-26
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
.