Creating / finding extra sserial output pins?

04 Feb 2020 09:38 - 04 Feb 2020 10:42 #156490 by ross_dev

I am guessing the solution to this will involve tweaking something with our Mesa 7i94, if not apologies for the mis-filing of topic / board!

I have an issue with brake delay when powering off STMBL drives linked to a Mesa 7i94, so that our rather heavy axis falls about 80mm before the brake engages. As this could end up mashing into our limit switch if someone forgets to zero the axis, as well as possibly be a pain in between runs, I have been thinking of ways to get around it.

  1. Is to somehow modify the "power off" script in AXIS, to engage brake first, but this looks to be quite a complex task to modify the code.
  2. Is to somehow introduce a delay to the motors to prioritise brake, but this again would be major surgery.
  3. Is to modify the STMBL firmware code, which looks easier than the above but I would rather avoid due to unknown side effects.
  4. Is a workaround (and probably the easiest for now) so we can engage the brake manually before powering off. This is the one I have been focusing on, but ran into some challenges:

I want to use a smart serial output as a driver for the brake override. Currently I have the built-in STMBL "brake off with motors on / brake on with motors off or estop", behaviour, but I also have a manual brake release, which is a little check box put in with pyvcp in AXIS.

The two are mutually exclusive i.e. if the motors are on and the brake is off, clicking the manual brake button does nothing. Equally if I take the brake off with manual release, The brake will not re-engage when I power the machine down. So it is not possible to engage the brake whilst the machine is on.

Speaking with Rene and the guys, they suggested editing the STMBL onboard profile with the line:
fault0.brake_release = sserial0.out0

on top of the usual
io0.out0 = fault0.mot_brake

With the latter assigning brake operation to the first STMBL output, and the brake override being assigned to smart serial out 0. However when looking in HAL config whilst LCNC is running, I can only see 5 pins, none of which is sserial0.out0, and which do not seem to be reassignable to some other duty (I'm afraid I don't have access to the machine at the moment and cannot remember the names of the pins).

I'm guessing the mesa generates the sserial pins. Is there a way to create new output pins for sserial, or am I just missing some "hidden" sserial pins not showing up in hal config? I would really like to avoid reflashing bit files etc but if needs be it can be done.

Last edit: 04 Feb 2020 10:42 by ross_dev.

Please Log in or Create an account to join the conversation.

04 Feb 2020 13:52 - 04 Feb 2020 22:55 #156502 by PCW
The SSerial HAL pins are generated by the driver reading the remote devices database,
so the remote device (stmbl in this case) determines the pins, not the host (LinuxCNC/7i94) side.

You should be able to list all stmbl HAL pins with:

halcmd show pin *stmbl*

(from a terminal window when LinuxCNC is running)
Last edit: 04 Feb 2020 22:55 by PCW.

Please Log in or Create an account to join the conversation.

14 Feb 2020 22:23 #157378 by andypugh
Indeed. The confusion here might be that there are two HALs, the LinuxCNC HAL and the STMBL HAL. sserial0.out0 is an STMBL HAL pin, but it should be mirrored in the LinuxCNC HAL as a pin something like hm2_5i25.0.stmbl.0.out0

That pin name is a guess, but it will be _something_ like that.

Please Log in or Create an account to join the conversation.

18 Feb 2020 00:45 #157673 by pippin88
Maybe I'm missing something, but can't this all be done in LinuxCNC Hal?

What is hal line used for you pyvcp?

Potentially relevant

Please Log in or Create an account to join the conversation.

Moderators: PCWjmelson
Time to create page: 0.182 seconds
Powered by Kunena Forum