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 maldus512 on How to adapt Codesys Control SL to custom board
CODESYS Forge
talk
(Post)
Hello everyone, I have been given the task to develop I/O drivers for a custom made, Linux based board to allow for Codesys applications to run and control the hardware. I have successfully installed Codesys Control SL for ARM/Linux and tested it with a simple demo application. Now I should start interfacing the runtime to the actual hardware; I should be able to interact with 2 RS485 serial ports, a few GPIOs and an I2C port, all of which already have the corresponding /dev/ interface in the Linux system. I am having trouble understanding how it should be approached. I have found sporadic references that fail to lead to a really comprehensive documentation. For example: The store page (https://store.codesys.com/en/codesys-control-for-linux-arm-sl-1.html#options) mentions a "runtime package" that should allow "Integration of existing C code" and "Usage of local I/Os", which seems exactly what I need to interact with custom peripherals. I have found no further reference to Codesys-C interpop. The Codesys Help page for the runtime package has a page on the "Development of Drivers" (https://content.helpme-codesys.com/en/CODESYS%20Control/rtsllinuxrbpdriverdevelopment.html) that suggests to either "Implement a function block" or "Implement I/O drivers". Those in turn lead to this page (https://forge.codesys.com/drv/io-drivers/doc/Generic/) which describes briefly an XML schema to describe new devices; unfortunately, it doesn't mention what to do with such a description (i.e. how does the runtime know about it) or how it is in any way connected to the actual hardware. Could anyone give me some pointers? I should also mention I have no prior experience with Codesys, so maybe I'm missing an obvious answer.
Last updated: 2024-08-09
Post by serwis on Dynamic target position tracking
CODESYS Forge
talk
(Post)
Hello, I am trying to control a servo drive and dynamically set its position. I control the drive via EtherCAT with a cycle time of 500us. I use the MC_MoveAbsolute block for this. The problem is that when using a PID controller, I generate the positions I want the drive to move to on an ongoing basis, and I would like the position to be set immediately. The MC_MoveAbsolute block must receive a rising edge to execute, and I would like the movement to be performed without waiting for this edge. I have created a function that generates a rising edge every 1 ms, but I am unable to change this time to 500 Β΅s because the TON function does not support times shorter than 1 ms. Below is the code to call the rising edge: IF Exe = TRUE THEN delay1(IN:=TRUE, PT:=T#1MS); IF delay1.Q = TRUE THEN Exe := FALSE; delay1(IN:=FALSE); END_IF END_IF IF Exe = FALSE THEN delay(IN:=TRUE, PT:=T#1MS); IF delay.Q = TRUE THEN Exe := TRUE; delay(IN:=FALSE); END_IF END_IF END_IF Here is the code for calling the MC_MoveAbsolute function: MoveDegree( Axis:= Tilt, Execute:= Exe, Position:= position_target - (base_angle_real * feedforward_turn), Velocity:= vel, Acceleration:= acc, Deceleration:= dec, Jerk:= jerk, Direction:= MC_DIRECTION.shortest, BufferMode:= MC_BUFFER_MODE.Aborting, Done=> , Busy=> , Active=> , CommandAborted=> , Error=> , ErrorID=> ); I realize that there are probably better methods for performing this type of task. How can I implement motion with a dynamically changing setpoint? THANKS
Last updated: 2025-09-05
Post by ricola on codesys sp20 opcua not working
CODESYS Forge
talk
(Post)
Hi, same pb for me ! did you find a solution ? (I'm working on 2 raspberry pi ) The same project compiled for 4.8.0.0 runtime with CodeSys 3.5SP20 is working fine on one target, and on the other one, my UAexpert receives the same "BadIdentityTokenInvalid" and none is working on 4.11.0.0 either ... anybody ?
Last updated: 2024-08-11
Post by winki on Scan Network on gateway created with Control Sl
CODESYS Forge
talk
(Post)
Hello, I am new on CODESYS environement. I am used to BECKHOFF env. I would like to use codesys on debian distribution. I followed this tutorial : https://www.youtube.com/watch?v=TVF0LV279_4 But I am stuck on selected the device. I do not understand, everything is running correctly Someone have an idea ? Loic
Last updated: 2024-10-16
Post by tyronnosaurus on SysLibMem.lib Where To Download?
CODESYS Forge
talk
(Post)
It should come by default on a normal install of Codesys 2.3, but it's a bit hidden: Like for any other library, go to Resources > library Manager > Right click on list of libraries > Additional library. On the browser that opens, instead of looking in the default folder, use the dropdown menu at the bottom to change the folder (SysLibMem should be on the 3rd folder).
Last updated: 2024-11-11
Post by nano on Map in Codesys
CODESYS Forge
talk
(Post)
There are several versions, u can use an recipt, shm, perstance variables, persistsnce manager. all these ways has some pro's and con's and some of them depending on preparation of the controller byself. others depending on your functionalies and dependencies on project. for all of these ways, you can find the informations on the onlinehelp or from controller-oem
Last updated: 2024-04-04
Post by walkercope on Ethercat bus on Beckhoff CX with Codesys for Linux
CODESYS Forge
talk
(Post)
Has anyone figured out a way to use the ethercat bus on a beckhoff CX using codesys running on linux? Using ethercat on the native NICs works fine but I get a "packet could not be sent" error when trying to scan the ethercat bus device. Errors and hardware in attached image.
Last updated: 2024-05-13
Post by garrian on How to write multiple coils (Modbus FC15)
CODESYS Forge
talk
(Post)
Thanks for your reply. I belive it is contiguous, I'm writing to adress 0 to 4. Or, do you mean something else? Well, something is happening. If I on the client set adress 1,2,3 to true, only 1 is set to true on the server side. On the client side, the data is array of word. But on the server side, the coils are array of bool. Holding register is array of word on server side. Can this be a problem? Attached screenshot of how it looks at the server side.
Last updated: 2024-11-17
Post by dogulas on Removing a symbol from the IEC Symbols Editor grid
CODESYS Forge
talk
(Post)
In the CODESYS IDE I have several symbols defined and I have IEC Symbol Publishing installed. On the IEC Symbol Publishing window and under the IEC Symbols Editor tab, I have dragged symbols from the tree on the left to the grid on the right. All this works fine. Now I want to remove one of the symbols from the grid on the right and I cannot see any way to do this. How can I remove a symbol from the grid on the right once I've added it?
Last updated: 2025-02-07
Post by jeroenaero on Autostart Targetvisualization 4.16.0.0 doesn't work on Linux device
CODESYS Forge
talk
(Post)
Hi, How can we configure autostart of TargetVisualization on the remote device? The device is a Raspberry PI CM4 with PIXEL Desktop on display. I installed Targetvisu for Linux SL 4.16.0.0 on it. After each restart of the Raspberry PI CM4, we have to start Targetvisu fot Linux SL manually. i tried the step on this page: https://content.helpme-codesys.com/en/CODESYS%20Control/_rtsl_target_visu_for_linux.html but i don't get it working
Last updated: 2025-07-24
Post by rabaggett on No Visu on RasPi
CODESYS Forge
talk
(Post)
Hello, I have been having trouble getting a visualization to show up on the RasPi. I have previously used both WAGO touchscreen and Windows ControlWin and had no trouble. The visu does not show on the Raspi screen on start of the program and attempts to view in a browser both on the Raspi (Chromium) and from my laptop (Brave,Chrome,Firefox) running Codesys development fail. The visu shows correctly in Codesys development when online. (Win 11) The control code that is active is operating correctly. Raspi Codesys runtime is licensed. What am I missing? Thanks!
Last updated: 2024-06-20
Post by ppanchal on Add a dynamic text on One Visualization from another
CODESYS Forge
talk
(Post)
I've created a TitleBar Visualization in which I have "Logo" on the Left corner, "Screen Name" in the center and Time/ date on the right corner. I've also created a 'Menu" visualization that slides out from left to right. I have TitleBar and Menu Visualizations in the MainScreen (3rd Visualization). I want to have "Screen Name" automatically updated on TitleBar Visualization based on Menu item selected from the "Menu" visualization. Can anyone advise how can I achive this? TIA
Last updated: 2025-11-18
Post by imdatatas on MC_CamIn did not work properly with SMC_FreeEncoder on SoftMotion 4.17.0.0
CODESYS Forge
talk
(Post)
Hello, I am facing a problem with the new Softmotion 4.17.0.0 version. Has anyone encountered a similar problem, what is the solution? I would be happy if you could share it. Problem description: -- "SMC_FreeEncoder" encoder axis is the master, -- The motor of the servo driver on the EtherCAT bus is the slave axis. -- When the MC_CamIn block executed, the InSync output is activated. However, although the master encoder axis position value changes, there is no movement in the slave servo axis! Test steps: 1-) EtherCAT servo axis installed, configured and motion test was performed with MC_Jog. No problem. 2-) Softmotion general axis pool > SMC_FreeEncoder was added and pulse amount configuration was performed. No problem. 3-) Incremental encoder actual count value was transferred to the "SMC_FreeEncoder.diEncoderPosition" variable as DINT under the ethercat task in every cycle and the encoder axis position value was observed. No problem. 4-) A simple CAM table with a 1:1 ratio was created under the project tree. (For example: Simply, when the encoder rotates 1 turn, the motor will rotate 1 turn.) 5-) The SMC_FreeEncoder axis enabled with MC_Power and brought to the StandStill state. 6-) The MC_CamTableSelect block was run with default input values ββ(all absolute) and only the Cam table name was specified. The Done output was seen successfully. No problem. 7-) The MC_CamIn block was activated with default input values ββ(absolute) and only the master encoder axis name, slave servo axis name, CamTableID input pins was specified and then "Execute" input set to TRUE. 8-) The InSync output information of the MC_CamIn block observed as TRUE. However, although the encoder axis value changed, the position value of the slave axis did not change at all, it did not move. It always remained at 0.0mm. 9-) When I repeated the same steps above, only changing the master axis to SM_Drive_Virtual instead of FreeEncoder and gave movement to the virtual axis, this time the slave axis moved successfully. However, when the same steps and operations are performed with the same IDE just downgrade SoftMotion version from 4.17.0.0 to 4.10.0.0, everything works normally and without problems as expected in MC_CamIn block with FreeEncoder master. (By the way, The used IDE version is Codesys V3.5 SP20patch3.) Best Regards Imdat
Last updated: 2024-11-11
Post by vincentger on Raspberry Pi Control SL MC - Restoring License not working anymore!
CODESYS Forge
talk
(Post)
Running into the same problem restoring a Runtime 4.4.0.0 device on a now 4.8.0.0 device.
Last updated: 2023-08-21
Post by eschwellinger on Problems connecting to Codesys 4.9.0.0 runtime on my Wago PFC200
CODESYS Forge
talk
(Post)
I've send out a workaround for this.. Best Regards Edwin
Last updated: 2023-08-26
Post by martinlithlith on CODESYS Control for Raspberry Pi SL on Raspberry Pi 4b
CODESYS Forge
talk
(Post)
Hi! Thanks for your reply! I'll have a go then!
Last updated: 2023-09-06
Post by eschwellinger on EtherCat Master cannot open network adaptor on Win10x64 target
CODESYS Forge
talk
(Post)
you need to have either Winpcap (versions < CODESYS 3.5.19.0) or Npcap installed
Last updated: 2023-09-20
Post by eschwellinger on Official MQTT-Client: MAX_RECEIVE_BUFFER_SIZE_EXCEEDED
CODESYS Forge
talk
(Post)
we need plclog cat /tmp/codesyscontrol.log or cat /var/codesys/codesyscontrol.log depend on which runtime version you use for the error situation
Last updated: 2023-09-26
Post by simond on The required device description is not installed..
CODESYS Forge
talk
(Post)
I only get this error on the second instance of the J1939 Manager!
Last updated: 2023-10-03
Post by eschwellinger on Delete PLC Log
CODESYS Forge
talk
(Post)
logger is a ringbuffer - means depends on your settings - how fast the files will be overwritten - but this should never lead to PLC hangs
Last updated: 2023-10-16
Post by mabac on Unable to load boot application on ARMv7 device restart
CODESYS Forge
talk
(Post)
You may just need to create a boot application: https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_creating_a_boot_application.html
Last updated: 2023-11-30
Post by snhatton on Saving variable values on power cycle (RevPi Connect)
CODESYS Forge
talk
(Post)
Have you tried using the persistence manager which uses the file system of the controller to store persistent variables?
Last updated: 2023-12-04
Post by hansdampf on Windows on ARM / Microsoft Surface
CODESYS Forge
talk
(Post)
Hallo, kann mir jemand sagen, ob CodeSys auf Lenovo Yoga Slim lΓ€uft? Also die mit dem Snapdragon Elite Prozessor?
Last updated: 2024-07-03
Post by wollvieh on Cannot Save CSV File on Windows Computer Using CODESYS and Control Win
CODESYS Forge
talk
(Post)
https://forge.codesys.com/forge/talk/Runtime/thread/a113f7c93b/#5938
Last updated: 2024-07-04
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.