.PMAC上位机和下位机交互-设置参数(如修改速度和PID参数)

2019-04-15 17:20发布

在实际工业程序中,经常需要实时更改当前的参数设置。如对于PMAC运动程序来说,我们可能想在运动的时候在窗口界面改变当前的运动速度,这样就可以完成在PC端控制设备的一切行为。

1.思路

对于如下程序 [plain] view plain copy
  1. &1  
  2. CLOSE ;确认所有缓冲区被关闭  
  3.   
  4. OPEN PROG 40  
  5. CLEAR  
  6.   
  7. TA(200)  
  8. TS(20)  
  9. F(30)  
  10. INC  
  11. Linear  
  12.   
  13. p1=1  
  14. While (p1 > 0)  
  15.   X(20) Y(0)  
  16.   Dwell 0  
  17.   X(-20) Y(0)  
  18.   Dwell 0  
  19. EndWhile  
  20.   
  21. CLOSE  
如果希望动态改变运动速度,那么将其改造如下: [plain] view plain copy
  1. &1  
  2. CLOSE ;确认所有缓冲区被关闭  
  3.   
  4. OPEN PROG 40  
  5. CLEAR  
  6.   
  7. TA(200)  
  8. TS(20)  
  9. F(30)  
  10. INC  
  11. Linear  
  12.   
  13. p1=1  
  14. While (p1 > 0)  
  15.   F(p2)  
  16.   X(20) Y(0)  
  17.   Dwell 0  
  18.   F(p2)  
  19.   X(-20) Y(0)  
  20.   Dwell 0  
  21. EndWhile  
  22.   
  23. CLOSE  
这样我们在上位机通过发送命令动态改变p2的值就完成控制运动程序的速度功能了,这就最基本的参数设置思路。再复杂的程序也是通过这种变量控制的方式来完成的,这样的好处在于可以实现规定上下位机交互的变量,直接修改对应的变量值即可,对于自己通过其他方式生成的程序也可以完成参数控制。

2.代码演示

在之前界面上增加参数设置功能,控制运动速度,界面如下:
参数设置代码如下: [cpp] view plain copy
  1. void CTest2Dlg::OnSaveSet()   
  2. {  
  3.     TCHAR szSpeed[MAX_PATH];  
  4.   
  5.     GetDlgItemText(IDE_SPEED, szSpeed, MAX_PATH);  
  6.     SetSpeed(szSpeed);  
  7.       
  8. }  
  9.   
  10. void CTest2Dlg::SetSpeed(TCHAR* szSpeed)  
  11. {  
  12.     TCHAR szRes[MAX_PATH];  
  13.     TCHAR szCmd[MAX_PATH];  
  14.       
  15.     sprintf(szCmd, "p2=%s", szSpeed);  
  16.     PmacGetResponse(0,szRes,MAX_PATH,szCmd);  
  17. }  
注意这里的状态列表新增参数设置按钮控制。 演示源代码下载链接 原创,转载请注明来自http://blog.csdn.net/wenzhou1219