首页 > 代码库 > 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何配置虚拟轴 TC2
倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何配置虚拟轴 TC2
右击NC- Configuration,然后Append Task,然后右击Axis,Append Axis
?
轴的类型可以分为:Continuous Axis,默认的类型,NC可以连续闭环控制该轴,Encoder Axis,编码器类型,NC只能读不能控制,不做任何设置直接确认。
?
有些页面默认是不可用的,只有在RUNNING模式下才会变得可用
?
首先是对编码器的设置,General中设置的是编码器名称和类型(这里不用管,因为是虚拟轴)
?
右击PLC,然后添加PLC项目,把前面写好的PLC程序载入进来。载入之后,将自动识别PLC程序中与NC的交互变量(目前只有两个,NcToPlc和PlcToNc)
?
点击PlcToNc,然后打开Linked to窗口,自动弹出对应的Axis1的对应变量(注意由于前面只添加了一个轴,所以这里只绑定一个)
?
用同样的方法把FromPlc的部分绑定变量
?
然后点击激活配置,可以观察Online页面变成可用状态,NC就基本配置完成了,虚拟轴Axis1就等着PLC给出控制命令,从而实现转动
?
开始编写PLC程序:
在PLC程序中切换到Library Manager,然后再库中右击,添加库,找到TcMC的库,添加完成之后,出现了除了STANDARD.LIB之外的库
?
在全局的字符串中定义好与NC轴的输入输出结构体
VAR_GLOBAL
????PlcToNc AT %Q*????: PLCTONC_AXLESTRUCT;
????NcToPlc AT %I*????: NCTOPLC_AXLESTRUCT;
END_VAR
????
在主程序中添加FBD程序(FBD不常用,但是在表示TwinCAT 标准的运动函数的时候比较方便,我们后期可以把FBD转换成ST语言),右击增加一个Program,然后设置类型是FBD,名称是AxisEnable(假如我们要定义的是MC_Power功能块,这里相当于新建一个类取名为AxisEnable),默认是三个问号
?
双击该程序,然后添加一个BOX,默认自动叫做AND,可以改名为MC_Power,改好之后将会自动变成标准功能块的格式,按回车结束
?
此时我们需要定义这个功能块,前面介绍功能块相当于类,我们需要实例化,同时按照官方定义该功能块。在顶部的问号中输入类的实例化的名称,比如Power,回车之后自动要求确认变量类型(就是MC_Power类型),然后顶部会自动创建Power的变量
?
接下来定义该功能块的各种参数,注意左侧的最后两个就是我们定义好的全局结构体
VAR_GLOBAL
????PlcToNc AT %Q*????: PLCTONC_AXLESTRUCT;
????NcToPlc AT %I*????: NCTOPLC_AXLESTRUCT;
END_VAR
?
然后再Variable_Configuration中也填写好
VAR_CONFIG
????.PlcToNc AT %QB0 : PLCTONC_AXLESTRUCT;????(* ~ {LinkedWith:TINC^NC-Task 1 SAF^Axes^Axis 1^Inputs^Axis 1_FromPlc} *)
????.NcToPlc AT %IB0 : NCTOPLC_AXLESTRUCT;????(* ~ {LinkedWith:TINC^NC-Task 1 SAF^Axes^Axis 1^Outputs^Axis 1_ToPlc} *)
END_VAR
?
?
用户可以在InfoSys中找到每个功能块的定义
?
对于右侧的参数,鼠标移动到伸出的直线部分,右击然后Assign就可以设置参数了(你可以在前面定义好,也可以在这里直接输,回车之后会弹出窗口要求确认变量类型)
?
这样就完全定义好了
?
定义好MC_MoveAbsolute模块,注意是在MAIN上面右击添加一个Action,然后添加一个BOX,然后设置名称为MC_MoveAbsolute,同样有很多输入输入变量(除了AxisRefOut是全局的,跟前面一样套用)
?
注意MoveAction是一个功能块,它定义的变量都会出现在MAIN中,而不同于前面的AxisEnable是一个程序,他的变量就是自身的(访问是通过AxisEnable.XXX来访问的)
?
完整的程序运行运行,该虚拟轴将会在0-2000的位置往复运动
?
已经能看到PLC控制NC虚拟轴运动之后,我们可以尝试在TwinCAT Scope中看位置,速度,加速度曲线。,打开TwinCAT ScopeView,然后新增一个
?
新增一个Channel
?
修改名称,然后在Acquisition中设置监控的变量(位置对应了ACTPOS)
?
因为我们已经知道PLC程序是控制电机在0-2000的位置跑,所以这里可以设置上下限为-1000到3000,也可以设置为其他数值,设置好之后,先启动PLC程序,然后再启动这里,可以看到默认已经绘制了位置曲线
?
可以修改颜色和画笔粗细,在Style页面中
?
用同样的方法监控速度和加速度,可以运行之后看最大值最小值然后再修改速度和加速度的上下限(可以直接复制位置的通道然后修改,注意分别对应了ACTVELO和ACTACC)
?
最后可以看到三条曲线如下图所示,注意可以修改单位
?
为什么加速度曲线一直是1000呢,因为我们没有设置编码器类型,将编码器类型改成POSVELOACC,然后就可以监控加速度
?
改完之后的曲线如下图所示
?
?
?
更多教学视频和资料下载,欢迎关注以下信息:
我的优酷空间:
http://i.youku.com/acetaohai123
?
我的在线论坛:
http://csrobot.gz01.bdysite.com/
?
问题交流:
QQ:910358960
邮箱:acetaohai123@163.com
?
倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何配置虚拟轴 TC2