Hello Guest it is March 29, 2023, 12:31:27 PM

Author Topic: code "G04 P2.0" problem  (Read 9244 times)

0 Members and 1 Guest are viewing this topic.

Offline tantan

*
  •  125 125
    • View Profile
code "G04 P2.0" problem
« on: April 24, 2008, 12:36:25 PM »
hi again,

i have the next macro which runs perfect except for the [ code "G04 P2.0" ] part. i am sure the subroutine is executed but the output is not latched for 2 seconds. i hope someone can help me because it is an essential part of my machine. (i run mach3 2.63 version on windows xp).

'SetUserDRO(1200,GetSelectedTool())
'OldTool = GetOEMDRO (1200)
wantedtool = GetOEMDRO (1200) 'GetSelectedTool()
MaxToolNum = 8      'Max number of tools for the changer

If newtool = wantedtool Then
Message ("Selected Tool already loaded")
Exit Sub
End If

'While wantedtool > MaxToolNum
'Tool = Question ("Enter New Tool Number up to " & MaxToolNum)
'Wend

While wantedtool <> newtool

Call actualtool
Call rotateCW
     
Wend 

Call stop_and_lock_turret



'//// Subroutines /////////

Sub actualtool

   If isActive(Input1) And isactive(Input2) And isactive(Input3) And Not isactive(Input4) Then
      NewTool = 1
      End If
   If isActive(Input1) And isactive(Input2) And Not isactive(Input3) And Not isactive(Input4) Then
      NewTool = 2
      End If
   If isActive(Input1) And isactive(Input2) And Not isactive(Input3) And isactive(Input4) Then
      NewTool = 3
      End If
   If isActive(Input1) And Not isactive(Input2) And Not isactive(Input3) And isactive(Input4) Then
      NewTool = 4
      End If
   If isActive(Input1) And Not isactive(Input2) And isactive(Input3) And isactive(Input4) Then
      NewTool = 5
      End If
   If Not isActive(Input1) And Not isactive(Input2) And isactive(Input3) And isactive(Input4) Then
      NewTool = 6
      End If
   If Not isActive(Input1) And isactive(Input2) And isactive(Input3) And isactive(Input4) Then
      NewTool = 7
      End If
   If not isActive(Input1) And isactive(Input2) And isactive(Input3) And not isactive(Input4) Then
      NewTool = 8
      End If
     
      setcurrenttool(newtool)
     
End Sub


Sub rotateCW
   ActivateSignal(Output6)
      While IsMoving()
      Wend
     
End Sub

Sub stop_and_lock_turret

   DeActivateSignal(Output6)
      While IsMoving()
      Wend
   ActivateSignal(Output5) 
      Code "G4 P2"    'Wait for the tool to rotate onto ratchet stop
      While IsMoving()
      Wend
   DeActivateSignal(Output5)
      While IsMoving()
      Wend
     
End Sub   
   

thanks

antoine
the netherlands
« Last Edit: April 24, 2008, 12:38:46 PM by tantan »

Offline poppabear

*
  • *
  •  2,235 2,235
  • Briceville, TN, USA
    • View Profile
Re: code "G04 P2.0" problem
« Reply #1 on: April 24, 2008, 01:31:58 PM »
just a note,

   remove the "While IsMoving(), Wend" statements from your activate and deactivate signals they are pointless there. The while is moving is for Movement type coded commands, i.e.  Code "Gxx ...." it is used when you want to wait for the machine to move, this includes the G4 codes.

scott
fun times

Offline tantan

*
  •  125 125
    • View Profile
Re: code "G04 P2.0" problem
« Reply #2 on: April 24, 2008, 02:36:31 PM »
thank you for your reply,

what i want with the "G4 p2.0" is that the output 5 stay high for 2 second and then it has to be deactivated. is that possible with the G4 code the way i used it in mach 3 (lathe)?

Offline poppabear

*
  • *
  •  2,235 2,235
  • Briceville, TN, USA
    • View Profile
Re: code "G04 P2.0" problem
« Reply #3 on: April 24, 2008, 06:56:10 PM »
yes, the way you have it written will work, just only have the while is moving after the G4 only not the activate and deactivates signals
fun times

Offline tantan

*
  •  125 125
    • View Profile
Re: code "G04 P2.0" problem
« Reply #4 on: April 25, 2008, 02:28:10 AM »
i am sorry but i do not understand fully what you mean with your latest reply (probably because i am dutch).

what i understand is that i should delete the While IsMoving() function. but can i use the G4 command to delay the activation or deactivation of outputs or is the G4 function not the right one to use for my case?

if i cannot use the G4 command to delay the activation or deactivation of output what function should i use. or do i have to solve this in by hardware?

thanks

antoine
the netherlands
« Last Edit: April 25, 2008, 02:29:59 AM by tantan »
Re: code "G04 P2.0" problem
« Reply #5 on: April 26, 2008, 10:46:39 AM »
G4 is the correct function to use for a delay. G4 can measure time in either seconds or miliseconds, there is a check mark on the config screen to select.

While IsMoving is only needed on commands that cause motion, it is not needed on the activate output or deactivate. I dont think it will hurt, but it is not needed.

The following should work

Sub stop_and_lock_turret

   DeActivateSignal(Output6)
     
   ActivateSignal(Output5)
      Code "G4 P2"    'Wait for the tool to rotate onto ratchet stop
      While IsMoving()
      Wend
   DeActivateSignal(Output5)
     
End Sub   

Offline tantan

*
  •  125 125
    • View Profile
Re: code "G04 P2.0" problem
« Reply #6 on: April 27, 2008, 12:15:57 PM »
hi,

thank you for your reply. I cannot get the code statement working. i open a vb window, type just the commands:

ActivateSignal(Output5) 
Code "G4 P2"

then i compile and run the program. the program ignores the code statement!
another strange thing is that my outputs 1 2 3 and 4 on my first i/o card can be switched on by the statement ActivateSignal(...). the output 5 and 6 just pulse with the same statement. does that has something to do with hardware or has mach trouble with outputs 5 and 6.

thanks
antoine
Re: code "G04 P2.0" problem
« Reply #7 on: April 27, 2008, 02:38:22 PM »
How do you know its ignoring the G4?

try this simple test program:

code "G4 P10"
While Ismoving()
Wend

MsgBox "time done"


when I run it in the script editor there is a 10 second delay before the message box appears.

Are you sure output 5 and 6 are setup correctly? Be sure the port number is 2 if they are on the second parport.

Offline tantan

*
  •  125 125
    • View Profile
Re: code "G04 P2.0" problem
« Reply #8 on: April 28, 2008, 12:26:07 PM »
hi ron,

you are right. your test program works fine. the problem is in my hardware. u use 2 parallelports; one (LPT1)on the motherboard of the computer and one extra PCI port. the outputs connected to the first port (lpt1) work exactly as they should. but if i use the same program to control the outputs on the second port they just pulse. if i write a VBscript with one line: activatesignal(output6), output6 is high for just a 0.1 second or so.

i don't understand the difference between the two ports?

thanks antoine

Offline tantan

*
  •  125 125
    • View Profile
Re: code "G04 P2.0" problem
« Reply #9 on: April 28, 2008, 01:03:03 PM »
hi ron

I AM SORRY, i found the problem. let me explain to you what i did.
i began thinking why the outputs of the second port could be disabled almost immediately after is enabled them. i early day i have been programming PLC's. when that happend in PLC's most of the time i had used the specific register twice. this was exactly what happend i my system. a few months ago a have made some test programs in brains. i used the output 5 and 6 and these programs where still enabled in brains control. i disabled the specific brain and everything works fine now.

i hope it did not keep you awake....

thanks Antoine