Я программист ПЛК, который в настоящее время использует вариант VB для управления двигателем.Последовательность выполнения кода
Я хочу вызвать функцию, которая будет выполнять ходы и не возвращаться к основному коду до тех пор, пока перемещение не будет завершено. В настоящее время здесь то, что у меня есть:
Program 'Main Program
While 1
If move_req = 1
Function MoveMotor
End If
Wend
End Program
Function MoveMotor
MoveABS 10 ' Move to encoder position 10mm
move_complete = 1
While move_req = 1
'Do Nothing
Wend
End Function
По какой-то причине этот код не работает и команда перемещения посылается снова и снова. Может ли это быть из-за того, что основная программа продолжает работать, когда функция работает? Так работает VB? Я привык думать о последовательности кода в терминах PLC, где они просматривают все многократно с определенной частотой.
Программа запускается из-за инструкции While. И нет, где я могу увидеть, что 'move_reg' изменен, поэтому функция продолжает называться. – OneFineDay
Его как бесконечный цикл здесь. –
Вот что происходит: программа запускается и начинается бесконечный цикл (пока 1), сначала вызывается MoveMotor, который, в свою очередь, вызывает MoveABS. MoveMotor будет ждать, пока весь код в MoveABS не будет выполнен, вернитесь в MoveMotor, а затем запустите другой цикл (бесконечный?), Ожидая, что переменная с именем move_req станет 1. Вопрос. Что изменяет значение move_req? В этом примере ничего не делается, поэтому программа бесконечно остается в цикле While move_req. – Jeremy