SSI absolute encoders and analog servos

More
10 years 3 days ago #82163 by terkaa
I got it from freeby.mesanet.com/ssi_ss.zip

"Has bit and added source files for a 5i25/6i25 8xSSI+8xSSerial config for a 1 or 2 7I74s
(4 SSI+4SSerial per 7I74 SSI channels first on 7I74 (0..3), SSerial last (4..7))"

Filename is: 5i25_7i74_ssi_ssx2.bit

I believe it was created on 9 of april this year.

Tero

Please Log in to join the conversation.

More
10 years 3 days ago #82169 by terkaa
So I decided this morning to get rid of this problem. I built a completely new PC with ASUS N3150I-C motherboard. Everything is new also 6i25 PCIe card. Running in 5i25 mode. But same error is still present. So it is not about that it is something else. Latency test gave numbers under 15000. So what do we check next? New system phase-error

[IMG


Tero

Please Log in to join the conversation.

More
10 years 2 days ago #82186 by PCW
Strange, I guess I'll have to try an duplicate this,
does the error show up randomly or at startup?

Please Log in to join the conversation.

More
10 years 2 days ago #82188 by terkaa
It comes up at startup. Tried also setting timers after startup manually with halcmd but error came right after giving command.

Tero

Please Log in to join the conversation.

More
10 years 2 days ago #82224 by PCW
I tried a 6i25 SSI config with your bitfile but did not get any errors ( I used 4 24 bit SSI encoder channels since
that the specs of the SSI encoder i have, 400 KHZ so about 60 usec read time )

I was able to set the read time from -65 to -950 usec without error, and at 55 usec as expected I would get SSI errors.
I did notice a timebase offset due to clock mismatch (I fixed this small (20 usec) offset before testing)

I have an improved DPLL version that includes a integral term so will zero any small offsets (within the normal ~+- 0,75% range). Here is a bit file including this improved DPLL

freeby.mesanet.com/5i25_7i74_ssi_ssx2di.bit

If you still have errors with this bit file, can you post your exact current hal and ini files
so i can try and duplicate your entire setup

Please Log in to join the conversation.

More
10 years 2 days ago #82226 by terkaa
Any possibility that this is related To encoders? Here is data and settings of encoders I am using default ones 32 bit binary no parity.Timeouit 450us



Tero

Please Log in to join the conversation.

More
10 years 2 days ago #82231 by PCW
Theres nothing the SSI encoder can do to cause a time-out so no, its not encoder related.
however, i should test with your encoder parameters just in case theres some edge condition with 32 bit data

Please Log in to join the conversation.

More
9 years 11 months ago #82771 by terkaa
Ok, Tried this new bitfile. It was exactly same error at startup. Here is current INI and HAL:
Code:
# core HAL config file for simulation loadrt [KINS]KINEMATICS #autoconverted trivkins loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS unlock_joints_mask=8 loadrt hostmot2 loadrt hm2_pci config="ssi_chan_1=yencoder%32e ssi_chan_2=zencoder%32e ssi_chan_3=xencoder%32e num_encoders=1 num_pwmgens=0 num_stepgens=0 sserial_port_0=00010000 sserial_port_1=00200000" setp hm2_5i25.0.watchdog.timeout_ns 5000000 # load 6 differentiators (for velocity and accel signals # loadrt ddt names=ddt_x,ddt_xv,ddt_y,ddt_yv,ddt_z,ddt_zv # load additional blocks # loadrt hypot names=vel_xy,vel_xyz loadrt mux4 count=1 #SSI stuff #dpll base frq #setp hm2_5i25.0.dpll.base-freq-khz 1.007 setp hm2_5i25.0.dpll.02.timer-us -200 ##X-axis setp hm2_5i25.0.ssi.03.frequency-khz 400 setp hm2_5i25.0.ssi.03.timer-number 2 setp hm2_5i25.0.ssi.03.xencoder.scale -10000 ##Y-axis setp hm2_5i25.0.ssi.01.frequency-khz 400 setp hm2_5i25.0.ssi.01.timer-number 2 setp hm2_5i25.0.ssi.01.yencoder.scale 10000 ##Z-axis setp hm2_5i25.0.ssi.02.frequency-khz 400 setp hm2_5i25.0.ssi.02.timer-number 2 setp hm2_5i25.0.ssi.02.zencoder.scale -10000 #Load carousel loadrt carousel pockets=30 encoding=index num_sense=2 loadrt or2 count=3 loadrt not count=6 loadrt and2 count=7 loadrt oneshot loadrt weighted_sum wsum_sizes=13,16,7,10,4 loadrt armatc loadrt pinorient loadrt gearbox loadrt sum2_s32 loadrt toggle count=4 loadrt scale count=2 loadrt pid names=pid.x,pid.y,pid.z loadrt rotarylock # add motion controller functions to servo thread addf hm2_5i25.0.read servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread addf pid.x.do-pid-calcs servo-thread addf pid.y.do-pid-calcs servo-thread addf pid.z.do-pid-calcs servo-thread addf hm2_5i25.0.write servo-thread addf carousel.0 servo-thread addf or2.0 servo-thread addf or2.1 servo-thread addf or2.2 servo-thread addf armatc.0 servo-thread addf pinorient.0 servo-thread addf not.0 servo-thread addf not.1 servo-thread addf not.2 servo-thread addf not.3 servo-thread addf not.4 servo-thread addf not.5 servo-thread addf and2.0 servo-thread addf and2.1 servo-thread addf and2.2 servo-thread addf and2.3 servo-thread addf and2.4 servo-thread addf and2.5 servo-thread addf and2.6 servo-thread addf oneshot.0 servo-thread addf process_wsums servo-thread addf sum2-s32.0 servo-thread addf toggle.0 servo-thread addf toggle.1 servo-thread addf toggle.2 servo-thread addf toggle.3 servo-thread addf mux4.0 servo-thread addf gearbox.0 servo-thread addf scale.0 servo-thread addf scale.1 servo-thread addf rotarylock.0 servo-thread # OBSOLETE !!create HAL signals for position commands from motion module # loop position commands back to motion module feedback #net Xpos joint.0.motor-pos-cmd => joint.0.motor-pos-fb #net Ypos joint.1.motor-pos-cmd => joint.1.motor-pos-fb ddt_y.in #net Zpos joint.2.motor-pos-cmd => joint.2.motor-pos-fb net Bpos joint.3.motor-pos-cmd => joint.3.motor-pos-fb ##### My servo stuff encoder fb #net Ypos hm2_5i25.0.ssi.01.yencoder.position joint.1.motor-pos-fb #### Hard limits net Xposlim joint.0.pos-lim-sw-in hm2_5i25.0.7i70.0.2.input-01 net Xneglim joint.0.neg-lim-sw-in hm2_5i25.0.7i70.0.2.input-02 net Yneglim joint.1.neg-lim-sw-in hm2_5i25.0.7i70.0.2.input-03 net Yposlim joint.1.pos-lim-sw-in hm2_5i25.0.7i70.0.2.input-04 net Zneglim joint.2.neg-lim-sw-in hm2_5i25.0.7i70.0.2.input-06 net Zposlim joint.2.pos-lim-sw-in hm2_5i25.0.7i70.0.2.input-05 #******************* # AXIS X #******************* setp pid.x.Pgain [JOINT_0]P setp pid.x.Igain [JOINT_0]I setp pid.x.Dgain [JOINT_0]D setp pid.x.bias [JOINT_0]BIAS setp pid.x.FF0 [JOINT_0]FF0 setp pid.x.FF1 [JOINT_0]FF1 setp pid.x.FF2 [JOINT_0]FF2 setp pid.x.deadband [JOINT_0]DEADBAND setp pid.x.maxoutput [JOINT_0]MAX_OUTPUT setp pid.x.error-previous-target true net x-index-enable <=> pid.x.index-enable net x-enable => pid.x.enable net x-pos-cmd => pid.x.command net x-pos-fb => pid.x.feedback net x-output => pid.x.output # ---PWM Generator signals/setup--- setp hm2_5i25.0.7i83.0.1.analogout0-scalemax [JOINT_0]OUTPUT_SCALE setp hm2_5i25.0.7i83.0.1.analogout0-minlim [JOINT_0]OUTPUT_MIN_LIMIT setp hm2_5i25.0.7i83.0.1.analogout0-maxlim [JOINT_0]OUTPUT_MAX_LIMIT net x-output => hm2_5i25.0.7i83.0.1.analogout0 net x-pos-cmd joint.0.motor-pos-cmd net x-enable joint.0.amp-enable-out net x-enable hm2_5i25.0.7i83.0.1.analogena0 net x-fault joint.0.amp-fault-in hm2_5i25.0.7i70.0.2.input-42-not net error-reset halui.abort hm2_5i25.0.7i84.1.2.input-00 net error-reset hm2_5i25.0.7i71.0.4.output-24 # ---Encoder feedback signals/setup--- net x-pos-fb <= hm2_5i25.0.ssi.03.xencoder.position net x-pos-fb => joint.0.motor-pos-fb net x-pos-rawcounts <= hm2_5i25.0.ssi.03.xencoder.rawcounts #******************* # AXIS Y #******************* setp pid.y.Pgain [JOINT_1]P setp pid.y.Igain [JOINT_1]I setp pid.y.Dgain [JOINT_1]D setp pid.y.bias [JOINT_1]BIAS setp pid.y.FF0 [JOINT_1]FF0 setp pid.y.FF1 [JOINT_1]FF1 setp pid.y.FF2 [JOINT_1]FF2 setp pid.y.deadband [JOINT_1]DEADBAND setp pid.y.maxoutput [JOINT_1]MAX_OUTPUT setp pid.y.error-previous-target true net y-index-enable <=> pid.y.index-enable net y-enable => pid.y.enable net y-pos-cmd => pid.y.command net y-pos-fb => pid.y.feedback net y-output => pid.y.output # ---PWM Generator signals/setup--- setp hm2_5i25.0.7i83.0.1.analogout1-scalemax [JOINT_1]OUTPUT_SCALE setp hm2_5i25.0.7i83.0.1.analogout1-minlim [JOINT_1]OUTPUT_MIN_LIMIT setp hm2_5i25.0.7i83.0.1.analogout1-maxlim [JOINT_1]OUTPUT_MAX_LIMIT net y-output => hm2_5i25.0.7i83.0.1.analogout1 net y-pos-cmd joint.1.motor-pos-cmd net y-enable joint.1.amp-enable-out net y-enable hm2_5i25.0.7i83.0.1.analogena1 net y-fault joint.1.amp-fault-in hm2_5i25.0.7i70.0.2.input-43-not net error-reset hm2_5i25.0.7i71.0.4.output-25 net machine-enabled halui.home-all armatc.0.machine-is-on halui.machine.is-on net machine-enabled not.5.in net error-reset and2.6.in0 net machine-is-off and2.6.in1 not.5.out net machine-on halui.machine.on and2.6.out # ---Encoder feedback signals/setup--- net y-pos-fb <= hm2_5i25.0.ssi.01.yencoder.position net y-pos-fb => joint.1.motor-pos-fb net y-pos-rawcounts <= hm2_5i25.0.ssi.01.yencoder.rawcounts #******************* # AXIS Z #******************* setp pid.z.Pgain [JOINT_2]P setp pid.z.Igain [JOINT_2]I setp pid.z.Dgain [JOINT_2]D setp pid.z.bias [JOINT_2]BIAS setp pid.z.FF0 [JOINT_2]FF0 setp pid.z.FF1 [JOINT_2]FF1 setp pid.z.FF2 [JOINT_2]FF2 setp pid.z.deadband [JOINT_2]DEADBAND setp pid.z.maxoutput [JOINT_2]MAX_OUTPUT setp pid.z.error-previous-target true net z-index-enable <=> pid.z.index-enable net z-enable => pid.z.enable net z-pos-cmd => pid.z.command net z-pos-fb => pid.z.feedback net z-output => pid.z.output # ---PWM Generator signals/setup--- setp hm2_5i25.0.7i83.0.1.analogout2-scalemax [JOINT_2]OUTPUT_SCALE setp hm2_5i25.0.7i83.0.1.analogout2-minlim [JOINT_2]OUTPUT_MIN_LIMIT setp hm2_5i25.0.7i83.0.1.analogout2-maxlim [JOINT_2]OUTPUT_MAX_LIMIT net z-output => hm2_5i25.0.7i83.0.1.analogout2 net z-pos-cmd joint.2.motor-pos-cmd net z-enable joint.2.amp-enable-out net z-enable hm2_5i25.0.7i83.0.1.analogena2 net z-fault joint.2.amp-fault-in hm2_5i25.0.7i70.0.2.input-44-not net error-reset hm2_5i25.0.7i71.0.4.output-26 # ---Encoder feedback signals/setup--- net z-pos-fb <= hm2_5i25.0.ssi.02.zencoder.position net z-pos-fb => joint.2.motor-pos-fb net z-pos-rawcounts <= hm2_5i25.0.ssi.02.zencoder.rawcounts #******************* # AXIS A #******************* net a_unlock_req rotarylock.0.unlock-request joint.3.unlock net a_unlock hm2_5i25.0.7i71.0.4.output-02 rotarylock.0.unlock net a_lock hm2_5i25.0.7i71.0.4.output-00 rotarylock.0.lock net a_unlock_sw hm2_5i25.0.7i70.0.2.input-35 rotarylock.0.unlock-sw net a_lock_sw hm2_5i25.0.7i70.0.2.input-36 rotarylock.0.lock-sw net a_unlocked joint.3.is-unlocked rotarylock.0.is-unlocked net error-reset hm2_5i25.0.7i71.0.4.output-27 # estop loopback net ext_estop iocontrol.0.emc-enable-in hm2_5i25.0.7i70.0.2.input-47 net estop-loop oneshot.0.in hm2_5i25.0.7i71.0.4.output-19 iocontrol.0.user-enable-out # create signals for tool loading loopback net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared #net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed net spindle-fwd motion.spindle-forward net spindle-rev motion.spindle-reverse #net spindle-speed motion.spindle-speed-out net lube iocontrol.0.lube #net flood iocontrol.0.coolant-flood net mist iocontrol.0.coolant-mist #my stuff #net estop_on not.0.in halui.estop.is-activated #net hydraulic_on hm2_5i25.0.7i71.0.4.output-19 iocontrol.0.user-enable-out #******************* # SPINDLE #******************* setp scale.0.gain 0.0028 net spindle_low_speed hm2_5i25.0.7i71.0.4.output-04 gearbox.0.low-gear net spindle_high_speed hm2_5i25.0.7i71.0.4.output-03 gearbox.0.high-gear net low_gear_in gearbox.0.low-gear-sense hm2_5i25.0.7i70.0.2.input-09 net high_gear_in gearbox.0.high-gear-sense hm2_5i25.0.7i70.0.2.input-11 net spindle_speed_in gearbox.0.speed-command motion.spindle-speed-out net spindle_on gearbox.0.spindle-on hm2_5i25.0.7i83.0.1.analogena4 motion.spindle-on net spindle-speed-scale gearbox.0.motor-speed => scale.0.in net spindle-speed-DAC scale.0.out => hm2_5i25.0.7i83.0.1.analogout4 net spindle-fault motion.enable hm2_5i25.0.7i70.0.2.input-46 net spindle-fault-not hm2_5i25.0.7i70.0.2.input-46-not net spindle-atspeed motion.spindle-at-speed hm2_5i25.0.7i70.0.2.input-41 net error-reset hm2_5i25.0.7i71.0.4.output-28 #carousel & ATC setp oneshot.0.width 1 net atc_enable armatc.0.enable iocontrol.0.tool-change net atc_ready iocontrol.0.tool-changed armatc.0.ready net atc_magazine_cw hm2_5i25.0.7i71.0.4.output-17 carousel.0.motor-fwd net atc_magazine_ccw hm2_5i25.0.7i71.0.4.output-18 carousel.0.motor-rev net magazine_home_sw carousel.0.sense-0 hm2_5i25.0.7i70.0.2.input-33 net magazine_pocket_sw carousel.0.sense-1 hm2_5i25.0.7i70.0.2.input-32 net magazine_jog_fwd carousel.0.jog-fwd armatc.0.magazine-cw net magazine_jog_rev carousel.0.jog-rev armatc.0.magazine-ccw net magazine_jog_button_ccw armatc.0.jog-cw-button hm2_5i25.0.7i70.0.2.input-17 net magazine_jog_button_cw armatc.0.jog-ccw-button hm2_5i25.0.7i70.0.2.input-18 net magazine_enabled carousel.0.enable armatc.0.magazine-enable net atc_magazine_shotpin_advance hm2_5i25.0.7i71.0.4.output-16 armatc.0.magazine-shotpin-advance net manual_mode armatc.0.is-manual-mode halui.mode.is-manual net magazine_homed armatc.0.magazine-homed carousel.0.homed net atc_arm_to_magazine hm2_5i25.0.7i71.0.4.output-09 armatc.0.arm-to-magazine net atc_arm_to_spindle hm2_5i25.0.7i71.0.4.output-10 armatc.0.arm-to-spindle net atc_arm_vertical hm2_5i25.0.7i71.0.4.output-13 armatc.0.arm-vertical net atc_arm_horizontal hm2_5i25.0.7i71.0.4.output-12 armatc.0.arm-horizontal net atc_arm_180_deg_pin hm2_5i25.0.7i71.0.4.output-11 armatc.0.arm-180-deg-pin net atc_arm_advance hm2_5i25.0.7i71.0.4.output-14 armatc.0.arm-advance net atc_arm_retract hm2_5i25.0.7i71.0.4.output-15 armatc.0.arm-retract net atc_hand1_unlock hm2_5i25.0.7i71.0.4.output-07 armatc.0.magazine-cam-advance net atc_hand2_unlock hm2_5i25.0.7i71.0.4.output-08 armatc.0.spindle-cam-advance net atc_airblow hm2_5i25.0.7i71.0.4.output-01 armatc.0.spindle-airblow #net atc-enabled halui.machine.is-on net atc_magazine_rq_pot_number carousel.0.pocket-number armatc.0.req-magazine-pot-number net atc_magazine_current_pot armatc.0.current-magazine-pot-no carousel.0.current-position net next_tool_no armatc.0.tool-request-no iocontrol.0.tool-prep-number net current_tool_no armatc.0.spindle-tool-no iocontrol.0.tool-number net atc_magazine_ready armatc.0.magazine-ready carousel.0.ready net atc_magazine_active armatc.0.magazine-active carousel.0.active net atc_tool_is_clamp armatc.0.tool-is-clamped hm2_5i25.0.7i70.0.2.input-14 net atc_tool_is_unclamp armatc.0.tool-is-unclamped hm2_5i25.0.7i70.0.2.input-15 net atc_mag_unlock_ret armatc.0.magazine-cam-is-retracted hm2_5i25.0.7i70.0.2.input-19 net atc_mag_unlock_adv armatc.0.magazine-cam-is-advanced hm2_5i25.0.7i70.0.2.input-20 net atc_spdl_unlock_ret armatc.0.spindle-cam-is-retracted hm2_5i25.0.7i70.0.2.input-21 net atc_spdl_unlock_adv armatc.0.spindle-cam-is-advanced hm2_5i25.0.7i70.0.2.input-22 net atc_arm_at_magazine armatc.0.arm-is-at-magazine hm2_5i25.0.7i70.0.2.input-23 net atc_arm_at_spindle armatc.0.arm-is-at-spindle hm2_5i25.0.7i70.0.2.input-24 net atc_arm_is_vertical armatc.0.arm-is-vertical hm2_5i25.0.7i70.0.2.input-25 net atc_180_deg_pin_in armatc.0.arm-180-deg-pin-is-in hm2_5i25.0.7i70.0.2.input-26 net atc_arm1_is_horizontal armatc.0.arm1-is-horizontal hm2_5i25.0.7i70.0.2.input-27 net atc_arm2_is_horizontal armatc.0.arm2-is-horizontal hm2_5i25.0.7i70.0.2.input-28 net atc_arm_is-retract armatc.0.arm-is-retracted hm2_5i25.0.7i70.0.2.input-29 net atc_arm_is_advance armatc.0.arm-is-advanced hm2_5i25.0.7i70.0.2.input-30 #net magazine_shotpin_in armatc.0.magazine-shotpin-is-in #net atc_180_deg_pin_out armatc.0.arm-180-deg-pin-is-out #net atc_arm_retract armatc.0.arm-is-retracted #net atc_arm_advance armatc.0.arm-is-advanced net atc_magazine_shotpin_in armatc.0.magazine-shotpin-is-in hm2_5i25.0.7i70.0.2.input-34 net atc_tool_unclamp or2.0.in0 armatc.0.tool-unclamp net atc_unclamp_button or2.0.in1 hm2_5i25.0.7i84.1.2.input-27 net tool_unclamp hm2_5i25.0.7i71.0.4.output-06 or2.0.out net force_input_0 wsum.4.bit.0.in hm2_5i25.0.7i70.0.2.input-40 net force_input_1 wsum.4.bit.1.in hm2_5i25.0.7i70.0.2.input-39 net force_input_2 wsum.4.bit.2.in hm2_5i25.0.7i70.0.2.input-38 net force_input_3 wsum.4.bit.3.in hm2_5i25.0.7i70.0.2.input-37 #spindle_orient net spindle_orient_pin_advance hm2_5i25.0.7i71.0.4.output-05 pinorient.0.orient-pin-advance net spindle_orient_pin_in pinorient.0.orient-pin-in hm2_5i25.0.7i70.0.2.input-12 net spindle_orient_pin_out pinorient.0.orient-pin-out hm2_5i25.0.7i70.0.2.input-13 net spindle_is_orient armatc.0.spindle-is-orient pinorient.0.oriented net spindle_running pinorient.0.spindle-is-on halui.spindle.is-on #net spindle_orient_out armatc.0.spindle-orient-request #######Overrides #Spindle setp halui.spindle-override.direct-value 1 setp halui.spindle-override.scale 0.1 setp halui.spindle-override.count-enable 1 setp wsum.0.bit.0.weight 5 setp wsum.0.bit.1.weight 7 setp wsum.0.bit.2.weight 8 setp wsum.0.bit.3.weight 9 setp wsum.0.bit.4.weight 10 setp wsum.0.bit.5.weight 11 setp wsum.0.bit.6.weight 12 setp wsum.0.bit.7.weight 13 setp wsum.0.bit.8.weight 14 setp wsum.0.bit.9.weight 15 setp wsum.0.bit.10.weight 16 setp wsum.0.bit.11.weight 18 setp wsum.0.bit.12.weight 20 net bit0-spindle wsum.0.bit.0.in <= hm2_5i25.0.7i70.1.4.input-10 net bit1-spindle wsum.0.bit.1.in <= hm2_5i25.0.7i70.1.4.input-11 net bit2-spindle wsum.0.bit.2.in <= hm2_5i25.0.7i70.1.4.input-12 net bit3-spindle wsum.0.bit.3.in <= hm2_5i25.0.7i70.1.4.input-13 net bit4-spindle wsum.0.bit.4.in <= hm2_5i25.0.7i70.1.4.input-14 net bit5-spindle wsum.0.bit.5.in <= hm2_5i25.0.7i70.1.4.input-15 net bit6-spindle wsum.0.bit.6.in <= hm2_5i25.0.7i70.1.4.input-16 net bit7-spindle wsum.0.bit.7.in <= hm2_5i25.0.7i70.1.4.input-17 net bit8-spindle wsum.0.bit.8.in <= hm2_5i25.0.7i70.1.4.input-18 net bit9-spindle wsum.0.bit.9.in <= hm2_5i25.0.7i70.1.4.input-19 net bit10-spindle wsum.0.bit.10.in <= hm2_5i25.0.7i70.1.4.input-20 net bit11-spindle wsum.0.bit.11.in <= hm2_5i25.0.7i70.1.4.input-21 net bit12-spindle wsum.0.bit.12.in <= hm2_5i25.0.7i70.1.4.input-22 net spindle-ov-out halui.spindle-override.counts wsum.0.sum #Feed Rate setp halui.feed-override.direct-value 1 setp halui.feed-override.scale 0.01 setp halui.feed-override.count-enable 1 setp wsum.1.bit.0.weight 0 setp wsum.1.bit.1.weight 5 setp wsum.1.bit.2.weight 10 setp wsum.1.bit.3.weight 20 setp wsum.1.bit.4.weight 30 setp wsum.1.bit.5.weight 40 setp wsum.1.bit.6.weight 50 setp wsum.1.bit.7.weight 60 setp wsum.1.bit.8.weight 70 setp wsum.1.bit.9.weight 80 setp wsum.1.bit.10.weight 90 setp wsum.1.bit.11.weight 95 setp wsum.1.bit.12.weight 100 setp wsum.1.bit.13.weight 105 setp wsum.1.bit.14.weight 110 setp wsum.1.bit.15.weight 120 setp wsum.2.bit.0.weight 130 setp wsum.2.bit.1.weight 140 setp wsum.2.bit.2.weight 150 setp wsum.2.bit.3.weight 160 setp wsum.2.bit.4.weight 170 setp wsum.2.bit.5.weight 180 setp wsum.2.bit.6.weight 200 net bit0-feedrate wsum.1.bit.0.in <= hm2_5i25.0.7i70.1.4.input-24 net bit1-feedrate wsum.1.bit.1.in <= hm2_5i25.0.7i70.1.4.input-25 net bit2-feedrate wsum.1.bit.2.in <= hm2_5i25.0.7i70.1.4.input-26 net bit3-feedrate wsum.1.bit.3.in <= hm2_5i25.0.7i70.1.4.input-27 net bit4-feedrate wsum.1.bit.4.in <= hm2_5i25.0.7i70.1.4.input-28 net bit5-feedrate wsum.1.bit.5.in <= hm2_5i25.0.7i70.1.4.input-29 net bit6-feedrate wsum.1.bit.6.in <= hm2_5i25.0.7i70.1.4.input-30 net bit7-feedrate wsum.1.bit.7.in <= hm2_5i25.0.7i70.1.4.input-31 net bit8-feedrate wsum.1.bit.8.in <= hm2_5i25.0.7i70.1.4.input-32 net bit9-feedrate wsum.1.bit.9.in <= hm2_5i25.0.7i70.1.4.input-33 net bit10-feedrate wsum.1.bit.10.in <= hm2_5i25.0.7i70.1.4.input-34 net bit11-feedrate wsum.1.bit.11.in <= hm2_5i25.0.7i70.1.4.input-35 net bit12-feedrate wsum.1.bit.12.in <= hm2_5i25.0.7i70.1.4.input-36 net bit13-feedrate wsum.1.bit.13.in <= hm2_5i25.0.7i70.1.4.input-37 net bit14-feedrate wsum.1.bit.14.in <= hm2_5i25.0.7i70.1.4.input-38 net bit15-feedrate wsum.1.bit.15.in <= hm2_5i25.0.7i70.1.4.input-39 net bit16-feedrate wsum.2.bit.0.in <= hm2_5i25.0.7i70.1.4.input-40 net bit17-feedrate wsum.2.bit.1.in <= hm2_5i25.0.7i70.1.4.input-41 net bit18-feedrate wsum.2.bit.2.in <= hm2_5i25.0.7i70.1.4.input-42 net bit19-feedrate wsum.2.bit.3.in <= hm2_5i25.0.7i70.1.4.input-43 net bit20-feedrate wsum.2.bit.4.in <= hm2_5i25.0.7i70.1.4.input-44 net bit21-feedrate wsum.2.bit.5.in <= hm2_5i25.0.7i70.1.4.input-45 net bit22-feedrate wsum.2.bit.6.in <= hm2_5i25.0.7i70.1.4.input-46 net wsum1-to-float sum2-s32.0.in0 <= wsum.1.sum net wsum2-to-float sum2-s32.0.in1 <= wsum.2.sum net feed-ov-out halui.feed-override.counts sum2-s32.0.out #Rapids setp halui.max-velocity.direct-value 1 setp halui.max-velocity.scale 1.34 setp halui.max-velocity.count-enable 1 setp wsum.3.bit.0.weight 0 setp wsum.3.bit.1.weight 1 setp wsum.3.bit.2.weight 5 setp wsum.3.bit.3.weight 10 setp wsum.3.bit.4.weight 30 setp wsum.3.bit.5.weight 50 setp wsum.3.bit.6.weight 70 setp wsum.3.bit.7.weight 80 setp wsum.3.bit.8.weight 90 setp wsum.3.bit.9.weight 100 net bit0-rapid wsum.3.bit.0.in <= hm2_5i25.0.7i70.1.4.input-00 net bit1-rapid wsum.3.bit.1.in <= hm2_5i25.0.7i70.1.4.input-01 net bit2-rapid wsum.3.bit.2.in <= hm2_5i25.0.7i70.1.4.input-02 net bit3-rapid wsum.3.bit.3.in <= hm2_5i25.0.7i70.1.4.input-03 net bit4-rapid wsum.3.bit.4.in <= hm2_5i25.0.7i70.1.4.input-04 net bit5-rapid wsum.3.bit.5.in <= hm2_5i25.0.7i70.1.4.input-05 net bit6-rapid wsum.3.bit.6.in <= hm2_5i25.0.7i70.1.4.input-06 net bit7-rapid wsum.3.bit.7.in <= hm2_5i25.0.7i70.1.4.input-07 net bit8-rapid wsum.3.bit.8.in <= hm2_5i25.0.7i70.1.4.input-08 net bit9-rapid wsum.3.bit.9.in <= hm2_5i25.0.7i70.1.4.input-09 net rapid-ov-out halui.max-velocity.counts wsum.3.sum #Okuma panel net coolant_button toggle.0.in hm2_5i25.0.7i84.1.2.input-13 net coolant_out halui.flood.on not.0.in toggle.0.out net coolant_on hm2_5i25.0.7i84.1.2.output-13 hm2_5i25.0.7i71.0.4.output-20 iocontrol.0.coolant-flood net coolant_off halui.flood.off not.0.out net wlight_button toggle.1.in hm2_5i25.0.7i84.1.2.input-14 net wlight_out hm2_5i25.0.7i84.1.2.output-14 hm2_5i25.0.7i71.0.4.output-23 toggle.1.out net x_jog_but halui.axis.x.select hm2_5i25.0.7i84.1.2.input-01 net y_jog_but halui.axis.y.select hm2_5i25.0.7i84.1.2.input-02 net z_jog_but halui.axis.z.select hm2_5i25.0.7i84.1.2.input-03 net mpg_but and2.0.in0 and2.1.in0 not.1.in hm2_5i25.0.7i84.1.2.input-05 net mpg_lt hm2_5i25.0.7i84.1.2.output-04 not.1.out net jog_minus_but and2.0.in1 hm2_5i25.0.7i84.1.2.input-06 net jog_minus_and halui.axis.selected.minus and2.0.out net jog_plus_but and2.1.in1 hm2_5i25.0.7i84.1.2.input-24 net jog_plus_and halui.axis.selected.plus and2.1.out net x_jog_led hm2_5i25.0.7i84.1.2.output-00 halui.axis.x.is-selected net y_jog_led hm2_5i25.0.7i84.1.2.output-01 halui.axis.y.is-selected net z_jog_led hm2_5i25.0.7i84.1.2.output-02 halui.axis.z.is-selected net spindle_fw halui.spindle.forward hm2_5i25.0.7i84.1.2.input-08 net spindle_rv halui.spindle.reverse hm2_5i25.0.7i84.1.2.input-09 net spindle_st halui.spindle.stop hm2_5i25.0.7i84.1.2.input-10 net spindle_fw_led hm2_5i25.0.7i84.1.2.output-11 halui.spindle.runs-forward net spindle_rv_led hm2_5i25.0.7i84.1.2.output-10 halui.spindle.runs-backward net spindle_orient_button toggle.2.in hm2_5i25.0.7i84.1.2.input-11 net spindle_orient_or1 or2.1.in1 armatc.0.spindle-orient-request net spindle_orient_or2 or2.1.in0 toggle.2.out net spindle_orient_enab pinorient.0.enable or2.1.out #net spindle_orient_out hm2_5i25.0.7i84.1.2.output-09 pinorient.0.orient-pin-advance net atc_step_forward armatc.0.ext-step-forward hm2_5i25.0.7i84.1.2.input-07 net atc_step_reverse armatc.0.ext-step-reverse hm2_5i25.0.7i84.1.2.input-15 net atc_sel hm2_5i25.0.7i84.1.2.input-12 setp scale.1.gain 60 net jog_spd_scale_in scale.1.in halui.max-velocity.value net jog_spd halui.axis.jog-speed scale.1.out net m_lock hm2_5i25.0.7i84.1.2.output-12 hm2_5i25.0.7i84.1.2.input-26 net cycle_start_button hm2_5i25.0.7i70.1.4.input-23 net s_block_button toggle.3.in hm2_5i25.0.7i84.1.2.input-25 net s_block_toggled and2.2.in1 not.2.in hm2_5i25.0.7i84.1.2.output-08 toggle.3.out net cycle_start_button and2.2.in0 and2.3.in0 and2.4.in0 and2.5.in0 net s_block_step halui.program.step and2.2.out net s_block_not and2.3.in1 not.2.out net not_paused and2.4.in1 not.3.out net cycle_start halui.program.run and2.4.out net feed_hold halui.program.pause hm2_5i25.0.7i70.1.4.input-47 net feed_resume_in1 and2.5.in1 not.3.in halui.program.is-paused net feed_resume halui.program.resume and2.5.out net atc_reverse_ok hm2_5i25.0.7i84.1.2.output-07 armatc.0.step-reverse-led net atc_forward_ok hm2_5i25.0.7i84.1.2.output-06 armatc.0.step-forward-led #######Mode buttons net auto_mode_button halui.mode.auto hm2_5i25.0.7i84.1.2.input-28 net mdi_mode_button halui.mode.mdi hm2_5i25.0.7i84.1.2.input-30 net man_mode_button halui.mode.manual hm2_5i25.0.7i84.1.2.input-29 net manual_mode hm2_5i25.0.7i84.1.2.output-15 net auto_mode halui.mode.is-auto hm2_5i25.0.7i84.1.2.output-05 net mdi_mode hm2_5i25.0.7i84.1.2.output-03 halui.mode.is-mdi net tools_edit hm2_5i25.0.7i84.1.2.input-31 net zero_edit hm2_5i25.0.7i84.1.2.input-04 ####MPG stuff # This sets the scale that will be used based on the input to the mux4 setp mux4.0.in0 0.1 setp mux4.0.in1 0.01 setp mux4.0.in2 0.001 # Scaling inputs to the mux4 component net scale1 mux4.0.sel0 <= hm2_5i25.0.7i84.1.2.input-22 net scale2 mux4.0.sel1 <= hm2_5i25.0.7i84.1.2.input-23 # The output from the mux4 is sent to each axis jog scale net selected-jog-incr <= mux4.0.out # ---jogwheel signals to mesa encoder - shared MPG--- net joint-selected-count <= hm2_5i25.0.7i84.1.2.enc0.count #setp hm2_5i25.0.encoder.00.filter true #setp hm2_5i25.0.encoder.00.counter-mode true # ---mpg signals--- # for axis x MPG setp joint.0.jog-vel-mode 0 setp axis.x.jog-vel-mode 0 net selected-jog-incr => joint.0.jog-scale axis.x.jog-scale net joint-select-a => axis.x.jog-enable net joint-selected-count => joint.0.jog-counts axis.x.jog-counts # for axis y MPG setp joint.1.jog-vel-mode 0 setp axis.y.jog-vel-mode 0 net selected-jog-incr => joint.1.jog-scale axis.y.jog-scale net joint-select-b => axis.y.jog-enable net joint-selected-count => joint.1.jog-counts axis.y.jog-counts # for axis z MPG setp joint.2.jog-vel-mode 0 setp axis.z.jog-vel-mode 0 net selected-jog-incr => joint.2.jog-scale axis.z.jog-scale net joint-select-c => axis.z.jog-enable net joint-selected-count => joint.2.jog-counts axis.z.jog-counts # --- JOINT-SELECT-a-X --- net joint-select-a <= hm2_5i25.0.7i84.1.2.input-19 # --- JOINT-SELECT-b-Y --- net joint-select-b <= hm2_5i25.0.7i84.1.2.input-18 # --- JOINT-SELECT-c-Z --- net joint-select-c <= hm2_5i25.0.7i84.1.2.input-20 # --- JOINT-SELECT-d-B --- net joint-select-d <= hm2_5i25.0.7i84.1.2.input-21

Code:
########### INI # This config file was created 2016-09-20 11:38:27.819741 by the update_ini script # The original config files may be found in the /home/cinci/linuxcnc/configs/sim.gscreen/gscreen_mm.old directory # EMC controller parameters for a simulated machine. # General note: Comments can either be preceded with a # or ; - either is # acceptable, although # is in keeping with most linux config files. # General section ------------------------------------------------------------- [EMC] # Version of this INI file VERSION = 1.0 # Name of machine, for use with display, etc. MACHINE = LinuxCNC-HAL-SIM-AXIS # Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others # DEBUG = 0x7FFFFFFF DEBUG = 0 # Sections for display options ------------------------------------------------ [DISPLAY] ; -c sets the glade and handler file to load -d is to display extra debug messages ; In this case the glade and handler file are named gscreen so we don't need -c DISPLAY = gmoccapy # Cycle time, in milliseconds, that display will sleep between polls CYCLE_TIME = 100 # Highest / lowest value that will be allowed for overrides, 1.0 = 100% MAX_SPINDLE_OVERRIDE = 2.0 MIN_SPINDLE_OVERRIDE = .5 MAX_FEED_OVERRIDE = 2.0 # Max and default jog speeds in units per second MAX_LINEAR_VELOCITY = 130 DEFAULT_LINEAR_VELOCITY = 130 MAX_ANGULAR_VELOCITY = 234 DEFAULT_ANGULAR_VELOCITY = 23 # list of selectable jog increments INCREMENTS = .01mm, .1mm, 1mm, 10mm ANGULAR_INCREMENTS = 1deg # Prefix to be used PROGRAM_PREFIX = /home/cinci/linuxcnc/nc_files/eka # Introductory graphic INTRO_GRAPHIC = linuxcnc.gif INTRO_TIME = 5 #Messages #Spindle Alarm MESSAGE_BOLDTEXT = NONE MESSAGE_TEXT = Karavahvistin vika! MESSAGE_TYPE = status MESSAGE_PINNAME = spindle_alarm #Hydraulic motor overload MESSAGE_BOLDTEXT = NONE MESSAGE_TEXT = Hydraulic Motor Overload! MESSAGE_TYPE = status MESSAGE_PINNAME = hyd_overload #Way Lube MESSAGE_BOLDTEXT = NONE MESSAGE_TEXT = Lube Level! MESSAGE_TYPE = status MESSAGE_PINNAME = lube_level EMBED_TAB_NAME = ATC EMBED_TAB_LOCATION = ntb_user_tabs EMBED_TAB_COMMAND=halcmd loadusr -Wn gladevcp gladevcp -c atc_panel -H atc_panel.hal -u atc_panel.py -x {XID} atc_panel.glade EMBED_TAB_NAME = SPINDLE EMBED_TAB_LOCATION = ntb_user_tabs EMBED_TAB_COMMAND=gladevcp -x {XID} -H spindle_box.hal spindle_box.glade [FILTER] PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image PROGRAM_EXTENSION = .py Python Script png = image-to-gcode gif = image-to-gcode jpg = image-to-gcode py = python # Task controller section ----------------------------------------------------- [RS274NGC] SUBROUTINE_PATH = macros REMAP=M6 modalgroup=6 ngc=change # File containing interpreter variables PARAMETER_FILE = cinci.var # Motion control section ------------------------------------------------------ [EMCMOT] EMCMOT = motmod # Timeout for comm to emcmot, in seconds COMM_TIMEOUT = 1.0 # Interval between tries to emcmot, in seconds COMM_WAIT = 0.010 # BASE_PERIOD is unused in this configuration but specified in core_sim.hal BASE_PERIOD = 0 # Servo task period, in nano-seconds SERVO_PERIOD = 1000000 # Hardware Abstraction Layer section -------------------------------------------------- [TASK] # Name of task controller program, e.g., milltask TASK = milltask # Cycle time, in seconds, that task controller will sleep between polls CYCLE_TIME = 0.001 # Part program interpreter section -------------------------------------------- [HAL] # The run script first uses halcmd to execute any HALFILE # files, and then to execute any individual HALCMD commands. # # list of hal config files to run through halcmd # files are executed in the order in which they appear HALFILE = core_sim4.hal #HALFILE = sim_spindle_encoder.hal #HALFILE = axis_manualtoolchange.hal #HALFILE = simulated_home.hal # list of halcmd commands to execute # commands are executed in the order in which they appear #HALCMD = save neta # Single file that is executed after the GUI has started. Only supported by # AXIS at this time (only AXIS creates a HAL component of its own) #POSTGUI_HALFILE = test_postgui.hal HALUI = halui [HALUI] MDI_COMMAND = M61 Q#4999 # Trajectory planner section -------------------------------------------------- [TRAJ] AXES = 4 COORDINATES = X Y Z B HOME = 0 0 0 0 LINEAR_UNITS = mm ANGULAR_UNITS = degree CYCLE_TIME = 0.010 MAX_LINEAR_VELOCITY = 134 DEFAULT_LINEAR_VELOCITY = 130 DEFAULT_ACCELERATION = 268 MAX_LINEAR_ACCELERATION = 268 #POSITION_FILE = position_mm.txt NO_FORCE_HOMING = 1 # Axes sections --------------------------------------------------------------- # First axis [EMCIO] # Name of IO controller program, e.g., io EMCIO = io # cycle time, in seconds CYCLE_TIME = 0.100 # tool table file TOOL_TABLE = sim_mm.tbl TOOL_CHANGE_POSITION = -550 500 -80 [KINS] KINEMATICS = trivkins #This is a best-guess at the number of joints, it should be checked JOINTS = 4 [AXIS_X] MIN_LIMIT = -2902 MAX_LIMIT = -508 MAX_VELOCITY = 134 MAX_ACCELERATION = 268 [JOINT_0] TYPE = LINEAR HOME = 0.000 MAX_VELOCITY = 134 MAX_ACCELERATION = 268 P = 0.398 I = 0.5 D = 0.0 FF0 = 0.0 FF1 = 0.053 FF2 = 0.00074 BIAS = 0.0 DEADBAND = 0.0005 BACKLASH = 0.000 MAX_OUTPUT = 10.0 OUTPUT_MIN_LIMIT = -10.0 OUTPUT_MAX_LIMIT = 10.0 INPUT_SCALE = 1.000 OUTPUT_SCALE = -10.000 MIN_LIMIT = -2902 MAX_LIMIT = -508 FERROR = 1.0 MIN_FERROR = 0.4 HOME_OFFSET = 0.0 HOME_SEARCH_VEL = 0 HOME_LATCH_VEL = 0 HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = NO HOME_SEQUENCE = 0 HOME_ABSOLUTE_ENCODER = 2 # Second axis [AXIS_Y] MIN_LIMIT = 181 MAX_LIMIT = 1200 MAX_VELOCITY = 134 MAX_ACCELERATION = 268 [JOINT_1] TYPE = LINEAR HOME = 0.000 MAX_VELOCITY = 134 MAX_ACCELERATION = 268 P = 0.95 I = 0.10 D = 0.0 FF0 = 0.0 FF1 = 0.055 FF2 = 0.0 BIAS = 0.0 DEADBAND = 0.0001 BACKLASH = 0.000 MAX_OUTPUT = 10.0 OUTPUT_MIN_LIMIT = -10.0 OUTPUT_MAX_LIMIT = 10.0 INPUT_SCALE = 1.000 OUTPUT_SCALE = -10.000 MIN_LIMIT = 181 MAX_LIMIT = 1200 FERROR = 0.8 MIN_FERROR = 0.2 HOME_OFFSET = 0.0 HOME_SEARCH_VEL = 0 HOME_LATCH_VEL = 0 HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = NO HOME_SEQUENCE = 0 HOME_ABSOLUTE_ENCODER = 2 # Third axis [AXIS_Z] MIN_LIMIT = -860 MAX_LIMIT = -70 MAX_VELOCITY = 117 MAX_ACCELERATION = 233 [JOINT_2] TYPE = LINEAR HOME = 0 MAX_VELOCITY = 117 MAX_ACCELERATION = 233 P = 0.38 I = 0.13 D = 0.0 FF0 = 0.0 FF1 = 0.0546 FF2 = 0.0002 BIAS = 0.0000 DEADBAND = 0.0002 BACKLASH = 0.000 MAX_OUTPUT = 10.0 OUTPUT_MIN_LIMIT = -10.0 OUTPUT_MAX_LIMIT = 10.0 INPUT_SCALE = 1.000 OUTPUT_SCALE = 10.000 MIN_LIMIT = -860 MAX_LIMIT = -70 FERROR = 0.9 MIN_FERROR = 0.3 HOME_OFFSET = 0.0 HOME_SEARCH_VEL = 0 HOME_LATCH_VEL = 0 HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = NO HOME_SEQUENCE = 0 HOME_ABSOLUTE_ENCODER = 2 #rotary [AXIS_B] MAX_VELOCITY = 90.0 MAX_ACCELERATION = 1200.0 LOCKING_INDEXER_JOINT = 3 [JOINT_3] TYPE = ANGULAR HOME = 0.0 MAX_VELOCITY = 90.0 MAX_ACCELERATION = 1200.0 BACKLASH = 0.000 INPUT_SCALE = 157.48 OUTPUT_SCALE = 1.000 FERROR = 5.0 MIN_FERROR = 1.0 HOME_OFFSET = 0.0 HOME_SEARCH_VEL = 0.0 HOME_LATCH_VEL = 0.0 HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = NO HOME_SEQUENCE = 0 WRAPPED_ROTARY = 1 LOCKING_INDEXER = 1 HOME_ABSOLUTE_ENCODER = 2 # section for main IO controller parameters -----------------------------------

Please Log in to join the conversation.

More
9 years 11 months ago #82781 by PCW
I cannot duplicate this (4x 32 bit encoders, 100s of start-up cycles >1 week uptime)

Your DPLL plot shows that the DPLL was locked so the error seems to be start-up only

I wonder if there's a badly behaved component that's delaying the servo thread at start-up?

Also is this a 32 or 64 bit system? (I'm testing on wheezy 32 bit RTAI)

Please Log in to join the conversation.

More
9 years 11 months ago #82788 by terkaa
uname -m produces:

i686

This error come also when running "setp hm2_5i25.0.ssi.01.timer-number 2" from command line with halcmd after startup.

Tero

Please Log in to join the conversation.

Time to create page: 0.081 seconds
Powered by Kunena Forum