UR20 Machine tending HAAS

I’m trying to get a UR20 to communicate with a HAAS mill for machine tending however I’m running into issues with the Cell Safe signal. The HAAS is asking for a “heartbeat” signal to verify cellsafe and I’ve tried to send it that using a relay and a function generator and even a separate thread that toggles the output based on a cell-safe variable that is toggled in the main program. however for some reason the HAAS is still unable to see the cellsafe signal from the robot and won’t trigger the autodoor functionality.

Thanks in advance

I have never worked with a HAAS, but I imagine the heartbeat signal is more or less the same across CNC machine manufacturers.
When I’ve installed a URs on CNCs, I have used a PLC to convey PROFINET signals to PROFIBUS and also generate the heartbeat signal to the CNC, since the robot cannot generate a signal, while the program isn’t running. :slight_smile:

However, I will say that it should work the way you’re doing it. One thing you do not mention is the timing of the signal. How do you pulse it? 1 second on, 1 second off? As the name implies, the heartbeat signal must toggle between on and off most often with 1 second intervals.

1 Like

Hey, Thanks for the reply! I’m pulsing the signal 0.1 Sec on and 0.1 Sec off which should provide a frequency of 5 Hz. The HAAS requests a 3-10 Hz signal so it should do the trick. I’ve also tried all the way up to 30 Hz with a function generator to test functionality but still no dice. I’m just trying to make sure the issue isn’t on the UR side and it’s something with the HAAS.


In the IO setup of the robot’s installation, you can assign an output (digital, configurable, or boolean) to perform a continuous pulse while running. You are then able to choose the amount of time for both HI and LOW conditions. Below is an image showing what the IO setup page would look like if you had this chosen.

The pulsing will only occur while a robot program is running. When no program is running, the last known state of the output will hold HI. If you power cycled the robot while the signal was HI, it will be LOW when it is restarted.

Is this something you have already tried/does it look like it would work for your application?

According to “Robot Integration Aid - NGC” another option to provide “cell safe” signal is to use program macro variable 3196 (unfortunately I don’t have access to Haas machine to confirm it. Manual also says that E command can only write variables 10000-10999).


Here is an example of writing a variable from robot program (assuming Haas is on ip, and port 9000)

     socket_send_line("?E10000 1000","Haas") 
     Wait: 0.25