代码执行顺序

时间:2015-02-20 20:22:47

标签: vb.net plc

我是一名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来考虑代码序列,它们以特定频率重复扫描所有内容。

1 个答案:

答案 0 :(得分:0)

每当移动完成时,必须有一种方法可以被程序检测到。看起来你希望在发生这种情况时将move_req设置为零,但我看不出会导致什么原因。机器如何通知程序已完成移动?

第二点是当你有一个等待检查变量变化的循环时,它会导致CPU峰值。您可以在循环中暂停一些事情,例如System.Threading.Thread.Sleep(100),其中100是毫秒暂停。