Post by ewi04 on How to upload application file to remote controller (offline) ?
CODESYS Forge
talk
(Post)
Thank you very much for your time and replay! Sounds like a good idea. Unfortunately, I have no other option to run the code from the running plc. So, I can’t stop any services. If anyone has the same problem, I've gotten a little closer to understanding it: Sometimes the copied files are empty after the restart. The update code checks if there are any empty files. Before I turn off the device, everything is okay. But after starting, some files are suddenly empty and that cause the problems. I don't know why this happens.
Last updated: 2024-02-16
Post by sumit on Not able to see input data coming from eip adapter on codesys
CODESYS Forge
talk
(Post)
dhumphries, I changed the datatype this time from BYTE to USINT (because that's what my adapter is sending: array of uint8_t). The text "New Help String" you saw in previous screenshots is just the description of the input/s (it can be anything). I also looked into the logs (see attached) for that ! sign next to the device, I found that connection is being timeout. I tried some suggestions from online such as increase the RPI but still got connection timeout issue, also by changing the datatype, I still don't see incoming data from the adapter, although its visible on wireshark. thanks,
Last updated: 2024-03-07
Post by phoward131 on Text List Fallback Value
CODESYS Forge
talk
(Post)
I am relatively new to Codesys and I'm trying to develop an HMI that displays what mode a particular device is in based on an integer value. I am currently using dynamic texts with a text list which works fine but I am looking for a way to display a particular string (ie 'Unknown') when the index doesn't match any of of the indices in the text list. I can enter 'Unknown' in the text property of the text field element which works as expected but it displays the single quotes on the visualization. How can I escape these quotes to simply display the word Unknown? Thanks!
Last updated: 2024-03-22
Post by albzen on EtherCat Slaves diagnosis
CODESYS Forge
talk
(Post)
Hello everybody, I'm working on a RunTime Plc (Codesys 3.5.16/18.20) connected to an EtherCat bus with many devices. The bus has some communication fault but I don't know how understand which is the device or the cable that has the trouble. To understand the cause of the problem I would like to read the WKC (Working counter) of the devices (0x0300...0x030C), how is explained in EtherCat documents, but it seems that the read of the counter is disabled. Attached there is an extract of the Ethercat document. Can anyone give me some advice about how and with function can I read it. Thank you in advance!
Last updated: 2024-03-29
Post by albzen on EtherCat Slaves diagnosis
CODESYS Forge
talk
(Post)
Hello everybody, I'm working on a RunTime Plc (Codesys 3.5.16/18.20) connected to an EtherCat bus with many devices. The bus has some communication fault but I don't know how understand which is the device or the cable that has the trouble. To understand the cause of the problem I would like to read the WKC (Working counter) of the devices (0x0300...0x030C), how is explained in EtherCat documents, but it seems that the read of the counter is disabled. Attached there is an extract of the Ethercat document. Can anyone give me some advice about how and with function can I read it. Thank you in advance!
Last updated: 2024-03-29
Post by pethun on Upgrade from codesys 3.5.19 to 3.5.20
CODESYS Forge
talk
(Post)
Hi We upgraded our ptoject from 3.5.19 to 3.5.20 but we get an error message in the latest version. We made our own trend function and its related to this we get error message: Trend_Menu Device: PLC Logic: Application: C0032: Cannot convert type 'RTS_SYSTIMEDATE(systimertc, 3.5.20.0 (system))' to type 'RTS_SYSTIMEDATE(systimertc, 3.5.17.0 (system))' The variables are defined as follow: start : SysTimeRtc.SYSTIMEDATE; end : SysTimeRtc.SYSTIMEDATE; The code that creates the error is the variable start and end IF xAssign THEN xAssign := FALSE; xPanEnable := FALSE; xZoomEnable := FALSE; drs.liFrom := VisuTrendStorageAccess.TrendStorageConvertToTimestamp(start, 0 (us)); drs.liTo := VisuTrendStorageAccess.TrendStorageConvertToTimestamp(end, 0 (us)); drs.m_itfDateRangeSelectorClient.SetCurrentRange(drs.liFrom, drs.liTo); END_IF I cant understand really what the error message means and what can be the cause of the error? It compiles fine in dthe older codesys 3.5.19. If anyone has some experience of this please help us out? We must upgrade due to the new licenses. Thanks
Last updated: 2024-04-20
Post by pethun on Upgrade from codesys 3.5.19 to 3.5.20
CODESYS Forge
talk
(Post)
Hi We upgraded our ptoject from 3.5.19 to 3.5.20 but we get an error message in the latest version. We made our own trend function and its related to this we get error message: Trend_Menu Device: PLC Logic: Application: C0032: Cannot convert type 'RTS_SYSTIMEDATE(systimertc, 3.5.20.0 (system))' to type 'RTS_SYSTIMEDATE(systimertc, 3.5.17.0 (system))' The variables are defined as follow: start : SysTimeRtc.SYSTIMEDATE; end : SysTimeRtc.SYSTIMEDATE; The code that creates the error is the variable start and end IF xAssign THEN xAssign := FALSE; xPanEnable := FALSE; xZoomEnable := FALSE; drs.liFrom := VisuTrendStorageAccess.TrendStorageConvertToTimestamp(start, 0 (us)); drs.liTo := VisuTrendStorageAccess.TrendStorageConvertToTimestamp(end, 0 (us)); drs.m_itfDateRangeSelectorClient.SetCurrentRange(drs.liFrom, drs.liTo); END_IF I cant understand really what the error message means and what can be the cause of the error? It compiles fine in dthe older codesys 3.5.19. If anyone has some experience of this please help us out? We must upgrade due to the new licenses. Thanks
Last updated: 2024-04-20
Post by robpqs on Program from one PLC to other WAGO 750-8204
CODESYS Forge
talk
(Post)
Hello, You use the WAGOUpload tool. You can download it on the download center of WAGO. Make a backup and restore it on the new device. (if can check the remanent data to copy the persistent variables if necessary) You can also use a SD card, go to the WBM copy it the image to the SD card and restart the other controller on the SD card. In the WBM, copy it back to the internal flash. If you contact your local Wago office, they will more than probably help you. There is also a WAGO forum. RP,
Last updated: 2024-05-27
Post by vamsi on How to configure gateway for programming RPi 2B using Codesys
CODESYS Forge
talk
(Post)
I am using a Raspberry Pi 2B. Installed Codesys V3.5.20.1 64-bit and installed 'CODESYS Control for Raspberry PI 4.12.0.0' I am able to install the packages using the 'Update Raspberry Pi' option, but when I try to log into the RPi, in the Device tab it says 'Sacn fail. Please checl that the gateway is running and that its settings are correct'. My setup looks like this. I connected my RPi to my company LAN and also my laptop to company LAN (using HP Docking station). This setup worked when I installed 'CODESYS Control for Raspberry PI', but now I donot know how to configure the gateway. Could anyone please help me in finding what I have to enter in the gateway configuration? Thanks, Vamsi.
Last updated: 2024-07-10
Post by alez on CANopen safety , SRDO error behavior
CODESYS Forge
talk
(Post)
I have a project in which there is a Safety device in CANopen, and the PLC interfaces with it as Master. I would like to understand if it is possible to set the behavior in case one of the SRDOs that I receive from the slave is no longer received. From what I have seen, if the SRDOs are not received, the CANopen safety status becomes "Not in progress" and the mapped variables freeze at the last value detected. I want to understand if it was possible to set the variables connected to the SRDOs to take a default value (e.g. zero) in the event of a CANOpen error during reception.
Last updated: 2024-07-15
Post by peterned on Array to String
CODESYS Forge
talk
(Post)
max. string length in Codesys is 255 chars. It's not possible to cram 20,000 things in a string. If you need to send the data to another device, send the whole data[] array (as byte array, without doing anything to it) and extract the information on the other end. As each struct member has a fixed size (81 bytes, as per you declaration), this will be easy. To save some resources, consider declaring string lengths - e.g. if the max possible length for key is 10 chars, declare it key: STRING(10); and it will occupy 11 bytes instead of 81
Last updated: 2024-07-20
Post by mubeta on Reset problem with CMZ SD/SVM drive
CODESYS Forge
talk
(Post)
In a recent project with SoftMotion 4.15.0.0, where I integrated two SD drives from CMZ (from catalogue EDS and not imported), on CANopen bus, I found that the SoftMotion MC_Reset function does not reset the drive faults. Even if the drive is in fault, either on the device or on the drive at the CoDeSys level, the function does not reset, instead reporting the error code: no error to reset. Finally, I had to connect the reset bit of the ControlWord directly to a tag in my program. Something I never had to do on other drives: Lexium, etc. all reset simply with MC_Reset.
Last updated: 2024-07-24
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 cfam on Codesys Control for PLCnext SL, Bus not running
CODESYS Forge
talk
(Post)
Good day I would appreciate it if you can give me some advice on how to fix my "Bus Not Running Error". I am Using Codesys 3.5 SP20 and Codesys Control PLCnext SL V4.12.0.0. Codesys control was installed on the device and I can log into it but it seems that it does not pick up the PLC or the IO attached (Please see attached Image). The Bus Cycle Task of the AXL F 2152 is set to Main Task and the "Always update Variable" is Enabled on each IO Module. My Main Task interval is set to 100ms and Priority is set to 0. I have tried other options and none seem to work. Your response to this issue will be highly appreciated.
Last updated: 2024-08-12
Post by micik on Python scripting - print whole project tree
CODESYS Forge
talk
(Post)
Hello, I have found a script for printing device tree in Codesys project. This script is available as code snippet as an exmaple for using Python in Codesys. However I feel main documentation is lacking. For example, where can I find that object has "is_device" attribute? Code examples are given here: https://content.helpme-codesys.com/en/CODESYS%20Scripting/_cds_access_cds_func_in_python_scripts.html However, I have a question how to print the whole Project tree and not just devices? Of course I need to remove check: if treeobj.is_device: But simply removing this test condition will not produce what I want. I need to print PLC Logic, Application, ad other nodes in the Project tree. Where to find this documentation?
Last updated: 2024-08-12
Post by cfam on Codesys Control for PLCnext SL, Bus not running
CODESYS Forge
talk
(Post)
Good day I would appreciate it if you can give me some advice on how to fix my "Bus Not Running Error". I am Using Codesys 3.5 SP20 and Codesys Control PLCnext SL V4.12.0.0. Codesys control was installed on the device and I can log into it but it seems that it does not pick up the PLC or the IO attached (Please see attached Image). The Bus Cycle Task of the AXL F 2152 is set to Main Task and the "Always update Variable" is Enabled on each IO Module. My Main Task interval is set to 100ms and Priority is set to 0. I have tried other options and none seem to work. Your response to this issue will be highly appreciated.
Last updated: 2024-08-12
Post by micik on False Notification Application Error with raspberry pi 4
CODESYS Forge
talk
(Post)
Hello, I have just went through all steps shown on Codesys YT channel https://www.youtube.com/watch?v=RPoPscbo3Kc And it works, I have installed PI OS 32 bit and choose Single Core. However, immediattely when I create standard project with Raspberrz pi device, "Application" is underlined, like there is an error, but in reality there are no errors, and I cannot see what are these 3 messages like shown in attachment. Aside for this red underline, everything seems to work fine. How to correct this? Thank you! Update: I have found what errors are, but not sure how to correct them: Identifier 'IoDrvGPIO' not defined Function block 'IoDrvGPIO' must be instantiated to be accessed 'IoDrvGPIO' is no component of 'IoDrvGPIO'
Last updated: 2024-09-03
Post by timvh on Communication between applications on same device/controller/runtime (Win RTE 3.5.20.20)
CODESYS Forge
talk
(Post)
If you have a Windows system (RTE), then why not run the CODESYS HMI as separate controller. This could easily be moved to another PC if required. In the HMI you could also still use the Symbolic Var access as part of the Data Source Manager, although maybe OPC is the preferred way to make it more future proof. Or what about the Remote Target Visu. Then you can reduce the load of the main controller, while still only having to create one application including Visualization. This is now also supported for Linux systems. See: https://content.helpme-codesys.com/en/CODESYS%20Control/_rtsl_target_visu_for_linux.html https://content.helpme-codesys.com/en/CODESYS%20Visualization/_visu_execute_remote_target_visu.html
Last updated: 2024-09-28
Post by pernockham on Linking to IO during runtime with hot swap?
CODESYS Forge
talk
(Post)
I have a project where a single PLC shall control multiple nodes (up to 10 units?) with IO connected through profinet. Ideally each node should be identical however with time I see situations were different setups/configurations will be used. Codesys PLC (GVLs) |Profinet | |--PNIO-node-1--| | | AIO, | | DIO, | | CNT etc. | |--PNIO-node-2--| | | AIO, | | DIO, | | CNT etc. Ideally I think of a configuration through yaml/xml-files (the assignment/linking of the profinet nodes towards GVL-variables in the PLC as well as scaling, channel configration etc.). Would be grateful if someone could suggest library/-ies that can handle the following: - Verify what IO is connected to a device/node. - Hot-swap/assign link for IO towards GVLs, either automatically or through a HMI.
Last updated: 2024-10-11
Post by shafiq-dsc on Beckhoff EK series cannot detect but BK1120 detect
CODESYS Forge
talk
(Post)
Dear Support, I have i950 wants to connect with Beckhoff EtherCAT coupler BK1120. There are 2 GSD files for BK1120. 1. BK1120 without MDP.(EtherCAT ESI Device Description (XML)) 2. BK1120 with MDP. (EtherCAT BKxxx (MDP) configuration files) When connecting the BK1120 with i950, scanned devices detects BK1120 without MDP from ESI No1 above. But the KL1408 & KL2408 not detect because they have ELxxxx IO type. When manually insert BK1120 with MDP, the KL1xx8 is able to add manually also but the error shows and Install Missing Descriptions appears. The questions; 1. Why the error occurs? 2. Can the i950 connect with KLxxxx IO type or not? Regards, Shafiq
Last updated: 2024-10-25
Post by andrax on CodeSys Raspberry pi I2C driver not found
CODESYS Forge
talk
(Post)
Ok, here are the libraries I use. First of all, try to get the ADS1115 to run completely on its own. Without MUX or other sensors. As muxboard I use this one: https://www.digikey.de/de/products/detail/sparkfun-electronics/BOB-16784/12714950?utm_adgroup=&utm_source=google&utm_medium=cpc&utm_campaign=PMax:%20Smart%20Shopping_Product_Zombie%20SKUs&utm_term=&productid=12714950&utm_content=&utm_id=go_cmp-18521752285_adg-_ad-__dev-c_ext-_prd-12714950_sig-Cj0KCQiA88a5BhDPARIsAFj595gkPXWPT8aa-EixL97BDWjO988WDhcx-iHOVbqb_H8CLpHBcwLuJW0aAu1JEALw_wcB&gad_source=1&gclid=Cj0KCQiA88a5BhDPARIsAFj595gkPXWPT8aa-EixL97BDWjO988WDhcx-iHOVbqb_H8CLpHBcwLuJW0aAu1JEALw_wcB All other boards don't work for me either. The terminating resistor is missing Important: Before you install the drivers, remove all other device drivers. My drivers are all located in ‘Raspberry I2C MUX_11_2023’
Last updated: 6 days ago
Post by jackbrady on Function Blocks and arrays of function blocks
CODESYS Forge
talk
(Post)
Hello, I am new to Codesys and PLC programming in general (please go easy ha!) I'm not looking for code to be written for me just some help and pointing in the right direction. I am writing some code to send commands to a relay based on input values (to put it simply). Quite basic stuff. I have wrote a function block that takes a global variable (Open_command:BOOL) and outputs to another global variable (Opened : BOOL). The function block is simulating a device so I'll eventually get the globals from that. I now need to create multiple versions of this function block/ device (lets say 100) but I need each iteration of that function block to reference it's own relevant global variable. I think that the best way of doing this would be to use arrays, although I could be wrong. I am aware that for up to 100 instances I could very well manually assign everything but that seems rather time consuming and I want a fancier way of doing it. Here is a very basic example of what I am looking to do, please note I have not written this in proper code it's just to show what I mean. Global Variables V[0-100] int Open_command [0-100] Bool Opened [0-100] Bool Function Block var input x : BOOL Var output y : BOOL if x then y = TRUE ELSE y = FALSE The input to my function block will be Open_command, output will be Opened Example code. If V[x] > 10 then Open_command [x] = TRUE ELSE Open_command [x] = FALSE (So when V1 goes above 10 I need Open_command1 = TRUE therefore initiating FB1 output. V2 > 10, open_command2 = True > FB2 output V3 > 10, open_command3 = True > FB3 output ... ... ) What I can't seem to figure out is how to tie all this together, I have read through the codesys documentation and if anything it has confused me more! ha. Apologies for the poorly written post but hopefully you understand what I am trying to get at. Thanks, Jack
Last updated: 2024-02-14
Post by alexgooi on OPC-UA and other communication questions
CODESYS Forge
talk
(Post)
Dear forum, I currently have a big question mark above my head, and maybe this forum can shine some light on the situation. I recently updated to Codesys 3.15 SP19 Patch 6. And now I’m trying to setup the OPC-UA server, besides that I’m trying to connect to the controller with the Codesys V3 (Ethernet) protocol. OPC-UA I have installed the correct licenses on my controller (Runtime and communication). I’m able to connect to the controller with an OPC-UA client, and I’m able to browse the tags, so far so good. Therefore I’m assuming that the OPC-UA server is running on the controller. But now the strange part, in the device security settings I have set the communication Policy to BASCI256SHA256 ( I also have tried the other ones) and the communication mode is set to secure if possible (I also have tried all the other ones) (see picture). With these settings I would assume that I would only be able to login with a Basic256SHA256 policy with a client. But the opposite is true, I am able to login using the no policy mode and when I set it to Basic256SHA256 the client (UA-Expert) notes that this policy is not available on the server. I then check the certificates and I noted that there is no certificate for the OPC-UA server, I tried to generate one but it gave the error that the certificate has not been created by the device (See picture). To summarize I have no clue what is going on, and the controller does the opposite of what I would expect. Codesys Ethernet V3 driver I have a HMI connected to the same controller using the Ethernet V3 driver. But this will not connect. I tried all the Protocols (see picture), with and without the username and password enabled. But it will not connect, when I scan the available servers I can see the controller with the port number that I am expecting, so I’m assuming that the Codesys V3 ethernet driver is up on the controller. Does anyone can give me some direction, because the stuff that I tried doesn’t make sense to me. Thank you in advance
Last updated: 2024-04-02
Post by mgabryel on Problems with CAN 2.0 comunication on Wago PLC (Codesys 3.5)
CODESYS Forge
talk
(Post)
Hello, I am trying to program CAN Bus comunication on WAGO PLC (more precisely on WAGO Touch Monitor model TP600). I am using for this purpose library "WagoAppCanLayer2" from Wago company. My IDE for programming this device is CODESYS V3.5 SP19 Patch 2 + (64-bit). My program is written in Structured text using function blocks from previously mentioned library. Here is code of this program: 1) Variables declarations: PROGRAM PLC_PRG VAR oOpenInterface : WagoAppCanLayer2.FbCanL2Open :=( udiBaudrate := 125000 ); xInterfaceIsOpen : BOOL; sInterfaceInfo : STRING; oReceive : WagoAppCanLayer2.FbCanRx29BitFrame :=( xBufferMode := FALSE, wCanId := 16#181 ); xRecv : BOOL; sReceiveInfo : STRING; oSend : WagoAppCanLayer2.FbCanTx29BitFrame :=( dwCanId := 16#100, //was 16#201 xRtrFrame := FALSE ); xSend : BOOL; sSendInfo : STRING; oCanDiag : WagoAppCanLayer2.FbCanErrorInfo; xRst : BOOL; aSendData : ARRAY [1..8] OF BYTE; bSendLen : BYTE; TON_0 : TON; TON_1 : TON; END_VAR 2) Program body: oOpenInterface( xEnable := NOT xInterfaceIsOpen, I_Port := IoConfig_Globals.WAGO_CAN_LAYER2_DEVICE ); sInterfaceInfo := oOpenInterface.oStatus.GetDescription(); xInterfaceIsOpen S= oOpenInterface.xValid AND NOT oOpenInterface.xError; oReceive( xEnable := xInterfaceIsOpen, I_Port := IoConfig_Globals.WAGO_CAN_LAYER2_DEVICE, xRxTrigger := xRecv ); sReceiveInfo := oReceive.oStatus.GetDescription(); IF NOT xRecv THEN IF oReceive.bRxNBytes > 0 THEN oReceive.aRxBuffer[1]; oReceive.aRxBuffer[2]; oReceive.aRxBuffer[3]; oReceive.aRxBuffer[4]; oReceive.aRxBuffer[5]; oReceive.aRxBuffer[6]; oReceive.aRxBuffer[7]; oReceive.aRxBuffer[8]; END_IF xRecv := TRUE; END_IF aSendData[1] := 224; aSendData[2] := 13; aSendData[3] := 14; aSendData[4] := 15; aSendData[5] := 222; aSendData[6] := 13; aSendData[7] := 14; aSendData[8] := 15; bSendLen := 8; TON_0(IN:= NOT TON_1.Q, PT:= T#2S , Q=>xSend, ET=> ); TON_1(IN:= TON_0.Q, PT:= T#2S , Q=>, ET=> ); oSend( xEnable := xInterfaceIsOpen, I_Port := IoConfig_Globals.WAGO_CAN_LAYER2_DEVICE, aTxBuffer := aSendData, bTxNBytes := bSendLen, xTxTrigger := xSend ); sSendInfo := oSend.oStatus.GetDescription(); oCanDiag( xEnable := TRUE, I_Port := IoConfig_Globals.WAGO_CAN_LAYER2_DEVICE, xTriggerResetCounter := xRst, xValid=> , xError=> , oStatus=> , wBusState=> , wBusDiag=> , uiRxOverflowsL2=> , uiTxOverflowsL2=> , uiRxOverflows=> , uiMsgTimeouts=> , uiBusOffs=> , uiBusWarnings=> ); Program first opens comunication on CAN 2 device and then periodically try send one CAN data frame. After starting program CAN 2 interface is properly open. The xSend variable is toggling with period 2s. When program sends data an "Tx overflow" error appears. When I am watching CAN_H line on DSub 9 socket i am not able to see proper CAN frames - see screenshot attached to this message. Could somebody help me determine what is wrong with this program. Best regards
Last updated: 2024-08-02
Post by cdutz on Problems connecting to Codesys 4.9.0.0 runtime on my Wago PFC200
CODESYS Forge
talk
(Post)
Turns out I managed to get a connection to my PLC. It seems that a few weeks ago Wago released something with version 4.3.3(25). So I reset my PLC to Factory-Reset, set it to the 192.168.1.17 IP and changed the IP to the one I wanted with the Wago EthernetSettings tool. Then updated the latest firmware using the WAGOupload tool. Now the PLC came back up without a PLC runtime running, so in the Web-tool I wen't to the "Configuration"/"PLC Runtime" and selected the runtime version "CODESYS V3". I uninstalled all Codesys versions and installed the version from the download package of Wago together with all the packages the bundle provided. After creating a new project I didn't select the old PFC200 runtime, but one of the dozens of new device profiles, that it now listed. With these settings I was then able to connect to my PLC. Now I hope I'll get the existing project that I had ported to this new structure. Sorry for the noise. Chris
Last updated: 2023-08-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
.