Spindle config EtherCAT
- eduard
- 
				 Topic Author Topic Author
- Offline
- Premium Member
- 
				  
		Less
		More
		
			
	
		- Posts: 80
- Thank you received: 12
			
	
						10 Jan 2024 13:22				#290361
		by eduard
	
	
		
			
	
			
			 		
													
	
				Spindle config EtherCAT was created by eduard			
			
				Hello All,
I having hard time to understand the very basics of HAL pins and where I can find documentation from them. I'm using Qtdragon_hd and mostly testing with halshow.
All the hardware I have now is up and running (servos, spindle with MX2 ethercat driver, etc)
Now I trying to understand the connection to UI (Qtdragon) but it seems (for me) this part is the hardest, and lacking the documentation or it is too short and uncommented. I read all the doc for LCNC and what I found on forum, but I can not figure out.
There is somewhere detailed docs for spindle config? Especially for ethercat. How can I start to implement controlword, how I show the spindle status, fault codes, etc throug statusword, CW and CCW through target-velocity (MX2 working with +- sign in front of the rpm).
thx
 			
					I having hard time to understand the very basics of HAL pins and where I can find documentation from them. I'm using Qtdragon_hd and mostly testing with halshow.
All the hardware I have now is up and running (servos, spindle with MX2 ethercat driver, etc)
Now I trying to understand the connection to UI (Qtdragon) but it seems (for me) this part is the hardest, and lacking the documentation or it is too short and uncommented. I read all the doc for LCNC and what I found on forum, but I can not figure out.
There is somewhere detailed docs for spindle config? Especially for ethercat. How can I start to implement controlword, how I show the spindle status, fault codes, etc throug statusword, CW and CCW through target-velocity (MX2 working with +- sign in front of the rpm).
thx
Please Log in or Create an account to join the conversation.
- eduard
- 
				 Topic Author Topic Author
- Offline
- Premium Member
- 
				  
		Less
		More
		
			
	
		- Posts: 80
- Thank you received: 12
			
	
						10 Jan 2024 13:59				#290365
		by eduard
	
	
		
			
	
			
			 		
													
	
				Replied by eduard on topic Spindle config EtherCAT			
			
				Maybe I try to consume the HAL in smaller bites. 
Here is the more specific question:
I have the
lcec.0.MX2.spindle-controlword what have these basic states:
7 - clear faults
10 - stop spindle
15 - start the spindle if the rpm input is set
lcec.0.MX2.spindle-target-velocity
receives +- 10000 to 60000 rpm which sets the direction as well
the MX2 can handle cia402. Can I control with dbraun's hal-cia or that is just for servo?
How can I implement it to hal and gui to control the spindle?
thx
 			
					Here is the more specific question:
I have the
lcec.0.MX2.spindle-controlword what have these basic states:
7 - clear faults
10 - stop spindle
15 - start the spindle if the rpm input is set
lcec.0.MX2.spindle-target-velocity
receives +- 10000 to 60000 rpm which sets the direction as well
the MX2 can handle cia402. Can I control with dbraun's hal-cia or that is just for servo?
How can I implement it to hal and gui to control the spindle?
thx
Please Log in or Create an account to join the conversation.
- 0x2102
- 
				  
- Offline
- Elite Member
- 
				  
		Less
		More
		
			
	
		- Posts: 212
- Thank you received: 76
			
	
						10 Jan 2024 20:02		 -  10 Jan 2024 20:02		#290396
		by 0x2102
	
	
		
			
	
	
			 		
													
	
				Replied by 0x2102 on topic Spindle config EtherCAT			
			
				I haven't done nor tested this but the CIA402 comp should work for your spindle in CSV (velocity mode).
I would probably use Pncconf to generate a test machine with a Mesa 7i76e for example and Spindle StepGen.
Use the test machine HAL to copy out the spindle section, remove the stepgen lines and connect our velocity-cmd and velocity-fb to the CIA402 comp.
Connect and set your Spindle CIA402 to CSV mode.
					I would probably use Pncconf to generate a test machine with a Mesa 7i76e for example and Spindle StepGen.
Use the test machine HAL to copy out the spindle section, remove the stepgen lines and connect our velocity-cmd and velocity-fb to the CIA402 comp.
Connect and set your Spindle CIA402 to CSV mode.
		Last edit: 10 Jan 2024 20:02  by 0x2102.			
	
		The following user(s) said Thank You: rodw 	
			Please Log in or Create an account to join the conversation.
- eduard
- 
				 Topic Author Topic Author
- Offline
- Premium Member
- 
				  
		Less
		More
		
			
	
		- Posts: 80
- Thank you received: 12
			
	
						11 Jan 2024 16:50				#290437
		by eduard
	
	
		
			
	
	
		
			
			 		
													
	
				Replied by eduard on topic Spindle config EtherCAT			
			
					Attachments:
Please Log in or Create an account to join the conversation.
- eduard
- 
				 Topic Author Topic Author
- Offline
- Premium Member
- 
				  
		Less
		More
		
			
	
		- Posts: 80
- Thank you received: 12
			
	
						11 Jan 2024 18:14				#290440
		by eduard
	
	
		
			
	
			
			 		
													
	
				Replied by eduard on topic Spindle config EtherCAT			
			
				Hi,
any idea how can I solve this:
to enable the spindle rotation I have to send dec 15 to spindle-controlword, but net spindle-enable receives just bit.
or maybe the good question is, how can I send to spindle-controlword the dec15?
I think the cia402 is not working on VDF since not have just VL (velocity) mode.
					any idea how can I solve this:
to enable the spindle rotation I have to send dec 15 to spindle-controlword, but net spindle-enable receives just bit.
or maybe the good question is, how can I send to spindle-controlword the dec15?
I think the cia402 is not working on VDF since not have just VL (velocity) mode.
Please Log in or Create an account to join the conversation.
- 0x2102
- 
				  
- Offline
- Elite Member
- 
				  
		Less
		More
		
			
	
		- Posts: 212
- Thank you received: 76
			
	
						11 Jan 2024 21:56		 -  11 Jan 2024 22:20		#290459
		by 0x2102
	
	
		
			
	
	
			 		
													
	
				Replied by 0x2102 on topic Spindle config EtherCAT			
			
				You could look into the org CIA402 code and see if I could modify it to better match your needs. I bit of trial and error will probably be required. 
One option to set values with Bit on or off:
linuxcnc.org/docs/html/man/man9/mux2.9.html
Follows the value of in0 if sel is FALSE, or in1 if sel is TRUE
loadrt mux2 names=mux2.spindle-enable
addf mux2.spindle-enable servo-thread
# Spindle off
setp mux2.spindle-enable.in0 10
# Spindle on
setp mux2.spindle-enable.in1 15
net spindle-enable => mux2.spindle-enable.sel
net spindle-ctrl-cmd mux2.spindle-enable.out => lcec.0.MX2.spindle-controlword
					One option to set values with Bit on or off:
linuxcnc.org/docs/html/man/man9/mux2.9.html
Follows the value of in0 if sel is FALSE, or in1 if sel is TRUE
loadrt mux2 names=mux2.spindle-enable
addf mux2.spindle-enable servo-thread
# Spindle off
setp mux2.spindle-enable.in0 10
# Spindle on
setp mux2.spindle-enable.in1 15
net spindle-enable => mux2.spindle-enable.sel
net spindle-ctrl-cmd mux2.spindle-enable.out => lcec.0.MX2.spindle-controlword
		Last edit: 11 Jan 2024 22:20  by 0x2102.			
	
		The following user(s) said Thank You: eduard 	
			Please Log in or Create an account to join the conversation.
- eduard
- 
				 Topic Author Topic Author
- Offline
- Premium Member
- 
				  
		Less
		More
		
			
	
		- Posts: 80
- Thank you received: 12
			
	
						11 Jan 2024 21:59				#290461
		by eduard
	
	
		
			
	
	
			 		
													
	
				Replied by eduard on topic Spindle config EtherCAT			
			
				I did not found how to use CiA402 with this VFD since the VL mode not supported (I think) in dbraun hal-cia, and I not have any examples except for servos.
But I made the config and using the hal parameters, can control the vfd and everithing is working with a small exception.
Here is the code:
#*******************
# SPINDLE
#*******************
setp lcec.0.MX2.spindle-controlword 15
net spindle-vel-cmd-rpm => lcec.0.MX2.spindle-target-velocity
net spindle-vel-fb-rpm => lcec.0.MX2.spindle-actual-velocity
#net qtdragon.spindle-fault <= lcec.0.MX2.spindle-statusword
# ---setup spindle control signals---
net spindle-vel-cmd-rps <= spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs <= spindle.0.speed-out-rps-abs
net spindle-vel-cmd-rpm <= spindle.0.speed-out
net spindle-vel-cmd-rpm-abs <= spindle.0.speed-out-abs
net spindle-enable <= spindle.0.on
net spindle-cw <= spindle.0.forward
net spindle-ccw <= spindle.0.reverse
net spindle-brake <= spindle.0.brake
net spindle-revs => spindle.0.revs
net spindle-at-speed => spindle.0.at-speed
net spindle-vel-fb-rps => spindle.0.speed-in
# ---Setup spindle at speed signals---
sets spindle-at-speed true
When I set the controlword to 15, the vfd is powering on and waiting for the rpm input.
But when shutting down lcnc if I not set manually to 0:
lcec.0.MX2.spindle-controlword 0
on the next start the vfd not accepting remote signals from lcec (or whatever it is).
I tried to set a shutdown.hal with this parameter
setp lcec.0.MX2.spindle-controlword 0
but not working.
Any idea how to solve this?
					But I made the config and using the hal parameters, can control the vfd and everithing is working with a small exception.
Here is the code:
#*******************
# SPINDLE
#*******************
setp lcec.0.MX2.spindle-controlword 15
net spindle-vel-cmd-rpm => lcec.0.MX2.spindle-target-velocity
net spindle-vel-fb-rpm => lcec.0.MX2.spindle-actual-velocity
#net qtdragon.spindle-fault <= lcec.0.MX2.spindle-statusword
# ---setup spindle control signals---
net spindle-vel-cmd-rps <= spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs <= spindle.0.speed-out-rps-abs
net spindle-vel-cmd-rpm <= spindle.0.speed-out
net spindle-vel-cmd-rpm-abs <= spindle.0.speed-out-abs
net spindle-enable <= spindle.0.on
net spindle-cw <= spindle.0.forward
net spindle-ccw <= spindle.0.reverse
net spindle-brake <= spindle.0.brake
net spindle-revs => spindle.0.revs
net spindle-at-speed => spindle.0.at-speed
net spindle-vel-fb-rps => spindle.0.speed-in
# ---Setup spindle at speed signals---
sets spindle-at-speed true
When I set the controlword to 15, the vfd is powering on and waiting for the rpm input.
But when shutting down lcnc if I not set manually to 0:
lcec.0.MX2.spindle-controlword 0
on the next start the vfd not accepting remote signals from lcec (or whatever it is).
I tried to set a shutdown.hal with this parameter
setp lcec.0.MX2.spindle-controlword 0
but not working.
Any idea how to solve this?
		The following user(s) said Thank You: hilo90mhz 	
			Please Log in or Create an account to join the conversation.
- 0x2102
- 
				  
- Offline
- Elite Member
- 
				  
		Less
		More
		
			
	
		- Posts: 212
- Thank you received: 76
			
	
						11 Jan 2024 22:03		 -  11 Jan 2024 22:09		#290462
		by 0x2102
	
	
		
			
	
	
			 		
													
	
				Replied by 0x2102 on topic Spindle config EtherCAT			
			
				You will need to modify the CIA402 code ...it's just an example that support CSP and CSV but you could modify and support other modes as well.
Add the MUX2 to fix your issue...
It will set the lcec.0.MX2.spindle-controlword to 15 when the "spindle-enable" signal is 1 (true) and to 0 when the "spindle-enable" signal is 0 (false).
					Add the MUX2 to fix your issue...
It will set the lcec.0.MX2.spindle-controlword to 15 when the "spindle-enable" signal is 1 (true) and to 0 when the "spindle-enable" signal is 0 (false).
		Last edit: 11 Jan 2024 22:09  by 0x2102.			
	
		The following user(s) said Thank You: eduard 	
			Please Log in or Create an account to join the conversation.
- eduard
- 
				 Topic Author Topic Author
- Offline
- Premium Member
- 
				  
		Less
		More
		
			
	
		- Posts: 80
- Thank you received: 12
			
	
						12 Jan 2024 09:48		 -  12 Jan 2024 10:21		#290487
		by eduard
	
	
		
			
	
	
			 		
													
	
				Replied by eduard on topic Spindle config EtherCAT			
			
				UPD:
It was a type mismatch. After I changed the spindle-controlword to float from u32 in xml, now is working. But its weird, since the servo controlword still u32 and working as well.
Why?
Anyway, thanks for the help, now I understand what I'm doing in hal.
After testing, is not working yet.
How can I check these signals:
mux2.spindle-enable.in0
mux2.spindle-enable.in1
spindle-ctrl-cmd
they are not appearing in halshow
This is the full scpindle code:
...
...
loadusr -W lcec_conf /home/eduard/linuxcnc/custom/ethercat-conf.xml
loadrt lcec
loadrt cia402 count=1
loadrt mux2 names=mux2.spindle-enable
addf lcec.read-all servo-thread
addf cia402.0.read-all servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf cia402.0.write-all servo-thread
addf lcec.write-all servo-thread
addf mux2.spindle-enable servo-thread
...
...
#*******************
# SPINDLE
#*******************
#Spindle OFF
setp mux2.spindle-enable.in0 0
#Spindle ON
setp mux2.spindle-enable.in1 15
net spindle-vel-cmd-rpm => lcec.0.MX2.spindle-target-velocity
net spindle-vel-fb-rpm => lcec.0.MX2.spindle-actual-velocity
net spindle-enable => mux2.spindle-enable.sel
net spindle-ctrl-cmd mux2.spindle-enable.out => lcec.0.MX2.spindle-controlword
#net qtdragon.spindle-fault <= lcec.0.MX2.spindle-statusword
# ---setup spindle control signals---
net spindle-vel-cmd-rps <= spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs <= spindle.0.speed-out-rps-abs
net spindle-vel-cmd-rpm <= spindle.0.speed-out
net spindle-vel-cmd-rpm-abs <= spindle.0.speed-out-abs
net spindle-enable <= spindle.0.on
net spindle-cw <= spindle.0.forward
net spindle-ccw <= spindle.0.reverse
net spindle-brake <= spindle.0.brake
net spindle-revs => spindle.0.revs
net spindle-at-speed => spindle.0.at-speed
net spindle-vel-fb-rps => spindle.0.speed-in
# ---Setup spindle at speed signals---
sets spindle-at-speed true
 			
					It was a type mismatch. After I changed the spindle-controlword to float from u32 in xml, now is working. But its weird, since the servo controlword still u32 and working as well.
Why?
Anyway, thanks for the help, now I understand what I'm doing in hal.
After testing, is not working yet.
How can I check these signals:
mux2.spindle-enable.in0
mux2.spindle-enable.in1
spindle-ctrl-cmd
they are not appearing in halshow
This is the full scpindle code:
...
...
loadusr -W lcec_conf /home/eduard/linuxcnc/custom/ethercat-conf.xml
loadrt lcec
loadrt cia402 count=1
loadrt mux2 names=mux2.spindle-enable
addf lcec.read-all servo-thread
addf cia402.0.read-all servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf cia402.0.write-all servo-thread
addf lcec.write-all servo-thread
addf mux2.spindle-enable servo-thread
...
...
#*******************
# SPINDLE
#*******************
#Spindle OFF
setp mux2.spindle-enable.in0 0
#Spindle ON
setp mux2.spindle-enable.in1 15
net spindle-vel-cmd-rpm => lcec.0.MX2.spindle-target-velocity
net spindle-vel-fb-rpm => lcec.0.MX2.spindle-actual-velocity
net spindle-enable => mux2.spindle-enable.sel
net spindle-ctrl-cmd mux2.spindle-enable.out => lcec.0.MX2.spindle-controlword
#net qtdragon.spindle-fault <= lcec.0.MX2.spindle-statusword
# ---setup spindle control signals---
net spindle-vel-cmd-rps <= spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs <= spindle.0.speed-out-rps-abs
net spindle-vel-cmd-rpm <= spindle.0.speed-out
net spindle-vel-cmd-rpm-abs <= spindle.0.speed-out-abs
net spindle-enable <= spindle.0.on
net spindle-cw <= spindle.0.forward
net spindle-ccw <= spindle.0.reverse
net spindle-brake <= spindle.0.brake
net spindle-revs => spindle.0.revs
net spindle-at-speed => spindle.0.at-speed
net spindle-vel-fb-rps => spindle.0.speed-in
# ---Setup spindle at speed signals---
sets spindle-at-speed true
		Last edit: 12 Jan 2024 10:21  by eduard.			
			Please Log in or Create an account to join the conversation.
- scottlaird
- 
				  
- Offline
- Premium Member
- 
				  
		Less
		More
		
			
	
		- Posts: 136
- Thank you received: 160
			
	
						06 Feb 2024 00:20				#292599
		by scottlaird
	
	
		
			
	
			
			 		
													
	
				Replied by scottlaird on topic Spindle config EtherCAT			
			
				This is an Omron MX2?  Those are surprisingly cheap on eBay...			
					Please Log in or Create an account to join the conversation.
		Time to create page: 0.224 seconds	
 
													