Dear All,
I am trying to understand if raspberry 3B+ or 4 is suitable for softmotion application where needed axis synchronisation (for example gearing two axis).
Since the softmotion package is available for the raspberry runtime I assume that's possible but on the other hand I found forum talks where it is told raspberry is not real-time and therefore not suitable for soft motion application.
Can you please help me for a better understanding?
Thanks a lot
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
depends basically on which drives you want to use. (Ethercat / CANopen / Stepper...)
In general you need to have a rt_preempt patched Linux kernel,
then I would say the Pi is motion capable.
That's it.
π
1
Last edit: eschwellinger 2021-05-25
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
I am trying to create codesys project with UNIDRIVE HD 753. it works in Cyclic sync position mode after start up. I would like to switch this mode to different one, e.g. Homing mode 0x6060 = 6, but it is immediately rewrited to original Cyclic sync position mode 8. Do you have any idea how to do it correctly?
You will find my project ( process data ) in attachment
Thank you, it works, but if I try to change it back from torque mode to position mode it finish with error SMC_SMC_NOT_SUPPORTED. Is it necessery to do something before changing the mode?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Please, see attached files. You can see, that after writing required possition mode to smc_setcontrollermode, vallue 0x6060 is 8, but 0x6060 is remaining at 10 and. bDone of smc_setcontrollermode is false, bError is true. No other Error in PLC is not reported.
so the drive somehow will not switch from mode of operation 10 (cyclic sync torque mode) to 8 (cyclic sync position mode).
Maybe there is a limitation in the drive? E.g. some servo drives can switch the mode of operation only if they are not enabled ...
Another thing to try is to not map 6060 and 6061 by PDO. SMC_SetControllerMode will then write them by SDO. This should not make a big difference, but maybe the drive reacts differently.
Georg
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Georg,
I am back after longer time, thank for previous advice. Basicaly, everything work ok. It was necessery to disable drive first and then to change OP mode.
My customer ask me to help him with homing. He is using his own ethercat master. He has written all required values by SDO to drive (homing method, speeds...) and write value 6 (homing OP mode) to 6060. After setting control word to start homing, it works correctly, after releasing home switch it changes direction, but not changes speed. I am sure it must be somethig drive specific, but I am not able to simulate it in codesys. smc_setcontrollermode doesn't support operational mode homing. If I am trying to change OP mode directly, by writing new value to object 6060, it still remains on default value 8. It is rewrited by codesys on background. My question is: Is there any way to control my drive directly by writing required values to 6060 ( switch off that rewriting on background)?
Peter
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Georg,
I am back after longer time, thank for previous advice. Basicaly, everything work ok. It was necessery to disable drive first and then to change OP mode.
My customer ask me to help him with homing. He is using his own ethercat master. He has written all required values by SDO to drive (homing method, speeds...) and write value 6 (homing OP mode) to 6060. After setting control word to start homing, it works correctly, after releasing home switch it changes direction, but not changes speed. I am sure it must be somethig drive specific, but I am not able to simulate it in codesys. smc_setcontrollermode doesn't support operational mode homing. If I am trying to change OP mode directly, by writing new value to object 6060, it still remains on default value 8. It is rewrited by codesys on background. My question is: Is there any way to control my drive directly by writing required values to 6060 ( switch off that rewriting on background)?
Peter
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Georg,
I am back after longer time, thank for previous advice. Basicaly, everything work ok. It was necessery to disable drive first and then to change OP mode.
My customer ask me to help him with homing. He is using his own ethercat master. He has written all required values by SDO to drive (homing method, speeds...) and write value 6 (homing OP mode) to 6060. After setting control word to start homing, it works correctly, after releasing home switch it changes direction, but not changes speed. I am sure it must be somethig drive specific, but I am not able to simulate it in codesys. smc_setcontrollermode doesn't support operational mode homing. If I am trying to change OP mode directly, by writing new value to object 6060, it still remains on default value 8. It is rewrited by codesys on background. My question is: Is there any way to control my drive directly by writing required values to 6060 ( switch off that rewriting on background)?
Peter
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Georg,
I am back after longer time, thank for previous advice. Basicaly, everything work ok. It was necessery to disable drive first and then to change OP mode.
My customer ask me to help him with homing. He is using his own ethercat master. He has written all required values by SDO to drive (homing method, speeds...) and write value 6 (homing OP mode) to 6060. After setting control word to start homing, it works correctly, after releasing home switch it changes direction, but not changes speed. I am sure it must be somethig drive specific, but I am not able to simulate it in codesys. smc_setcontrollermode doesn't support operational mode homing. If I am trying to change OP mode directly, by writing new value to object 6060, it still remains on default value 8. It is rewrited by codesys on background. My question is: Is there any way to control my drive directly by writing required values to 6060 ( switch off that rewriting on background)?
Peter
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Peter,
glad it works now!
Regarding homing, I cannot help you with homing using a different EtherCAT stack. Just a general remark: it is important to set the "homing method" (object 0x6098) before homing.
Regarding homing using SoftMotion: the function block MC_Home performs the homing procedure, including setting the mode of operation to 6.
Georg
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Georg,
I have been following your advice to use FB MC_Home. First I set all required objects ( homing method, speeds...). I is done in Startup parameters table. After initial phase is drive in pos mode 8. When I execute MC_Home, it immediately finished with Axis_IN_ERRORSTOP. Can you please give me tips what to check?
Peter
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
We want to use code of MC_MoveAbsolute_SML (from lib "SML_Basic, 4.11.0.0(3S- Smart Software Solutions GmbH)") in our embedded Application.
Can anyone send me the code and example of this SML_Basic, 4.11.0.0(3S- Smart Software Solutions GmbH Library.
π
1
Last edit: sukrit 2023-03-27
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Dear All,
I am trying to understand if raspberry 3B+ or 4 is suitable for softmotion application where needed axis synchronisation (for example gearing two axis).
Since the softmotion package is available for the raspberry runtime I assume that's possible but on the other hand I found forum talks where it is told raspberry is not real-time and therefore not suitable for soft motion application.
Can you please help me for a better understanding?
Thanks a lot
depends basically on which drives you want to use. (Ethercat / CANopen / Stepper...)
In general you need to have a rt_preempt patched Linux kernel,
then I would say the Pi is motion capable.
That's it.
Last edit: eschwellinger 2021-05-25
Thank you for your reply. Do you suggest to use the Pi 4 with multicore license or the Pi3 B+ should be enough?
..both are possible mc prefered.
Hello,
I am trying to create codesys project with UNIDRIVE HD 753. it works in Cyclic sync position mode after start up. I would like to switch this mode to different one, e.g. Homing mode 0x6060 = 6, but it is immediately rewrited to original Cyclic sync position mode 8. Do you have any idea how to do it correctly?
You will find my project ( process data ) in attachment
If you use it with SoftMotion you just need to execute MC_Home fb to execute the homing procedure
Thank, for advice. Well it is possible, but in some part of controll I will need to change operational mode to Torque Profile Mode 0x6060=4.
if the drive supports it, you could use smc_setcontrollermode and MC_SetTorque to do it.
Last edit: eschwellinger 2023-01-03
Thank you, it works, but if I try to change it back from torque mode to position mode it finish with error SMC_SMC_NOT_SUPPORTED. Is it necessery to do something before changing the mode?
Hi Peter,
probably writing 0x6060 to 8 or reading 0x6061 until it is 8 failed during execution of SMC_SetControllerMode.
You could check the PLC log for any warnings and errors.
Georg
Please, see attached files. You can see, that after writing required possition mode to smc_setcontrollermode, vallue 0x6060 is 8, but 0x6060 is remaining at 10 and. bDone of smc_setcontrollermode is false, bError is true. No other Error in PLC is not reported.
Hi Peter,
so the drive somehow will not switch from mode of operation 10 (cyclic sync torque mode) to 8 (cyclic sync position mode).
Maybe there is a limitation in the drive? E.g. some servo drives can switch the mode of operation only if they are not enabled ...
Another thing to try is to not map 6060 and 6061 by PDO. SMC_SetControllerMode will then write them by SDO. This should not make a big difference, but maybe the drive reacts differently.
Georg
Hi Georg,
I am back after longer time, thank for previous advice. Basicaly, everything work ok. It was necessery to disable drive first and then to change OP mode.
My customer ask me to help him with homing. He is using his own ethercat master. He has written all required values by SDO to drive (homing method, speeds...) and write value 6 (homing OP mode) to 6060. After setting control word to start homing, it works correctly, after releasing home switch it changes direction, but not changes speed. I am sure it must be somethig drive specific, but I am not able to simulate it in codesys. smc_setcontrollermode doesn't support operational mode homing. If I am trying to change OP mode directly, by writing new value to object 6060, it still remains on default value 8. It is rewrited by codesys on background. My question is: Is there any way to control my drive directly by writing required values to 6060 ( switch off that rewriting on background)?
Peter
Hi Georg,
I am back after longer time, thank for previous advice. Basicaly, everything work ok. It was necessery to disable drive first and then to change OP mode.
My customer ask me to help him with homing. He is using his own ethercat master. He has written all required values by SDO to drive (homing method, speeds...) and write value 6 (homing OP mode) to 6060. After setting control word to start homing, it works correctly, after releasing home switch it changes direction, but not changes speed. I am sure it must be somethig drive specific, but I am not able to simulate it in codesys. smc_setcontrollermode doesn't support operational mode homing. If I am trying to change OP mode directly, by writing new value to object 6060, it still remains on default value 8. It is rewrited by codesys on background. My question is: Is there any way to control my drive directly by writing required values to 6060 ( switch off that rewriting on background)?
Peter
Hi Georg,
I am back after longer time, thank for previous advice. Basicaly, everything work ok. It was necessery to disable drive first and then to change OP mode.
My customer ask me to help him with homing. He is using his own ethercat master. He has written all required values by SDO to drive (homing method, speeds...) and write value 6 (homing OP mode) to 6060. After setting control word to start homing, it works correctly, after releasing home switch it changes direction, but not changes speed. I am sure it must be somethig drive specific, but I am not able to simulate it in codesys. smc_setcontrollermode doesn't support operational mode homing. If I am trying to change OP mode directly, by writing new value to object 6060, it still remains on default value 8. It is rewrited by codesys on background. My question is: Is there any way to control my drive directly by writing required values to 6060 ( switch off that rewriting on background)?
Peter
Hi Georg,
I am back after longer time, thank for previous advice. Basicaly, everything work ok. It was necessery to disable drive first and then to change OP mode.
My customer ask me to help him with homing. He is using his own ethercat master. He has written all required values by SDO to drive (homing method, speeds...) and write value 6 (homing OP mode) to 6060. After setting control word to start homing, it works correctly, after releasing home switch it changes direction, but not changes speed. I am sure it must be somethig drive specific, but I am not able to simulate it in codesys. smc_setcontrollermode doesn't support operational mode homing. If I am trying to change OP mode directly, by writing new value to object 6060, it still remains on default value 8. It is rewrited by codesys on background. My question is: Is there any way to control my drive directly by writing required values to 6060 ( switch off that rewriting on background)?
Peter
Hi Peter,
glad it works now!
Regarding homing, I cannot help you with homing using a different EtherCAT stack. Just a general remark: it is important to set the "homing method" (object 0x6098) before homing.
Regarding homing using SoftMotion: the function block MC_Home performs the homing procedure, including setting the mode of operation to 6.
Georg
Hi Georg,
I have been following your advice to use FB MC_Home. First I set all required objects ( homing method, speeds...). I is done in Startup parameters table. After initial phase is drive in pos mode 8. When I execute MC_Home, it immediately finished with Axis_IN_ERRORSTOP. Can you please give me tips what to check?
Peter
Hi Peter,
I would recommend to check the PLC log and amybe the drive itself what kind of error has occurred.
You could also execute MC_ReadAxisError to read the drive specific error object. (You probably need the drive documentation to interpret the value.)
And then you could use PLC controlled homing (SMC_Homing) instead of drive controlled homing (MC_Home) as a workaround.
Best regards,
Georg
Hi all,
We want to use code of MC_MoveAbsolute_SML (from lib "SML_Basic, 4.11.0.0(3S- Smart Software Solutions GmbH)") in our embedded Application.
Can anyone send me the code and example of this SML_Basic, 4.11.0.0(3S- Smart Software Solutions GmbH Library.
Last edit: sukrit 2023-03-27