"I have programed it to stop and brake if the pulses are lost during the motor running and keep the doors locked for long enough to have stopped
But in normal working, when the brake has been applied and the motor disengaged (contactors off) I am relying on the pulses to stop to tell it the doors can be opened."
While the motor contactor is engaged, continuously run a timer. If the timer times out then latch "Prox-Failed".
While the timer is running, each prox-pulse resets the timer. As long as the timer does not timeout then the prox is assumed OK. Consider the time-value carefully.
The concept here is... "I'll believe that the prox is OK only so long as the prox continues to prove it is OK."
Hmmm... is this a "front-loader" (like a typical clothes dryer) or a "top-loader" (like a typical clothes washer)?
The coast-time for a top-loader will be longer than the coast-time for a front-loader. How much longer? It depends...
Assuming that the meat is simply contained loosely within the drum, not necessarily "held-in-place" within the drum...
In a front-loader...
If the mass of the meat is significant when compared to the mass of the drum, then at some point, when the velocity of the drum falls low enough, instead of completing the circular path in the drum, the meat will fall to the bottom of the drum thus helping to provide braking action.
In a top-loader...
If the meat is "riding high" on the side of the drum, then, as the velocity is reduced, the meat will slide down the sides toward the bottom of the drum. This will reduce the inertia presented by the meat. The inertia of the drum will remain the same. The total inertia will be reduced. However, the falling/sliding meat does NOT contribute any braking action as it does in the front-loader.
In any case, if the "Prox-Failed" bit is latched, you must also assume total brake-failure.
Unless you have a way to determine the actual inertia involved for the particular load, you must assume the worst case inertia. That means assuming maximum speed, maximum weight and maximum time to coast to stop.
So... when the motor contactor is opened, if the "Prox-Failed" bit is latched, then run a timer that covers the absolute worst case coast time. Then, after the timer times out, unlock the door.
Now... how to handle the case where the prox fails during stopping... this is definitely tougher...
(additionally, I don't know your system like you do...)
The first thing you need to do is determine that the brake is working adequately. You should do this under all stopping conditions.
How many pulses-per-revolution? How many pulses-per-minute at full speed?
While stopping, track the number of pulses per unit of time and see if the change in pulse counts per unit of time indicates that the brake is working as expected. Basically, you are looking to see that the velocity of the drum is reducing as expected (at least within a reasonable range). As soon as this can be determined, latch a bit indicating "Brake is OK".
You know better than I what your braking-curve looks like (or should look like). Remember, during the first few moments of braking the velocity will change little.
While "Brake is OK" and prox is still known to be good... continue monitoring the velocity of the drum. As the velocity reduces, the time between pulses will increase... you should be able to calculate the time before the next pulse. Every time a pulse occurs, calculate the current velocity and then calculate the time before the next pulse... add a small percentage (5%-10% buffer) to that time and then load that time into the timer. If the velocity is still high enough that the pulse should occur, however the pulse does NOT occur... then the prox must be assumed to have failed.
At some point, the velocity will be low enough that the occurance of the next pulse becomes questionable. If the velocity is low enough and the pulse doesn't occur when expected then run one more timer just to make sure that the drum is stopped (even if the prox fails during this time).
If you determine that the velocity is NOT reducing as expected (well out of range), then latch a bit indicating "Brake is BAD!". Meanwhile, continue monitoring the status of the prox. If the prox is determined to have failed and the "Brake is BAD!" bit is latched, then you must fall back onto the worst case stopping scenario described earlier.
That's the best I can do with the given information...
Does this stuff give you any ideas?