Hi, a few questions that you can check regarding your kinematics: * Does your kinematics FB implement the interface ISMKinematicWithInfo2? * Does AxesToCartesian(a, out f) -> CartesianToAxes(f, out aCompare) result in a=aCompare for random positions a? * Do you return a valid rotation matrix f.mR (SMC_Matrix3) in AxesToCartesian()?
Hi, you have to define how many increments of the drive correspond to one unit in your application. This is done in the Scaling/Mapping Tab in the drive editor.
Hi, you can call the decoder function block in a loop and/or decrease the task cycle interval of Task_PATH.
Hi, you can call the decoder function block in a loop and/or increase the task cycle interval of Task_PATH.
Hi, you could calculate the position/dynamics of the slave axis yourself and use one of the function blocks SMC_FollowPosition/SMC_FollowSetValues to move the slave axis. https://content.helpme-codesys.com/en/libs/SM3_Basic/Current/SM3_Basic/POUs/Movement/Direct/SMC_FollowPosition.html https://content.helpme-codesys.com/en/libs/SM3_Basic/Current/SM3_Basic/POUs/Movement/Direct/SMC_FollowSetValues.html
Meanwhile, I would like to understand why the motion FB instances must still be called even after the Execute is set to FALSE, especially in view of the fact that the next instruction is programmed to abort the previous one, with BufferMode set to 'Aborting'. All these unnecessary FB calls are an unnecessary overhead on the CPU anyway. Is there any precise rule about when to cease calling the various instances? (It should precisely be the 'done' status that says this one has finished its work). In...
Meanwhile, I would like to understand why the motion FB instances must still be called even after the Execute is set to FALSE, especially in view of the fact that the next instruction is programmed to abort the previous one, with BufferMode set to 'Aborting'. All these unnecessary FB calls are an unnecessary overhead on the CPU anyway. Is there any precise rule about when to cease calling the various instances? (It should precisely be the 'done' status that says this one has finished its work). In...
Hi, dwIpoTime should be set to the cycle time of your motion task. It defines the interpolation interval of the interpolator. E.g. in the attached screenshot, the task has a task interval of 4ms. The dwIpoTime input of the interpolator should be set to 4000.
Hi, I suppose that you are referring to the error code "SMC_FB_WASNT_CALLED_DURING_MOTION"? Starting of Softmotion version 4.15.0.0 the instance path of the function block that has not been called is logged into the device log. This might help you to identify why it has not been called.
Hi, can you post a screenshot of your drive configuration?
Hi, a few suggestions on how to tackle the problem: - it might help to increase the cycle time of the ethercat task - increase the value of the ethercat parameter DCInSyncWindow (https://content.helpme-codesys.com/en/libs/IODrvEtherCATDriver/Current/pou-IoDrvEtherCAT/DCInSyncWindow.html) (see attached image) - enable FrameAtTaskStart (https://content.helpme-codesys.com/en/libs/IODrvEtherCATDriver/Current/pou-IoDrvEtherCAT/FrameAtTaskStart.html) in the ethercat master (see attached image) - if the...
Hi, under this circumstances the performance of a Raspberry Pi 4 should be sufficient to run a Softmotion robotics application. A closer look at the project would be required. Maybe you could contact the codesys support? Usually it is recommended to run the planning task cyclically every 2ms with task priority of 0 on a dedicated core. In the task configuration you can have a look at the average and maximum execution time of the planning task. You could use the function block SMC_TuneCPKernel (https://content.helpme-codesys.com/en/libs/SM3_Robotics/Current/SM3_Robotics/POUs/AdministrativeConfiguration/Computation/SMC_TuneCPKernel.html)...
Hi, under this circumstances the performance of a Raspberry Pi 4 should be sufficient to run a Softmotion robotics application. A closer look at the project would be required. Maybe you could contact the codesys support? Usually it is recommended to run the planning task cyclically every 2ms with task priority of 0 on a dedicated core. In the task configuration you can have a look at the average and maximum execution time of the planning task. You could use the function block SMC_TuneCPKernel (https://content.helpme-codesys.com/en/libs/SM3_Robotics/Current/SM3_Robotics/POUs/AdministrativeConfiguration/Computation/SMC_TuneCPKernel.html)...
Hi, you need a realtime capable plc. Codesys Control WinV3 is not realtime capable. https://content.helpme-codesys.com/en/CODESYS%20Control/_rtsl_performance_optimization_linux.html The last chapter of https://content.helpme-codesys.com/en/CODESYS%20SoftMotion/_sm_robotics_diagnosis_movement_problems.html deals with how to configure the planning task.
Hi, which (kind of) PLC do you use?
Hi, do you use a self-built custom kinematics or a kinematics that is shipped with the Softmotion package?
Hi, do you use a self-build custom kinematics or a kinematics that is shipped with the Softmotion package?
Hi, you can define a start position for your GCode. How the start position can be defined depends on the CompileMode: For File and SMC_CNC_REF: Set the start position input of SMC_NCInterpreter (https://content.helpme-codesys.com/en/libs/SM3_CNC/Current/SM_CNC_POUs/NC2/Interpreter/SMC_NCInterpreter.html) For SMC_OutQueue: * Right-click on the CNC object in the project tree * Select Properties * Select the tab 'CNC' * Set the start position Concerning your second question: If the new set position...
Hi, right-click on the device in the project tree on the left side and execute the command 'Enable Softmotion'.
Hi, right-click on the device and execute the command 'Enable Softmotion'.
Hi, you can take a look at https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_pragma_attribute_global_init_slot.html Maybe it helps.
Hi, these variables are internal members of the axis. They measure the duration of some internal function calls.
Hi, Softmotion Robotics does not support tracking in/out to dynamic coordinate systems with relative movements. Is MC_MoveLinearAbsolute an option? See SMC_RELATIVE_MOVEMENT_TRACKING_CS in https://content.helpme-codesys.com/en/libs/SM3_Error/Current/SM3_Error/SMC_ERROR.html Concerning the other error: Do you use any motion function blocks of SM3_Basic to move a single axis of the robot in your application?
Hi ByCNC, have you seen G43? https://content.helpme-codesys.com/en/CODESYS%20SoftMotion/_sm_cnc_din66025_preprocessor.html https://content.helpme-codesys.com/en/libs/SM3_CNC/Current/SM_CNC_POUs/SoftMotion-CNC/SoftMotion-Function-Blocks/SMC_ToolLengthCorr.html https://content.helpme-codesys.com/en/CODESYS%20SoftMotion/_sm_example_tool_correction_usage.html Is this the functionality you are looking for? Hope this helps!
Hi, the example project is shipped together with the Softmotion package (version 4.12.0.0 or higher). It should be located at <-path-to-your-codesys-installation->\CODESYS SoftMotion\Examples\Tutorial. Hope this helps.
Hi, the example project is shipped together with the Softmotion package (version 4.12.0.0 or higher). It should be located at <path-to-your-codesys-installation>\CODESYS SoftMotion\Examples\Tutorial.</path-to-your-codesys-installation> Hope this helps.
A sample project for a simple kinematics can be found under https://content.helpme-codesys.com/en/CODESYS%20SoftMotion/_sm_example_custom_robotics_kinematic.html