Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- component thcud "Torch Height Control Up/Down Input";
- description
- """
- to install open a terminal and cd to where the file is and use the following command
- sudo comp --install thcud.comp
- Torch Height Control
- This THC takes either an up or a down input from a THC
- If enabled and torch is on and X + Y velocity is within tolerance of set speed
- allow the THC to offset the Z axis as needed to maintain voltage.
- If enabled and torch is off and the Z axis is moving up remove any correction
- at a rate not to exceed the rate of movement of the Z axis.
- If enabled and torch is off and there is no correction
- pass the Z position and feed back untouched.
- If not enabled pass the Z position and feed back untouched.
- Physical Connections typical
- parport.1.pin-12-in <= THC controller Plasma Up
- parport.1.pin-13-in <= THC controller Plasma Down
- parport.0.pin-12-in-not <= Plasma Torch Arc Ok Signal
- parport.0.pin-17-out => Plasma Torch Start Arc Contacts
- HAL Plasma Connections
- thcud.torch-up <= parport.1.pin-12-in
- thcud.torch-down <= parport.1.pin-13-in
- motion.spindle-on => parport.0.pin-17-out (start the arc)
- thcud.arc-ok <= motion.digital-in-00 <= parport.0.pin-12-in-not (arc ok signal)
- HAL Motion Connections
- thcud.requested-vel <= motion.requested-vel
- thcud.current-vel <= motion.current-vel
- """;
- author "John Thornton";
- license "GPL";
- option singleton yes;
- // Input Pins
- pin in bit torch_up "Connect to parport.1.pin-12-in";//may need changed
- pin in bit torch_down "Connect to parport.1.pin-13-in";//may need changed
- pin in float current_vel "Connect to motion.current-vel";
- pin in float requested_vel "Connect to motion.requested-vel";
- pin in bit torch_on "Connect to motion.spindle-on";
- pin in bit arc_ok "Arc Ok from Plasma Torch";//may need changed
- pin in bit enable "Enable the THC, if not enabled Z position is passed through";
- pin in float z_pos_in "Z Motor Position Command in from axis.n.motor-pos-cmd";
- // Output Pins
- pin out float z_pos_out "Z Motor Position Command Out";
- pin out float z_fb_out "Z Position Feedback to Axis";
- // Parameters
- param rw float correction_vel "The Velocity to move Z to correct";
- // Global Variables
- variable float offset;
- variable float last_z_in;
- function _;
- ;;
- #include "rtapi_math.h"
- FUNCTION(_) {
- if(enable){
- float min_velocity = requested_vel -(requested_vel*(.8)); //.8 is velocity tolerance, change as needed
- if(current_vel > 0 && current_vel >= min_velocity){vel_status = 1;}
- else {vel_status =0;}
- if(torch_on && arc_ok && vel_status){ // allow correction
- if(torch_down){
- offset -= correction_vel;
- }
- if(torch_up){
- offset += correction_vel;
- }
- last_z_in = 0;
- }
- if(!torch_on){ // remove any offset
- float z_diff;
- z_diff = z_pos_in - last_z_in;
- if(z_diff > 0 && offset != 0){ // torch is moving up
- removing_offset = 1;
- if(offset > 0){ // positive offset
- if(offset > z_diff){ // remove some
- offset -= z_diff;
- }
- else {offset = 0;}
- }
- if(offset < 0){ // negative offset
- if(offset < z_diff){ // remove some
- offset += z_diff;
- }
- else {offset = 0;}
- }
- }
- else {removing_offset = 0;}
- last_z_in = z_pos_in;
- }
- z_pos_out = z_pos_in + offset;
- z_fb_out = z_pos_in; // keep axis motor position fb from being confused
- }
- if(!enable){
- z_pos_out = z_pos_in;
- z_fb_out = z_pos_in; // keep axis motor position fb from being confused
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement