在实际项目中,使用了两套TLC6伺服系统,不仅是因为TLC6具有电子凸轮功能,而且TLC6伺服驱动器内置PLC,使实现系统功能的编程更简单方便,且由于是内部编程,使系统响应更迅速。 TLC6内置PLC的编程环境为符合IEC61131-3标准的Codesys编程语言。
如何建立一个Codesys项目
新建项目(主程序) 当您在电脑上安装好Codesys软件后,Target_TLC6的安装是必须的,否则将不能对TLC6伺服系统进行控制。 Target_TLC6安装完成之后,打开Codesys软件,按“新建”按钮,弹出如下图1所示的窗口,选择“TLC6xx”,点击“OK”弹出如图2所示窗口,在此处输入主程序名,并选择您喜欢的语言格式(包括梯形图,结构化文本,功能块图表等),点击“OK”完成主程序建立。
中断程序的创建和任务的配置
由于负责横封动作的TLC6伺服系统是通过电子凸轮功能跟随拉膜伺服电机的,但实际上,皮带拉膜会产生打滑现象,引起生产误差,所以需要TLC6在跟踪的同时以包装袋上的色标为信号启动两套TLC6伺服系统的补偿功能,实现对误差的补偿。补偿功能在中断程序中实现,以保证补偿的快速性和可靠性。
在主程序建立的基础上,右键弹出窗口选择“Add Object…”,窗口中输入中断程序名,选择编程语言格式,中断程序创建完成。
主程序和中断程序建立完成之后,点击屏幕左下角的“Resources”页,进行任务配置。如图5所示在系统事件中右键插入任务,在图6中输入任务名,并选择“freewheeling”,即循环扫描方式。
任务建立完成之后,如图7右键选择添加程序调用,在图8中选择用户定义程序,点击“OK”即可。
以同样的方式添加中断任务,如图9,输入中断任务名,单击选项按钮外部事件触发“triggered by external event”,并选择“TLC6_EVENT_CAP1”。然后在中断任务下添加中断程序调用,如图10,即完成整个的任务配置。
添加库文件
由于初始的Codesys库文件只有一个标准库文件,所以要在库文件管理器中添加运动控制库文件。同样在“Resources”页中,打开“Library Manager”,右键添加库文件,如图11。选“TLC6_MotionLocal_V3002.lib”,如图12完成库文件添加。
如何在Codesys中编写程序(以结构文本语言为例)
- 在程序中添加功能块
在程序窗口如图13中右键,选择“Input Assistant…”,弹出如图14窗口,在左侧对话框中选择标准功能块“Standard Function Blocks”,然后在右侧对话框中点击您要选择的功能块,图14举例选择说明电机“使能”的功能块,点击“OK”后如图15,即可在功能语句中输入变量和数值。如对此功能块有疑问,可用鼠标选择“功能块名”,然后按“F1”帮助。以下程序中出现的所有功能块都用此方法实现。
程序流程 主程序的内容依次是:电机的使能,数据的设置(如,袋长,切刀位置等参数),寻原点,启动电子凸轮,使能电子凸轮。中断程序即是在每次获得色标信号后做:电子凸轮设参考点,以及电子凸轮的补偿。流程图如图16。
3.寻原点的编程
home1(uiAxis:=1 , bExecute:=I_0 , uiType:=7 , diSetPos:=0 , diVHome:=200 , diVOutHome:=200 , udiPOutHome:=0 , udiPDisHome:=0 , bBusy=>busy,bDone=>homeok );
此段程序表示,在外部输入点“I_0”信号给出时,伺服电机以200rpm速度寻找原点,寻原点类型为7(可参考帮助文件),“7”代表以“REF”信号和零点脉冲两个信号作为寻原点依据。当寻原点结束后,变量“homeok”跳变到1,作为下面程序的启动信号。
4.电子凸轮功能的编程
IF (homeok) THEN (*判断寻原点是否结束*)
write_object(1, 53,1, 1);(*启动电子凸轮功能*)
END_IF;
encam:=blockstate =257; (*当电子凸轮状态为257时,可以进行下一步-使能电子凸轮*)
trigcam(CLK:=encam , Q=>startcam );
IF(startcam) THEN
write_object(1, 52,1, 1);(*使能电子凸轮*)
END_IF;
blockstate:=read_object(1, 53, 2);(*读取电子凸轮状态*)
refe1:=blockstate;
5.主程序中中断的触发编程
在TLC6伺服驱动器上有Capture1和Capture2两个捕捉输入点,可同时使用,此项目中只使用了Capture1输入端子。
(*使能Capture1事件*)
IF(Flag=0) THEN
Event:=event_enable(16#08); (*使能Capture1事件*)
Flag:=1;
END_IF;
(*capture1事件设置*)
event_set_cap1(1);(*Capture1任务触发*)
trig_signal_set(1,1,1,TRUE); (*选择触发信号*)
trig_start(1,1,TRUE, FALSE,FALSE, FALSE); (*设置位置捕捉内容*)
capture1_enable:=event_enabled(FALSE);
6.中断程序的编写
(*电子凸轮设参考点*)
IF(refe1 =513) THEN
write_object(1, 52,12, 1);
END_IF;
(*读电子凸轮状态*)
camstate:=read_object(1, 52, 6);
couple:=camstate =2;
camcoupled:=camstate =4;
(*电子凸轮耦合*)
IF(couple) THEN
write_object(1, 52,28, 1);
END_IF;
(*电子凸轮补偿*)
write_object(1,52,30,1);
write_object(1,52,31, compensate);
(*使能下一次Capture1事件*)
event_enable(16#08);
四、通讯的设置以及程序的下载
1.通讯的设置
在程序编写完成后,要设置PC和伺服驱动器连接的通讯参数。如图17,在“Online”选项中选择“Communication Parameters…”,弹出图18窗口,点击新建,选择“Serial (Rs232)”,参数设置如图19所示(通讯端口根据使用的PC设定)。
2.程序的连接、下载
通讯参数设置完成后,同样在“Online”页中点击“Login”,如图19,完成与伺服驱动器的连接和程序的下载。如要求程序掉电保护,则在下载完程序后,选择“Create boot project”,按F5,程序即处于运行状态。