Why don't you provide some more information?
What is fast?
How accurate must this be?
Obviously the other PLC solutions are not perfect solutions but maybe you don't need that.
What is the radius of ring that the sensors are mounted on?
What is the range of values for r0?
What is the range of values for x0?
What is the range of values for y0?
Consider an iterative technique called a grid search.
Let's say:
r0 varies from 100 to 200 mm
x0 varies from -100 mm to +100 mm
y0 varies from -100 mm to +100 mm
Now try 3 loops
BestSSE=10000000; // big number
Code:
For r0 =100 to 200 step 10
For x0=-100 to +100 step 10
for y0=-100 to +100 step 10
SSE = The equation above.
if BestSSE > SSE THEN
BestSSE=SSE
BestR0=R0
BestX0=X0
BestY0=y0
Endif
EndFor
EndFor
EndFor
I call this brute force and ignorance but it will get the job done. It is called a grid search. Notice that you will have to go through 4000+ iterations to find the best solution. At 10 ms per scan that is a long wait. Once you find the Best values you can narrow the search grid to around the best solution to get the answer within a mm.
The are other better ways. I suggest you plug my formulas for computing the errors in a spread sheet and see what happens when you change r0,x0 and y0. Do this manually at first until you get a feel for how the SSE change with the changes in r0,x0 and y0.
Another search that may work well is the simplex search. It doesn't require a whole lot of fancy math and will probably converge MUCH faster than the grid search.
http://www.boomer.org/c/p3/c11/c1102.html
Try this in excel. Make a plot showing the errors as a function of x0, y0 and r0 as shown in the link. This will provide a feel for what you are doing.
If you are using a S7 then buy SCL for this. Don't skimp on the hardware or software or you will waste many times the cost saved in man hours in developing and fixing bugs. Do you really want to wait 40 seconds for a solution if a faster PLC can do it in half the time?