2015-04-03 11 views
1

Я пытаюсь получить алгоритм, который позволит мне вычислить угловое смещение в круговом движении. Это физическое устройство, которое я программирую, поэтому у меня есть обратная связь от текущего углового положения от 0 до 2pi. Я приложил фотографию, которая поможет вам увидеть, чего я пытаюсь достичь (см. Ниже). Каждый раз, когда процессор сканирует программу, обновляет теги, а затем вычисляет дельту тета, беря Theta2-Theta1, а затем сохраняет ее в тег DeltaTheta. Проблема в том, что когда я завершаю оборот, Theta 2 становится 0, а Theta 1 все еще что-то вроде 3pi/2 или около того, и поэтому я получаю большую Delta Theta, чем следовало бы. Каждый раз, когда угол попадает на отметку 2 пи, он сбрасывается до нуля. Я использую эту программу для реализации алгоритма с Фурье-анализом на PLC Rockwell CompactLogix. Для тех из вас, кого это касается, я программирую в RSLogix5000, используя язык «Структурированный текст». Пожалуйста, смотрите на этом сайте руководство по языку, если это необходимо. Structured Text См. Пример кода ниже.Рассчитать угловое изменение кругового движения

ThetaOld = Theta; 
Theta = SpindleActPosition; //This is feedback from the motor 0-2*pi 
DeltaTheta = Theta2 - Theta1; //This is the "algorithm" I need help with 

Я также пробовал этот алгоритм, но нашел в нем петлевые отверстия, которые не позволяли ему работать.

DeltaTheta = [(Theta2 - Theta1) + 2*pi] MOD(2*pi) 

Я считаю, что оператор MOD будет нашим другом в этом, но я не могу найти решение проблемы.

Остальная часть кода действительно не имеет отношения к решению этой проблемы. К сожалению, по характеру этой машины угол начинается в положении 12 часов, а затем вращается по часовой стрелке. Я не могу это изменить.

Generic System Diagram

ответ

1

Вам просто нужно добавить:

IF DeltaTheta < 0 THEN 
    DeltaTheta = DeltaTheta + 2*pi; 
END_IF; 
+0

Держите DeltaTheta = Theta2-Theta1, а затем реализовать этот условный? – Dustin11h3

+0

Да. Просто добавьте это в свои оригинальные 3 строки. – stark

+0

Спасибо @stark – Dustin11h3

 Смежные вопросы

  • Нет связанных вопросов^_^