Small victory in the war against the Cincinnati cinturn 12u

More
28 Nov 2022 22:20 - 28 Nov 2022 22:33 #257900 by smc.collins
I removed car-ready input xx
I added the motion in digital line I am now getting the following error. 
in Axis

Error: Index out of range, 5 not in [0..4] increase num_dio/EMCOT_MAX DIO=64)

turret motion is happening now, I am still getting failure to lock, due to what looks like a abort. I am attaching all of my current config files in in the zipped folder are the halscope captures of what's happening.

I've been googling on this for a bit now, and so far there nothing that should be causing emcio enumarated input failure, that I understand. 

 
Attachments:
Last edit: 28 Nov 2022 22:33 by smc.collins.

Please Log in or Create an account to join the conversation.

More
28 Nov 2022 22:39 #257907 by andypugh
By default LinuxCNC only has 4 motion.input..... and motion.output.... pins.

You change this, as the error message suggests, by adding a num_dio=6 (or whatever) parameter to the "loadrt motmod" command in the HAL.

In your case the HAL file is using INI substitution so you have
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS

Change that to
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS num_dio=8

Or, if you want, you could create a new NUM_DIO in the [EMCMOT[ section of the INI and use:
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS num_dio=[EMCMOT]NUM_DIO
The following user(s) said Thank You: tommylight, smc.collins

Please Log in or Create an account to join the conversation.

More
28 Nov 2022 23:02 #257913 by smc.collins
So, it is counting the sense pins 0-3 as extra joints ? and the joints needs to be increased ?

Just so I understand exactly WHAT I am changing for the future

Please Log in or Create an account to join the conversation.

More
28 Nov 2022 23:11 #257915 by tommylight
No, no joints, just adding the
num_dio=8 at the end of the line
num_dio ==== number of digital inputs and outputs

Please Log in or Create an account to join the conversation.

More
28 Nov 2022 23:59 - 29 Nov 2022 00:09 #257920 by smc.collins
well, for sure, that's not the issue. I am not sure entirely why but the conv-float-32u seems to be adding joints everytime you move the turret.

as soon as I added the num_dio=8 after my first turret move, same error, this time 16

ERROR: index out of range, 15 not in [0..10[ (increase num_dio/EMCOT_MAX=64

and still ignoring my dwell command in the gcode to stop the motor and wait before locking the turret. Why does this work in the vismach sim but fail on my machine, which afaict is configured exactly the same way ???


 M66 P0 L3 Q60 ; wait for carousel finished
   
    M65 P0; stop carousel

should I change my current m64 g4 p5 to   

 M66 P1 L3 Q5 instead ?I keep getting locking failure because the motor keeps overshooting turret position. 
Last edit: 29 Nov 2022 00:09 by smc.collins.

Please Log in or Create an account to join the conversation.

More
29 Nov 2022 00:32 #257921 by andypugh

well, for sure, that's not the issue. I am not sure entirely why but the conv-float-32u seems to be adding joints everytime you move the turret.


I don't know what you mean by "adding joints".

ERROR: index out of range, 15 not in [0..10[ (increase num_dio/EMCOT_MAX=64





still ignoring my dwell command in the gcode to stop the motor and wait before locking the turret.


You seem to be combining G4 Pnn and M64/M65/M66 Pnn which seems to be having odd results.

I can see that the interpreter would be confused about this as it can't really tell whether the P is a length of pause or a digital output number.

Put the G4 Pnn on one line and the M65 Pnn on a different line (same for M66)

Please Log in or Create an account to join the conversation.

More
29 Nov 2022 00:48 #257923 by smc.collins
I've tried just a plain g4 pxx command, it ignores that as well

all of this is odd, these changes work in vismach sim, so either the sim is excessively fault tolerant, and that makes it useless for prototyping or I've stumbled onto some sort of failure mode that's not obvious

i did increase the num_dio to 64, just for shits and giggles, still getting errors, given the random numbers, it's probably some connection to float I'm to inexperienced to see.

Please Log in or Create an account to join the conversation.

More
29 Nov 2022 11:14 #257962 by andypugh
Are you sure you are editing the right file?
Are you sure the G4 is in the right place in the file?

Forget conv_float_s32 that has nothing at all to do with the error being reported.

It is saying that you are trying to access a DIO with an index higher than exists.

ie, somewhere there is a P-number that is too large in a DIO command.

This could happen if you have munged together a G4 P60 and an M66 P2 (for example) . The P-parameter is needed in both cases, but refers to different things.

Please Log in or Create an account to join the conversation.

More
29 Nov 2022 13:49 #257978 by smc.collins
IF Gcode it executed top to bottom left to right, the g4 pxxx is in the proper place, HOWEVER, the interpreter continues to ignore it. I did have a few M commands munged together.

Here is the clean up version of my ngc file, I am hoping that adding this line should create the pause. I have no IDEA why in vismach sim the g4 pxx commands work, but on my real hardware, they are ignored, every place I put them to slow the motion down.

M66 P0 L2 Q2 <
this line here should pause the machine for at least 2 seconds, m66 dio wait on input, p0 being the digital output we are watching, l2 going low from carousel and q2 is the hold time. after the wait time, the program should go back to executing.

If you see an error here, please highlight it in your reply.


o<toolchange> sub



; only unload the tool if there is a tool in the spindle
; This assumes that the carousel is already aligned correctly.
; It is important to unload the tool before shutting down the machine.



G53 G0 X16.00

O100 IF [#<selected_tool> GT 0]

M65 P1 ; unlock carousel
M66 P1 L4 Q1 ; wait for locked=false

O106 if [#5399 LT 0]
(abort, failed to unlock carousel)
O106 endif

M68 E0 Q#<selected_pocket> ;set the carousel to move to the right pocket

M64 P0 ; start carousel

M66 P0 L3 Q60 ; wait for carousel finished

M65 P0; stop carousel
M66 P0 L2 Q2 <
this line here should pause the machine for at least 2 seconds, m66 dio wait on input, p0 being the digital output we are watching, l2 going low from carousel and q2 is the hold time. after the wait time, the program should go back to executing.



M64 P1 ; lock carousel


M66 P1 L3 Q1 ; wait for locked=true
O108 if [#5399 LT 0]
(abort, failed to lock carousel)
O108 endif





O100 ENDIF





o<toolchange> endsub [1]


M2

Please Log in or Create an account to join the conversation.

More
29 Nov 2022 17:03 #257997 by andypugh

IF Gcode it executed top to bottom left to right, the g4 pxxx is in the proper place, HOWEVER, the interpreter continues to ignore it. I did have a few M commands munged together.


G-code does read top to bottom but not left to right. Each command has a priority and those with highest priority on a single line run first. (so, for example, S100 runs before M3)

M66 P0 L2 Q2 <


this line here should pause the machine for at least 2 seconds


It will pause for at _most_ 2 seconds, and for no time at all if input 0 is already low when it gets there.
If it takes more than 2 seconds for the pin value to be low, then a flag will be set in #5399

If you want an actual pause then use a G4 on a line by itself.

Please Log in or Create an account to join the conversation.

Moderators: piasdom
Time to create page: 0.330 seconds
Powered by Kunena Forum