Modbus input for absolute encoder position?
04 Dec 2019 01:11 - 04 Dec 2019 01:13 #151929
by 0x2102
Replied by 0x2102 on topic Modbus input for absolute encoder position?
Hello,
I recently purchased servo drives with multiturn / absolute encoders. I am able to read the required registers via MB2HAL.
Multiturn Count: 0 - 65536
Pulses per Turn: 0 - 65536
I was wondering if anybody was able to get this to work in LCNC as PCW/andypugh described? ModBus absolute position read at startup and then incremental encoders for realtime feedback.
Regards,
Markus
I recently purchased servo drives with multiturn / absolute encoders. I am able to read the required registers via MB2HAL.
Multiturn Count: 0 - 65536
Pulses per Turn: 0 - 65536
I was wondering if anybody was able to get this to work in LCNC as PCW/andypugh described? ModBus absolute position read at startup and then incremental encoders for realtime feedback.
Regards,
Markus
Last edit: 04 Dec 2019 01:13 by 0x2102.
Please Log in or Create an account to join the conversation.
04 Dec 2019 11:22 #151975
by andypugh
I think it might be simpler than you think. You should be able to just add the numbers together in HAL and use directly.
Note that the sum2 HAL component has separate gains for the two inputs, so you can scale one for distance-per-turn and the other for distance-per-pulse.
You might need to convert from signed integer (S32) to Floating point, but that, plus specifying absolute encoder homing should be all that you need.
(This assumes you are reading the Modbus in a realtime thread, of course)
Replied by andypugh on topic Modbus input for absolute encoder position?
Multiturn Count: 0 - 65536
Pulses per Turn: 0 - 65536
I was wondering if anybody was able to get this to work in LCNC as PCW/andypugh described? ModBus absolute position read at startup and then incremental encoders for realtime feedback.
I think it might be simpler than you think. You should be able to just add the numbers together in HAL and use directly.
Note that the sum2 HAL component has separate gains for the two inputs, so you can scale one for distance-per-turn and the other for distance-per-pulse.
You might need to convert from signed integer (S32) to Floating point, but that, plus specifying absolute encoder homing should be all that you need.
(This assumes you are reading the Modbus in a realtime thread, of course)
Please Log in or Create an account to join the conversation.
04 Dec 2019 11:53 #151979
by 0x2102
Replied by 0x2102 on topic Modbus input for absolute encoder position?
Thanks Andy.
Still learning LinuxCNC - so I might ask stupid questions.
I set up LinuxCNC in closed loop (velocity mode). The incremental encoders are driving the PID for the axis. That is working fine.
The ModBus reading would be too slow to drive the PID.
Does your example this still apply?
Regards,
Markus
Still learning LinuxCNC - so I might ask stupid questions.
I set up LinuxCNC in closed loop (velocity mode). The incremental encoders are driving the PID for the axis. That is working fine.
The ModBus reading would be too slow to drive the PID.
Does your example this still apply?
Regards,
Markus
Please Log in or Create an account to join the conversation.
04 Dec 2019 13:09 #151987
by andypugh
But I think that you are correct, in that both modbus2hal and Classic Ladder modbus implementations run in user space.
What is the actual servo drive?
That would need two sum2 components per axis, or you could make a simple HAL component as a 3-way adder with scaling / number conversion. This might be needed if the modbus register are likely to change during operation, you would want to latch the initial numbers if you are also using the incrmental output.
Replied by andypugh on topic Modbus input for absolute encoder position?
The PID updates once per mS. Modbus can transfer hundreds of registers in that time.The ModBus reading would be too slow to drive the PID.
But I think that you are correct, in that both modbus2hal and Classic Ladder modbus implementations run in user space.
What is the actual servo drive?
With modifications, probably. You would need to add together all three numbers (incremental encoder counter float position, mutli-turn and single turn)Does your example this still apply?
That would need two sum2 components per axis, or you could make a simple HAL component as a 3-way adder with scaling / number conversion. This might be needed if the modbus register are likely to change during operation, you would want to latch the initial numbers if you are also using the incrmental output.
Please Log in or Create an account to join the conversation.
04 Dec 2019 21:24 #152023
by 0x2102
Replied by 0x2102 on topic Modbus input for absolute encoder position?
They are JMC 400W Servos with a JASD4002-20B drive.
www.jmc-motor.com/product/903.html
www.jmc-motor.com/file/1806085008.pdf
I guess it would be a nice to have feature, but it's not really that critical.
www.jmc-motor.com/product/903.html
www.jmc-motor.com/file/1806085008.pdf
I guess it would be a nice to have feature, but it's not really that critical.
Please Log in or Create an account to join the conversation.
04 Dec 2019 22:38 #152026
by andypugh
Replied by andypugh on topic Modbus input for absolute encoder position?
What interface hardware are you using? Maybe you can be the first to do realtime modbus with a Mesa UART.
Please Log in or Create an account to join the conversation.
04 Dec 2019 22:47 - 04 Dec 2019 22:47 #152028
by 0x2102
Replied by 0x2102 on topic Modbus input for absolute encoder position?
I do have a couple ![:-) :-)](/media/kunena/emoticons/smile.png)
Currently I have a 7i95 on my test bench that I planned on using for this setup.
I also have a 7i76e and 7i92+7i76+7i77 available.
![:-) :-)](/media/kunena/emoticons/smile.png)
Currently I have a 7i95 on my test bench that I planned on using for this setup.
I also have a 7i76e and 7i92+7i76+7i77 available.
Last edit: 04 Dec 2019 22:47 by 0x2102.
Please Log in or Create an account to join the conversation.
- Weiler810T
-
- Offline
- User is blocked
-
Less
More
- Posts: 89
- Thank you received: 5
05 Dec 2019 05:57 #152045
by Weiler810T
Replied by Weiler810T on topic Modbus input for absolute encoder position?
That would interest me, too.
I'll read along.
greeting Siggi
![;) ;)](/media/kunena/emoticons/wink.png)
greeting Siggi
Please Log in or Create an account to join the conversation.
05 Dec 2019 07:42 #152049
by Henk
Replied by Henk on topic Modbus input for absolute encoder position?
I agree, this will be very useful.
Henk
Henk
Please Log in or Create an account to join the conversation.
05 Dec 2019 11:18 #152057
by andypugh
Replied by andypugh on topic Modbus input for absolute encoder position?
So, do you know the register numbers that contain the data? (and thus the modbus transaction data)
You should, I think, be able to connect all the drives to one serial port, including the one on the 7i76e.
I think it might be relatively easy to write a .comp that loads like:
[/code]loadrt mesa_modbus uart="hm2_7i76.0.uart.0" addr="151,151,152", regs="55,65"[/code]
It might be better to have something like the format used for absolute encoders :
ssi_chan_0=error%1bposition%24g
Possibly using all the same code, in fact.
This is one existing implementation of a driver for the Mesa UART:
github.com/LinuxCNC/linuxcnc/blob/master...ivers/mesa_uart.comp
You should, I think, be able to connect all the drives to one serial port, including the one on the 7i76e.
I think it might be relatively easy to write a .comp that loads like:
[/code]loadrt mesa_modbus uart="hm2_7i76.0.uart.0" addr="151,151,152", regs="55,65"[/code]
It might be better to have something like the format used for absolute encoders :
ssi_chan_0=error%1bposition%24g
Possibly using all the same code, in fact.
This is one existing implementation of a driver for the Mesa UART:
github.com/LinuxCNC/linuxcnc/blob/master...ivers/mesa_uart.comp
Please Log in or Create an account to join the conversation.
Time to create page: 0.110 seconds