我是一名PLC程序员,目前正在使用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来考虑代码序列,它们以特定频率重复扫描所有内容。
答案 0 :(得分:0)
每当移动完成时,必须有一种方法可以被程序检测到。看起来你希望在发生这种情况时将move_req设置为零,但我看不出会导致什么原因。机器如何通知程序已完成移动?
第二点是当你有一个等待检查变量变化的循环时,它会导致CPU峰值。您可以在循环中暂停一些事情,例如System.Threading.Thread.Sleep(100)
,其中100是毫秒暂停。