Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Selective Motor AbortAll
#1
Is it possible to select which motor will be affected when the Power PMAC receives an "abort all" input?

I'm working in a system that has an air pressure bearing with a reed switch (Normally Closed contact). When the pressure goes down I must kill 1 of the 8 axes which the PowerPMAC is driving. The others must be able to move.

I thought about a PLC program polling a Digital Input, but I'm concerned about IEC machine safety standards, this is why I prefer to handle the Abort Pin.

So what I'm choosing is a .pmh file which set tup 2 coordinates systems. One CS which will be affected by abort pin and the other one not affected as below:


--------------------------------------------------------------------------------------
global_definition.pmh
undefine all

//setup CS1
&1
#1 -> X
//setup CS2
&2
#2 -> X
#3 -> A
#4 -> XX
#5 -> YY
#6 -> ZZ
#7 -> U
#8 -> V

Sys.pAbortAll = PowerBrick[0].GpioData[0].a
Sys.AbortAllBit = 31
Sys.AbortAllLimit = 5
Coord[1].AbortAllMode = 1 // CS1 motors killed after abortAll
Coord[2].AbortAllMode = 3 // CS2 dont affected by abortall
--------------------------------------------------------------------------------------


Is there a better way to do this?
Reply
#2
You are already using the best method and that is how AbortAll is intended to work. Aborting only part of a coordinate system wouldn't make sense.
Reply
#3
I am implementing this solution and have tried some similars approaches, but without success

Sys.pAbortAll = PowerBrick[0].GpioData[0].a
Sys.AbortAllBit = 31
Sys.AbortAllLimit = 5
Coord[0].AbortAllMode = 3 // CS0 dont affected by abortall
Coord[1].AbortAllMode = 1 // CS1 motors killed after abortAll

1)

&1
#8->I

As I can see using Motor[x].Coord, the remaining motors are allocated in the Coord[0] by default, but when Sys.AbortAll=1 all the motors are aborted.

Also tried to change the remaining motors of the system to Coord[2]

2)

Coord[2].AbortAllMode = 3 // CS2 dont affected by abortall
&2
#1->I
#2->I
#3->I
#6->I
#5->I

And I defined an axis for each motor:

3)

Coord[2].AbortAllMode = 3 // CS2 dont affected by abortall
&2
#1->A
#2->B
#3->C
#6->X
#5->Y

but none these attempts worked as I expected.
There is something that I am missing?

FW 2.5.4.0
CPU PowerPC,APM86xxx
Reply
#4
I am a bit confused. What behavior are you looking for? Motor 8 being killed while the rest continue?

Was Motor 8 always in coordinate system 1? What behavior did you get from "3)"?
Reply
#5
Yes, the behavior that a I expect is Motor 8 being killed while the rest remain controllable.

The Motor 8 is always in Coordinate System 1.

I repeated the tests with simulated motor in another Powerbrick and all the cases results in the expected behavior. Perhaps when the problem occurred some statement could have been missing, I am trying to reproduce the error.

Anyway, I will test again with the real motors on the first controller at an opportune time
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)