Hi to all from Paul Scherrer Intitute,
I did today some tests with the "Brakes control" function. We have some applications where brakes are used to keep firmly axis in position while removing motor current for cooling purposes in typical scientific applications.
We already used this break control with other motion controllers brands. I believed that I could do the same with Delta Tau PPMAC, but I just noticed a strange misbahaviour. Here down I write more details. The questions will be:
a) did I setup correctly the brake control ?
b) if yes, if there a workaround to the problem ?
c) if not, I will not use the brake function and write a specific buffered program instead... :-(
Problem description:
Note: for my test I did not use real brakes installed on motor shaft. The latter is free to rotate and I monitor the digital output separately.
I did use the PowerPMAC IDE and wrote commands in terminal window:
motor[1].pBrakeOut=PowerBrick[0].GpioData[0].a // set brake pointer to GPIO register
motor[1].BrakeOutBit=17 // set bit 17 as GPIO output pin coonected to my brakes system
motor[1].BrakeOffDelay=1000 // set delay to 1000 ms for brakes release delay after "j/" command (long enough for my tests purpose)
motor[1].BrakeOnDelay=1000 // set delay to 1000 ms for brakes on after "dkill" command (long enough for my tests purpose)
#1j/ // closing the servo-loop. What I observe: Current set immadiately in motor. after 1000, ms GPIO dig output 17 set to "1" and brakes released.
dkill // delayed kill. GPIO dig output 17 set to 0 instantly (brakes on). After 1000 ms servo-loop and motor current removed.
So far my tests where satisfacctory ... but the following test behaves not like I would expect to:
Instead of just closing the servo-loop with "#1j/" command, I want to directly order a motion with "#1j^10000" command. Here the result:
#1j^10000 // What I observe: current set and immediate motion start !!... After 1000 ms, GPIO dig output 17 set to "1" and brakes released.
Of course I do not want motion controller tries to move the motor while brakes are still ON !!
So I think there is a little misconception problem in this brakes control function (or a firmware bug or whatever...). I believe the right behaviour should be:[/font]
#1j^10000 // motion order...
immediately, should servo-loop be closed... but WITHOUT motion !! also immediately, should digital output 17 go to 1 to release brakes after the "BrakesOffDelay" time, the desired motion could start
In this case "BrakesOffDelay" is more related to the minimum time brakes really need to be completely released after digital output if set to 1 (may depends on a list of processing delays... one among them: removing current in a coil if not instantaneous !!). In software reference, is described as the time needed to close the loop before brakes release. This has also sense, but the main point of my post: the necessary time for brakes to fully release since the digital output set is not taken in acount ! (or I did miss something... sorry).
I stop here my post and hope to get some feedback... thanks
Best regards
PV