Post by dkugler on Alarm State Icon
CODESYS Forge
talk
(Post)
thank you for pointing me to this "bug"!! I haven't recognized, the bit is reset after the first alarm is gone. I use this only for warnings, so it's not a drama, but was not correct in the past. I solved it now simply stupid by counting up a variable every time an alarm appears and decreasing it if an alarm is gone. The "warning lamp" is activated by checking the counter is > 0 The nice side effect, i'm able to show the number of active alarms in the state line now.
Last updated: 2024-04-24
Post by ndzied2 on Rounding error in simple addition
CODESYS Forge
talk
(Post)
This is a consequence of how computers store floating point numbers. 0.1 cannot be exactly represented in a computer. This is not a CoDeSys thing. Here is a link to a converter to show you the exact value that is represented when you use a REAL data type (which is a 32 bit float). https://baseconvert.com/ieee-754-floating-point If you really need to keep track of 0.1 increments. use INT OR DINT and then add 1 each time and assume that there is one decimal place.
Last updated: 2024-05-24
Post by bitwitch on Einheiten umrechnen, Numpad und Eingabegrenzen
CODESYS Forge
talk
(Post)
Das Codesys-Objekt 'Einheiten umrechnen' wirkt auf timeVar (TIME) z.B. innerhalb eines Visu-Rechtecks und funktionier in den Grundfunktionen einwadfrei. Die Ausgabe der Std. von timeVar läuft. Beispiel: Bei t#3d2h10m wird wunschgemäß 74h (volle Std-Anzahl). Die Grenzüberwachung Max= 10 funktioniert nicht, da die Angabe scheinbar ms erwartet (arbeitet mit 10ms). Irgend wie muss man jetzt codesys davon überzeugen, dass auch für Min und Max die Einheitenumrechnerei wirken soll, wobei die Eingabe der Grenzen in Std erfolen muß. Hat jemad einen TiPPPPPPPPP?
Last updated: 2024-06-14
Post by mubeta on Some 'pathetic' errors in SoftMotion program
CODESYS Forge
talk
(Post)
Hello everyone, I have a very simple program for the process, but it's driving me crazy and I can't see the problems I'm left with: Short topological description: Dual Core Berghof controller with softmotion runtime version 3.5.19.30; Two axes with servodrive on canopen bus, clocked distributed from master; Ethercat I/O node; 2 ms ethercat task, 2 ms canopen bus cycle time; I/O objects of the canopen master and canopen drives connected to the ethercat task cycle; Problem 1: Two separate programs each manage their own axis and drive, with separate state machines. A first axis moves primarily in velocity, except having to position itself absolutely at a predetermined point at the end of the job; the second axis, on the other hand, is a paper unwinder that changes, for each job cycle, from actions in absolute, relative, and cam displacement with the master axis. Well, the state machine of both axes was written in such a way as to call running the useful FB and change it on state change in this way: CASE i_stateMachine OF 0: o_Power(Enable := TRUE, bRegulatorOn := FALSE, bDriveStart := FALSE, Axis := o_PaperUnwinderAxis); o_MoveAbs(Execute := FALSE, Axis := o_PaperUnwinderAxis); o_MoveRel(Execute := FALSE, Axis := o_PaperUnwinderAxis); o_CamSelect(Execute := FALSE, Master := o_MachineAxis, Slave := o_PaperUnwinderAxis, CamTable := cam_PaperUnwinder); o_CamIn(Execute := FALSE, Master := MachineEncoder, Slave := o_PaperUnwinderAxis); o_CamOut(Execute := FALSE, Slave := o_PaperUnwinderAxis); o_SetPosition(Execute := FALSE, Axis := o_PaperUnwinderAxis); IF ... THEN i_StateMachine := 10; END_IF; 10: o_Power( Enable := TRUE, bRegulatorOn := TRUE, bDriveStart := TRUE, Axis := o_PaperUnwinderAxis ); IF o_Power.Status THEN i_StateMachine := 20; END_IF; 20: (* Avanzamento carta *) o_MoveAbs( Execute := TRUE, Position := o_Somewhere, Velocity := 25.0, Acceleration := 3666.7, Deceleration := 3666.7, Jerk := 48000.0, Direction := MC_DIRECTION.positive, Axis := o_PaperUnwinderAxis ); IF o_MoveAbs.Done THEN o_MoveAbs(Execute := FALSE, Axis := o_PaperUnwinderAxis); i_StateMachine := 30; END_IF 30: d_HomingPosition := ...; o_SetPosition( Execute := TRUE, Position := d_HomingPosition, Mode := FALSE, Axis := o_PaperUnwinderAxis ); (* ... *) IF o_SetPosition.Done = TRUE THEN o_SetPosition(Execute := FALSE, Axis := o_PaperUnwinderAxis ); o_LogServer.Append(sMessage := '...', lscClass := LOGSERVER_CLASS.ALWAYS, sdt := o_CommonsMgrData.systime.sdtLocal); i_StateMachine := 40; END_IF; 50: ... The code above is a sketchy example of what I wanted to write. But it gives me a spot problem: in some, the state change results in a drive error, which is unrecoverable except with a reinitialization via SM3_ReinitDrive(). Things are improved a little if in the program I always run the call of all softmotion blocks in this way: o_Power(Axis := o_PaperUnwinderAxis); o_Jog(Axis := o_PaperUnwinderAxis); o_Halt(Axis := o_PaperUnwinderAxis); o_MoveAbs(Axis := o_PaperUnwinderAxis); o_MoveRel(Axis := o_PaperUnwinderAxis); o_CamIn(Master := MachineEncoder, Slave := o_PaperUnwinderAxis); o_CamOut(Slave := o_PaperUnwinderAxis); If I don't execute all the calls of all the motion FBs used, when exchanging machine state often (but not always), the axis goes into error with event id THE_FB_WASNT_CALL... Done a little diagnostics it seems that the FBs return the bDone, before they are completely terminated. I tried doing the machine state exchange not with the bDone bit of the FBs, but with the 'standstill' state of the axis. It didn't seem to change anything. Problem 2: During the use SM3_ReinitDrive() I get the erro in the log: "NetID 0: SDO read error for object 16#607C..." Assuming that the device involved it's one of the two servodrive, (no others device are present in the network), I don't found any object 0x607C in the 'possible object list in/out' of the two drive, and I don't understand where this object can be listed. So any ideas and suggestions regarding these two issues will be very, very welcome. If you need the source project, I am willing to send it.
Last updated: 2024-07-17
Post by acc00 on Main Task cycle too long leading to PLC Fail
CODESYS Forge
talk
(Post)
I have 2 Wago PFC200 PLC, running with Runtime SP19 Patch 5, with the Redundant application. The PLC communicates as Modbus Master with at this moment 15 Modbus Slaves -later there will be 28 in total- (Drives, Power management units,...). These devices are connected in 2 rings (1 ring of Drives, 1 ring of Power Management units), with 2 Managed Moxa Switches being part of the ring. Each PLC is connected to one of these switches. The issue I'm encountering is that the Cycle time of the Active PLC goes very high when I'm closing the Drive ring (simulating an issue on one Cabinet supply, resulting in that one Drive shut down, which can happen on field quite often). As a result of this long cycle, the PLC fails and goes to Exception, and the Passive PLC does not take control of the system. A normal cycle is around 30ms for the Main task, and a few ms for the Ethercat task. When I monitor with Profiler, I see that in this Maximum Cycle, the main Task is only taking 13ms, so I'm not sure where the PLC is hanging for so long. Is the remaining cycle time the Redundant management/sync or something else? Thank you in advance.
Last updated: 2024-03-08
Post by rabaggett on Reading Named Pipes in Linux Is there a better way?
CODESYS Forge
talk
(Post)
I have a Python program that will handle things in my application such as VISA over IP and Telnet control of instruments. I want the main control and HMI in Codesys. My problem is communication between the two. I have looked at several ways to accomplish this, and settled on having the Python program create two named pipes, one to send information to Codesys, and one for Codesys to send information to Python. The information would be packetized with \n for end of packet.. Seems simple. I think the named pipes method should work, but file reading in Codesys using the CAA file library starts to get difficult when the file is never ending, as in this case. Before I spend too much time making something that may be fundamentally flawed I want to ask. Is there a better way? Is there a way to read the file 'one line at a time' which might solve my never ending file problem? Thanks!
Last updated: 2024-05-09
Post by sturmghost on Find visualization elements that require a lot of computing time
CODESYS Forge
talk
(Post)
I found out that the Codesys simulation mode is not good to measure performance. As soon as I upload the code onto the hardware PLC I can see that my visu-task needs around 60 ms to complete. I'm wondering if there is a possibility to find out which visualization/visualization element takes a lot of computing time? Then I would look for ways to decrease the long computing time.
Last updated: 2024-01-22
Post by smartcoco on The text list provided outside the library is not available for visualization controls within the library.
CODESYS Forge
talk
(Post)
I have a project called 'DemoProject' and a library called 'DemoLib'. Create a visual control named "DemoVisu" in the library, with a selection box of type "ComboBoxInteger" in the space. Now 'ComboBoxInteger' requires a 'Text list'. This "Text list" is provided when I call the "DemoVisu" control of the "DemoLib" library in "DemoProject". And this text list is in 'DemoProject'. I found that 'ComboBoxInteger' no longer works at this time. Other visual controls that use text lists also have this issue. I hope there is a good solution to this problem.
Last updated: 2023-10-16
Post by vernon-laurence on EtherCAT fieldbus
CODESYS Forge
talk
(Post)
The simplest way to do this would be to add a bus coupler dedicated to the expansion IO. The EtherCAT network does not fault when modules connected to the expander are not present. In the image below, nothing below the red line is present in the network - with the network working correctly. In your "base" project, simply include all of the possible modules, and then plug them in as you add pumps to the system. I would also highly recommend against the use of direct addressing. There are other methods to accomplish this, including using the "Optional" checkbox for modules and explicitly addressing them. Although, this would require more upfront work to design the network, and some additional work each time modules were added. https://content.helpme-codesys.com/en/CODESYS%20EtherCAT/_ecat_edt_slave_slave.html
Last updated: 2024-04-09
Post by dandyk on Dynamic Images
CODESYS Forge
talk
(Post)
Hello, I have very similar problem, but it seems that your solution does not work for me. I am using TwinCAT XAE Shell v3.1.4024.55 and TwinCAT Runtime. Sorry for writing here on codesys forge, but since I found the only relevant topic here and since TwinCAT is almost the same with CODESYS in many applications, I chose to write here. I simply need to dynamically update image in visualization based on camera trigger (I am doing a machine vision application). Camera triggers an image, my program processes it (applies thresholding, draws contours etc...) and saves the processed image in the runtime location (the same one you were mentioning). This was done successfully. I need to make it work at runtime, while the program is executing and I need to refresh the image in the visualization each time camera triggers a new image and program processes it. When I create image element in the visualization and define the bitmap ID variable as STRING which contains the image ID defined in the image pool, then it displays the image in the image pool, but does not work at runtime, while the program is executing. I also used the Bitmap Version. I declared it in Global variable list as integer with initial value of 0 and wrote the variable in the bitmap version in the image element in visualization. Each time new image is saved to the runtime location, I wrote a program to increment Bitmap Version by 1. It increments and the image does not update in the visualization, unfortunately. I think that bitmap version is working correctly and deletes the cached image as it is supposed to, but the Image Pool does not update the image ID with the new image... the path to the image is always the same... only the actual image changes with the same file name. Image Pool is not dynamic and cannot refresh the image in the path to the actual one at runtime. How can I refresh the image ID in the image pool at runtime? Bitmap version only deletes cached image and reloads the image from the image ID, but the image ID has the same image, because image pool won't update at runtime. Do you know any solution to this problem?
Last updated: 2024-04-06
Post by eschwellinger on Connection to device closed
CODESYS Forge
talk
(Post)
is there a way to check the plclog on Opus A3 by using cmd line under Linux? This log is what you need to check for the disconnection problem
Last updated: 2023-08-24
Post by ragarcia on Error while using UpdateConfiguredIPSettings to change IP address
CODESYS Forge
talk
(Post)
I did check I cannot see any error log. It is when executing the Reconfigure function that I get an error as return from that function.
Last updated: 2024-02-19
Post by karel-bas on Loosing connection to emulation running on Linux
CODESYS Forge
talk
(Post)
Ok. I ran the vm twice until it failed and from log it seems like my OPC UA fails becouse I am not able to get HTTPs certificate ? I dont really see any other reason.
Last updated: 2024-09-20
Post by wbj0t on Raspberry Pi CM4. CoDeSyS files corrupted after hard reset.
CODESYS Forge
talk
(Post)
Hello everyone. Raspberry Pi CM4 after some 1 week of work was hard reset mannualy several times and after these hard resets User Management file was missed (when click login button, enter login/password, error: User Management File missed). Also programm can not open file via SysFile library, but this file exists and size of him is 0 bytes, but must be more any way (I keep some kind of archive via this lib). What happens, how files corrupted? Where do I need try to find this error of the codesys or system whole? In the log files of codesys nothing interesting about this happens. Thanks for reading Is this enough hold PlcLogic and SysFileMap.cfg as reserve copy in another place for restoring the programm? And how automate restoring actions if programm files corrupted?
Last updated: 2024-09-16
Post by aott33 on Webvisu NO load
CODESYS Forge
talk
(Post)
After loading, it seems to be quite responsive. It's just the initial loading that is taking a long time.
Last updated: 2023-09-21
Post by ton on How to create a stopwatch?
CODESYS Forge
talk
(Post)
If you use LTIME() you will be very accurate and be able to have a normal task cycle time.
Last updated: 2023-12-16
Post by naccio on very long time building the relationship table
CODESYS Forge
talk
(Post)
I have the same problem withv codesys 3.5 sp 16 patch 6. Any idea ? Thank you Marco
Last updated: 2024-01-22
Post by aniket-b on "Distributed clocks are not synchronized, Rea time problem on hardware" ?
CODESYS Forge
talk
(Post)
I am getting the same error. does anyone know how to troubleshoot this?
Last updated: 2024-03-04
Post by nano on Display minutes as hours & minutes
CODESYS Forge
talk
(Post)
hey time := INT_TO_TIME(minutes * 1000 * 60); update: forum show the math wrong
Last updated: 2024-05-26
Post by bamir on Calculate Time Between Two Events Using RTC
CODESYS Forge
talk
(Post)
Hi Just wanted to know which library is used to get sys_time
Last updated: 2024-08-14
Post by manuknecht on High Cycle Times for SoftMotion_PlanningTask when using AxisGroup
CODESYS Forge
talk
(Post)
Hello all I am using an AxisGroup with the Gantry2 Kinematics to move a 2D-Gantry system. When creating the AxisGroup, the SoftMotion_PlanningTask is created automatically with a cycle time of 2 ms in my case. I realized that the maximum cycle time of this task can spike to very high values (up to 60 ms) at lower speeds of the motion, leading to synchronization issues and errors on the axes. The same behaviour - though not as drastic - can be observed with virtual axes too. Is this behaviour intended or to be expected? Can the cycle time or type of the SoftMotion_PlanningTask be changed to prevent these errors? Or is there another fix for this issue? I tried changing the cycle type to Freewheeling, which solved the synchronization issues, but caused an error on the AxisGroup after a while, reading SMC_CP_QUEUE_UNDERRUN. Thanks in advance and best regards Manuel
Last updated: 2024-03-07
Post by z870623 on About CPU Loading
CODESYS Forge
talk
(Post)
I am running a runtime environment on an ARM A35 dual-core processor (1.5GHz) and have encountered some issues. The CPU load (both CPU0 and CPU1) occasionally spikes above 50% before returning to normal, and this happens around 2-3 times per minute. At the same time, I’ve noticed that the Max Cycle Time in the Codesys monitoring screen shows much worse performance compared to the A53 (1.2GHz), with nearly double the cycle time. The optimizations I have made so far are as follows: Set the CPU to performance mode. Isolated CPUs: CPU0 is dedicated to running Linux services and the runtime itself, while CPU1 runs the EtherCAT task and the MainTask. Despite CPU1 only running these two tasks, the utilization still increases above 50%, which I find unreasonable. Additionally, I performed tests using cyclictest both without and with the runtime running. The performance is shown in the following image: From the results, I believe the CPU performance should be fine, but I am unsure why the monitoring results are not as expected. The testing outcomes should ideally be as close as possible to the cyclictest results. Does anyone have related solutions to this issue?
Last updated: 2024-10-14
Post by tehthoams on Time will not read 12
CODESYS Forge
talk
(Post)
I know this post is a bit old, but i'm having this same issue: At noon, %t[hh:mm:ss tt] is displaying 00:00:00 PM There is no text variable, just using the default functionality of the visualization for the time display. This is running on an IFM CR1102 display. has anyone solved this?
Last updated: 2024-10-10
Post by mm-sceg on Runtime geht sporadisch in Störung -> RaspiPi4 reagiert nicht mehr
CODESYS Forge
talk
(Post)
Guten Tag, ich hab seit längerem das Problem, dass mein Raspberry Pi4 durch die PLC in Störung geht. Auf dem Raspi läuft eine einfache Software mit OPC UA server, InfluxDB und ein NodeRed-Server. (Und MQTT-Server) Daten werden von der PLC über OPC-UA an NodeRed übergeben. Es kann sein, dass der Raspi 2 Wochen läuft, dann geht die PLC in Stopp. Manchmal nur 2-3 Tage. Ein Neustart über Spannung aus & wieder an schafft Abhilfe. NodeRed wirft extrem viele Fehlermeldungen in kurzer Zeit. Wenn die PLC in Störung ist, kann man sich nicht mal mehr über SSH beim Raspi einloggen. Der Raspi ist aktiv gekühlt und im Normalbetrieb nicht überlastet. Ich hab einige logfiles mit vielen Einträgen die mir nichts sagen, eventuell hat hier jemand eine Idee wie ich dem Problem Herr werden kann :) Der letzte Datenbankeintrag von der SPS war am 11.11.2023 um 5:55:50 Uhr. D.h. danach muss die SPS gestorben sein. Siehe Raspi-Log im Anhang. Das LogFile von Codesys startet leider erst um 11 Uhr, weshalb weiß ich leider nicht. Vielen Dank schonmal
Last updated: 2023-11-11
Post by mani-i4point0 on Issue with WebVisu on Raspberry PI
CODESYS Forge
talk
(Post)
Hi, I am running Codesys Runtime by purchasing 'Codesys control for raspberry pi MC SL', I am trying to use the Variables from my GVL's. Few of the variables used as a Pushbutton form the Visualization. These 'BOOL' Variable getting unlatched automatically even though there is no write function in the Overall project. All of them are 'Read' functions, at the same time few other BOOL variable behaviors are seems to be fine. I have tried, clean all and download, serval time restarted the hardware. Happy to share any any information. Your input to resolve this issue would be highly appriciated. Version Details: codesyscontrol 4.8.0.0, armhf codesyscontrol based on SDK 3.5.19.0
Last updated: 2024-03-20
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
.