在Codesys中,假如有以下测试需求,有A、B、C型号三种EtherCAT设备,但是每天测试的种类不同,数量不一致,但测试部门希望我们用一个程序来实现切换不同型号设备的测试,应该如何做呢?此时,可以用到Reconfigure这个函数。它的功能就是重启主站。然后我们再通过对指定设备的Enable属性设置为True。即可实现以上需求。具体如下:
(*设置模块的使能*)
IF gvl_io.g_byDeviceSelected<1 THEN
gvl_io.g_byDeviceSelected:=1;
ELSIF gvl_io.g_byDeviceSelected>10 THEN
gvl_io.g_byDeviceSelected:=10;
END_IF
RT1000LNP_V1_6.Enable:=GVL_IO.g_byDeviceSelected=1;
RT1000HNP_V1_6.Enable:=GVL_IO.g_byDeviceSelected=2;
RT2000HNP_V1_6.Enable:=gvl_io.g_byDeviceSelected=3;
RT2000LNP_V1_6.Enable:=gvl_io.g_byDeviceSelected=4;
RT3000HNP_V1_0.Enable:=gvl_io.g_byDeviceSelected=5;
RT3000LNP_V1_0.Enable:=gvl_io.g_byDeviceSelected=6;
RT4000HNP_Device.Enable:=gvl_io.g_byDeviceSelected=7;
RT4000LNP_Device.Enable:=gvl_io.g_byDeviceSelected=8;
RT08DIMP_Device.Enable:=gvl_io.g_byDeviceSelected=9;
gvl_io.g_byDeviceSelected为程序指定,点击按钮即可选中对应的设备,即选中那个设备就对哪个设备使能。
CASE gvl_io.g_byDeviceSelected OF
01:RT1000LNP();
02:RT1000HNP();
03:RT2000HNP();
04:RT2000LNP();
05:RT3000HNP();
06:RT3000LNP();
07:RT4000HNP();
08:RT4000LNP();
09:RT08DIMP();
10:EA7000_L();
END_CASE
同时通过Case程序执行对应硬件设备的测试程序。
//FB声明
reconfigureMaster:DED.Reconfigure;
-----------------------------------------------------------
EtherCAT_Master_SoftMotion.Enable:=GVL_IO.g_bETCmasterReconfigure;;
reconfigureMaster(itfNode:=EtherCAT_Master_SoftMotion);
IF v_bMasterReconfigureTemp<>GVL_IO.g_bETCmasterReconfigure THEN
reconfigureMaster.xExecute:=TRUE;
ELSIF reconfigureMaster.xDone OR reconfigureMaster.xError THEN
reconfigureMaster.xExecute:=FALSE;
END_IF
IF reconfigureMaster.xError THEN
GVL_IO.g_bRecofigureErr:=TRUE;
ELSIF GVL_IO.g_bReset THEN
GVL_IO.g_bRecofigureErr:=FALSE;
END_IF
IF reconfigureMaster.xError THEN
GVL_IO.g_strReconfigureFeedback:='reconfigure error';
GVL_IO.g_udiReconfigureFeedbackColors:=colors.Red;
ELSIF reconfigureMaster.xDone THEN
GVL_IO.g_strReconfigureFeedback:='reconfigure finished';
GVL_IO.g_udiReconfigureFeedbackColors:=colors.MediumSpringGreen;
ELSIF reconfigureMaster.xExecute THEN
GVL_IO.g_strReconfigureFeedback:='reconfigure started';
GVL_IO.g_udiReconfigureFeedbackColors:=colors.Yellow;
END_IF
GVL_IO.g_bETCmasterReconfigure为执行重置按钮。
该功能依赖:CAA Device Diagnosis, 3.5.15.0 (CAA Technical Workgroup)这个库
需要自行添加。
通过以上步骤,即可实现主轴连接不同设备,但仅需一个程序即可实现所有设备测试的需求了,项目中有切换设备调试的需求同理可根据该办法解决,编写配置的逻辑即可。