Re: [Emc-users] Parport questions
Kirk, I got the bash script working just in time to move on to using classic ladder... :) It turned out to be the parport.1.pin-2-out vs parport.1.pin-02-out 02 fixed it. I got a ladder program in but not working yet. I am not sure what is going on. I think it is something I am missing in the hal file. I am able to get my I/O pins assigned but I am having a weird result. If I go into hal meter I can locate the pins and in the case of the iocontrol.0.tool-prep-number => classicladder.0.s32in-00 I am able to view the data change on both when I issue a T gcode as I expected. I am not having any luck getting the watch window to work however in CL. I believe I should be seeing the integer on %IW0 but when I enter that in the watch window I get nothing... I am thinking I have something wrong in in my assignment. I had to break away from it for a while and I won't be able to look at it again until this evening. I will let you know how I make out. The wsum method you described looks clean and to the point. I was originally hoping that was possible but did not see the wsum I will probably give that a try as well. Thanks again for all your help, Mike -- Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today. http://p.sf.net/sfu/beautyoftheweb ___ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users
Re: [Emc-users] Parport questions
On Mon, 2010-10-04 at 17:11 -0400, Mike Cinquino wrote: > Kirk, > > Thanks, I a am now leaning toward classic ladder. I know ladder logic > so it should be my quickest path to getting something working. My > understanding is fuzzy on how to get a T? command to cause a bit or > bits to react in classic ladder but once I have that mastered I should > be set. I have been doing a lot of reading and going back and forth > with different options and it's starting to get a little overwhelming. > EMC is very powerful and flexible but there is a lot to learn. (My memory is a little foggy, so verify what follows) The T g-code word invokes a tool-prepare signal. The default setup just loops that back to tool-prepared in the .hal file: " net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared " If you need to do something before the tool change, just break this loop and insert connections to the Classic Ladder pins you created for your tool changer. This allows you to prep your carousel or similar device while still doing some machining. My lathe turret cannot change position during machining, so I leave the prepare loop connected. My mill carousel needs to stay in position because the old tool needs to go back into the empty pocket it came from, so again I left the prepare loop connected. So if you need to prepare a tool before the change, do it in this loop and when a T word shows up in your g-code the carousel or whatever you have will shift to the new tool. More than one T word may do more than one prepare. When EMC2 gets to an M6, then the change loop comes into play: " net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed " For my lathe turret, I break this loop and connect my turret.comp pins " linkpp iocontrol.0.tool-change turret.0.position-change linkpp turret.0.position-changed iocontrol.0.tool-changed " turret.0.position-change tells my turret to start doing its thing. EMC2 will be in a tool change state with axes motion and spindle stopped until iocontrol.0.tool-changed goes high. In my turret comp, I don't set turret.0.position-changed until the tool pocket encoder and the requested tool match. If I forget to connect compressed air to the lathe (for the turret and the collet closer) the turret won't rotate so the pocket never matches so EMC2 stays in this state until I intervene (hook up the air line or e-stop). That is why I need to add some time-outs and a turret park check to my .comp file. This passes EMC2's tool requested to my comp: " newsig TurretRequestedPosition s32 linksp TurretRequestedPosition iocontrol.0.tool-prep-number linksp TurretRequestedPosition turret.0.position-requested " This is the old .hal form, I should probably use: " net TurretRequestedPosition iocontrol.0.tool-prep-number turret.0.position-requested " > So it looks like I could use halui.tool.number or > iocontrol.0.tool-number to give me the correct tool number. Something like: " net MyChangerPocketRequested iocontrol.0.tool-prep-number MyClassicLadderChangeMacro.0.MyPocketRequestedInput " Your Ladder routine will then have the requested tool number on the MyClassicLadderChangeMacro.0.MyPocketRequestedInput pin. > It also looks like when M6 is run iocontrol.0.tool-change is set high > until iocontrol.0.tool-change is driven high? Correction: "iocontrol.0.tool-changed" (note the "ed"), which is supplied by your Ladder macro. > My hal file will have this added to it. > > net tool-prepare-loopback iocontrol.0.tool-prepare => > iocontrol.0.tool-prepared (not sure what this does exactly) Basically bypasses the T word by setting "prepared" equal to "prepare", but you still have the pocket number on "iocontrol.0.tool-prep-number" for later when M6 comes along. > net tool-change-start iocontrol.0.tool-change => parport.1.pin-?-out > (to send a signal to arduino to start cycle gets turned on when M6 is > executed) > > System is paused at M6 untilbelow > > net tool-change-done parport.1.pin-?-in => iocontrol.0.tool-changed > (to send signal from arduino to emc that cycle is complete) EMC > continues Seems reasonable, but if the Arduino is going to handle the change logic, you don't need a .comp or ClassicLadder, just the two lines above and pass the pocket number. > net tnum-current iocontrol.0.tool-number => classicladder.0.s32in-00 > (Ladder will get tool number from this) > > My ladder will look something like this: > > --[compare %IWO = 1]---(%Q1)- N.O. Coil linked to > parport pin > > |-(/%Q2)- N.C. Coil linked to > parport pin > > |-(/%Q3)- N.C. Could linked > to parport pin > > > --[compare %IWO = 2]---(%/Q1)- N.C. Coil linked > to parport pin > > |-(%Q2)- N.O. Coil linked to > parport pin > > |-(/%Q3)- N.C. Could linked > to parport pin > > > etc..
Re: [Emc-users] Parport questions
Kirk, Thanks, I a am now leaning toward classic ladder. I know ladder logic so it should be my quickest path to getting something working. My understanding is fuzzy on how to get a T? command to cause a bit or bits to react in classic ladder but once I have that mastered I should be set. I have been doing a lot of reading and going back and forth with different options and it's starting to get a little overwhelming. EMC is very powerful and flexible but there is a lot to learn. So it looks like I could use halui.tool.number or iocontrol.0.tool-number to give me the correct tool number. It also looks like when M6 is run iocontrol.0.tool-change is set high until iocontrol.0.tool-change is driven high? My hal file will have this added to it. net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared (not sure what this does exactly) net tool-change-start iocontrol.0.tool-change => parport.1.pin-?-out (to send a signal to arduino to start cycle gets turned on when M6 is executed) System is paused at M6 untilbelow net tool-change-done parport.1.pin-?-in => iocontrol.0.tool-changed (to send signal from arduino to emc that cycle is complete) EMC continues net tnum-current iocontrol.0.tool-number => classicladder.0.s32in-00 (Ladder will get tool number from this) My ladder will look something like this: --[compare %IWO = 1]---(%Q1)- N.O. Coil linked to parport pin |-(/%Q2)- N.C. Coil linked to parport pin |-(/%Q3)- N.C. Could linked to parport pin --[compare %IWO = 2]---(%/Q1)- N.C. Coil linked to parport pin |-(%Q2)- N.O. Coil linked to parport pin |-(/%Q3)- N.C. Could linked to parport pin etc... Does this make sense? Thanks, Mike On Mon, 2010-10-04 at 12:18 -0400, Mike Cinquino wrote: ... snip > Is there a specific link to info on tool changes in HAL? > > Thanks, > > Mike Just in case it might be helpful, here is what I have done with my lathe turret using a custom comp:http://www.wallacecompany.com/cnc_lathe/HNC/emc2/ The comp needs to get a Park sensor feature as well as some time-outs added for each state, but it there is enough here to make my turret function. If you already know the Ladder language, that may be the way to go. Either way, you end up with HAL pins for invoking your tool changer and then signaling that your changer finished. Just connect these in your .hal file. -- Kirk Wallacehttp://www.wallacecompany.com/machine_shop/http://www.wallacecompany.com/E45/index.html California, USA -- Virtualization is moving to the mainstream and overtaking non-virtualized environment for deploying applications. Does it make network security easier or more difficult to achieve? Read this whitepaper to separate the two and get a better understanding. http://p.sf.net/sfu/hp-phase2-d2d ___ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users
Re: [Emc-users] Parport questions
On Mon, 2010-10-04 at 12:18 -0400, Mike Cinquino wrote: ... snip > Is there a specific link to info on tool changes in HAL? > > Thanks, > > Mike Just in case it might be helpful, here is what I have done with my lathe turret using a custom comp: http://www.wallacecompany.com/cnc_lathe/HNC/emc2/ The comp needs to get a Park sensor feature as well as some time-outs added for each state, but it there is enough here to make my turret function. If you already know the Ladder language, that may be the way to go. Either way, you end up with HAL pins for invoking your tool changer and then signaling that your changer finished. Just connect these in your .hal file. -- Kirk Wallace http://www.wallacecompany.com/machine_shop/ http://www.wallacecompany.com/E45/index.html California, USA -- Virtualization is moving to the mainstream and overtaking non-virtualized environment for deploying applications. Does it make network security easier or more difficult to achieve? Read this whitepaper to separate the two and get a better understanding. http://p.sf.net/sfu/hp-phase2-d2d ___ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users
Re: [Emc-users] Parport questions
Steve, Thanks for your response. I am not getting copies of my posts or the responses in my email so I cut and pasted into a new email. I made some changes to my settings so hopefully I will start to get reply's. I was not aware of comp! I just took a look at it and it looks good. I will give that a try. I would love for the system to work from a T? command. Also good point on the 02 vs the 2. I will try that as soon as I get in front of my machine. Is there a specific link to info on tool changes in HAL? Thanks, Mike Mike Cinquino wrote: > Hello, > > I have had no luck getting a C executable to run from a M101 - M199 command > so I have decided to take a different approach. I think that approach will > be problematic with the need for root to get access to the port anyway and > that may be causing the problem I am having. My goal is to apply a signal to > pins 2, 3, and 4 of an additional parallel port. I am thinking a bash script > with the appropriate pins turned high or low would do it.. > Why not use the parallel port in HAL, and just output the bits as HAL pins? I don't think there's a binary->BCD converter component, but it should be very easy to write one (use comp, it's a lot easier). It may also be possible to do it entirely with classicladder. If you need a strobe signal to the Arduino, that can also be done with classicladder or HAL components. That would also eliminate the need to make custom G-code that has the M1xx commands for every tool change - T6M1 would "just work". Take a look at how tool changes are done in HAL, you may find it a lot easier to use than custom M codes. > So I found the parallel port tester .hal file from the wiki > http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?Parallel_Port_Tester > > I installed it and picked the appropriate port. (I actually have 3 ports > total, 1 port is controlling the milling machine 0x0B800, and the other 2 > ports are 0x378 and 0x0B000) > > I have verified that each of these ports work with the Parallel Port Tester > program and I get the expected results. > > I can not get my bash script to execute correctly from calling a M102 as an > example. > > This is my bash script: > > #!/bin/sh > > # M101 in your G code program will run the Linux commands in this > # shell script "batch" file, passing the P and Q variables as command > # line arguments. > > # give the command line arguments descriptive names > P=$1 > Q=$2 > > halcmd setp parport.1.pin-2-out True > > echo "M101 P$P Q$Q: put your code here" > > exit 0 > ** > I have modified my .hal file to this: > > # Generated by stepconf at Sat Sep 11 14:26:27 2010 > # If you make changes to this file, they will be > # overwritten when you run stepconf again > loadrt trivkins > loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD > servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES > loadrt probe_parport > loadrt hal_parport cfg="0x0B800 0x0B000" > setp parport.0.reset-time 3500 > loadrt stepgen step_type=0,0,0 > loadrt abs count=1 > addf parport.1.read base-thread > addf parport.1.write base-thread > > setp parport.1.pin-2-out TRUE > > addf parport.0.read base-thread > addf stepgen.make-pulses base-thread > addf parport.0.write base-thread > addf parport.0.reset base-thread > *** > > I have played with the order of my port placement in line : loadrt > hal_parport cfg="0x0B800 0x0B000" changing the order of the port call out? > > So one question I have that I could not find in any of the reading I did is > does the the order of the port in this command dictate the parport number? > > So is this the case? > Yes. Parport.0 will be the first one you give the address (or number) for, parport.1 will be next, etc. > loadrt hal_parport cfg=" 0 1 2 ." or is it the order seen in the results > of the lspci -v . > Using numbers below 16 will depend on the order the kernel finds the ports. You should be able to do cfg="2 0 1" to make the third Linux port parport.0, the first parport.1, and the second parport.2. I haven't tried this though. > I think I know the answer to this because my original configuration used > port 0x0B800 and it was set to parport.0. > So I am assuming that based on my .hal file parport.0 is 0x0B800 and > parport.1 is 0x0B000. I am also assuming these ports are "out" type because > that is said to be the default. > > You will note that I have added a line "setp parport.1.pin-2-out TRUE" to my > .hal file. This is basically the same command I am trying to run from the > M102 code. I figured adding it here would require less steps in testing. I > get the same error in either case. > > This is my error: > > parameter or pin 'parport
Re: [Emc-users] Parport questions
Mike Cinquino wrote: > Hello, > > I have had no luck getting a C executable to run from a M101 - M199 command > so I have decided to take a different approach. I think that approach will > be problematic with the need for root to get access to the port anyway and > that may be causing the problem I am having. My goal is to apply a signal to > pins 2, 3, and 4 of an additional parallel port. I am thinking a bash script > with the appropriate pins turned high or low would do it.. > Why not use the parallel port in HAL, and just output the bits as HAL pins? I don't think there's a binary->BCD converter component, but it should be very easy to write one (use comp, it's a lot easier). It may also be possible to do it entirely with classicladder. If you need a strobe signal to the Arduino, that can also be done with classicladder or HAL components. That would also eliminate the need to make custom G-code that has the M1xx commands for every tool change - T6M1 would "just work". Take a look at how tool changes are done in HAL, you may find it a lot easier to use than custom M codes. > So I found the parallel port tester .hal file from the wiki > http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?Parallel_Port_Tester > > I installed it and picked the appropriate port. (I actually have 3 ports > total, 1 port is controlling the milling machine 0x0B800, and the other 2 > ports are 0x378 and 0x0B000) > > I have verified that each of these ports work with the Parallel Port Tester > program and I get the expected results. > > I can not get my bash script to execute correctly from calling a M102 as an > example. > > This is my bash script: > > #!/bin/sh > > # M101 in your G code program will run the Linux commands in this > # shell script "batch" file, passing the P and Q variables as command > # line arguments. > > # give the command line arguments descriptive names > P=$1 > Q=$2 > > halcmd setp parport.1.pin-2-out True > > echo "M101 P$P Q$Q: put your code here" > > exit 0 > ** > I have modified my .hal file to this: > > # Generated by stepconf at Sat Sep 11 14:26:27 2010 > # If you make changes to this file, they will be > # overwritten when you run stepconf again > loadrt trivkins > loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD > servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES > loadrt probe_parport > loadrt hal_parport cfg="0x0B800 0x0B000" > setp parport.0.reset-time 3500 > loadrt stepgen step_type=0,0,0 > loadrt abs count=1 > addf parport.1.read base-thread > addf parport.1.write base-thread > > setp parport.1.pin-2-out TRUE > > addf parport.0.read base-thread > addf stepgen.make-pulses base-thread > addf parport.0.write base-thread > addf parport.0.reset base-thread > *** > > I have played with the order of my port placement in line : loadrt > hal_parport cfg="0x0B800 0x0B000" changing the order of the port call out? > > So one question I have that I could not find in any of the reading I did is > does the the order of the port in this command dictate the parport number? > > So is this the case? > Yes. Parport.0 will be the first one you give the address (or number) for, parport.1 will be next, etc. > loadrt hal_parport cfg=" 0 1 2 ." or is it the order seen in the results > of the lspci -v . > Using numbers below 16 will depend on the order the kernel finds the ports. You should be able to do cfg="2 0 1" to make the third Linux port parport.0, the first parport.1, and the second parport.2. I haven't tried this though. > I think I know the answer to this because my original configuration used > port 0x0B800 and it was set to parport.0. > So I am assuming that based on my .hal file parport.0 is 0x0B800 and > parport.1 is 0x0B000. I am also assuming these ports are "out" type because > that is said to be the default. > > You will note that I have added a line "setp parport.1.pin-2-out TRUE" to my > .hal file. This is basically the same command I am trying to run from the > M102 code. I figured adding it here would require less steps in testing. I > get the same error in either case. > > This is my error: > > parameter or pin 'parport.1.pin-2-out' not found. > Try parport.1.pin-02-out instead. Looking at the driver source, it appears to always format the numbers with two digits. You could have seen this by using halcmd or halshow to see what pins are available. (like "halcmd show pin parport.1") > I get this error when I attempt to start EMC with the "setp > parport.1.pin-2-out TRUE" in my .hal file as shown above or when I remove > the line from the .hal file, launch EMC, then go to a terminal and execute > the bash script manually. When I attempt to run the bash file from the M101 > I get no error and no result. > You get no error because there is no p
[Emc-users] Parport questions
Hello, I have had no luck getting a C executable to run from a M101 - M199 command so I have decided to take a different approach. I think that approach will be problematic with the need for root to get access to the port anyway and that may be causing the problem I am having. My goal is to apply a signal to pins 2, 3, and 4 of an additional parallel port. I am thinking a bash script with the appropriate pins turned high or low would do it.. So I found the parallel port tester .hal file from the wiki http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?Parallel_Port_Tester I installed it and picked the appropriate port. (I actually have 3 ports total, 1 port is controlling the milling machine 0x0B800, and the other 2 ports are 0x378 and 0x0B000) I have verified that each of these ports work with the Parallel Port Tester program and I get the expected results. I can not get my bash script to execute correctly from calling a M102 as an example. This is my bash script: #!/bin/sh # M101 in your G code program will run the Linux commands in this # shell script "batch" file, passing the P and Q variables as command # line arguments. # give the command line arguments descriptive names P=$1 Q=$2 halcmd setp parport.1.pin-2-out True echo "M101 P$P Q$Q: put your code here" exit 0 ** I have modified my .hal file to this: # Generated by stepconf at Sat Sep 11 14:26:27 2010 # If you make changes to this file, they will be # overwritten when you run stepconf again loadrt trivkins loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES loadrt probe_parport loadrt hal_parport cfg="0x0B800 0x0B000" setp parport.0.reset-time 3500 loadrt stepgen step_type=0,0,0 loadrt abs count=1 addf parport.1.read base-thread addf parport.1.write base-thread setp parport.1.pin-2-out TRUE addf parport.0.read base-thread addf stepgen.make-pulses base-thread addf parport.0.write base-thread addf parport.0.reset base-thread *** I have played with the order of my port placement in line : loadrt hal_parport cfg="0x0B800 0x0B000" changing the order of the port call out? So one question I have that I could not find in any of the reading I did is does the the order of the port in this command dictate the parport number? So is this the case? loadrt hal_parport cfg=" 0 1 2 ." or is it the order seen in the results of the lspci -v . I think I know the answer to this because my original configuration used port 0x0B800 and it was set to parport.0. So I am assuming that based on my .hal file parport.0 is 0x0B800 and parport.1 is 0x0B000. I am also assuming these ports are "out" type because that is said to be the default. You will note that I have added a line "setp parport.1.pin-2-out TRUE" to my .hal file. This is basically the same command I am trying to run from the M102 code. I figured adding it here would require less steps in testing. I get the same error in either case. This is my error: parameter or pin 'parport.1.pin-2-out' not found. I get this error when I attempt to start EMC with the "setp parport.1.pin-2-out TRUE" in my .hal file as shown above or when I remove the line from the .hal file, launch EMC, then go to a terminal and execute the bash script manually. When I attempt to run the bash file from the M101 I get no error and no result. What am I missing? Thanks, Mike -- Virtualization is moving to the mainstream and overtaking non-virtualized environment for deploying applications. Does it make network security easier or more difficult to achieve? Read this whitepaper to separate the two and get a better understanding. http://p.sf.net/sfu/hp-phase2-d2d ___ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users