右击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的更多相关文章

  1. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何配置虚拟轴 TC3

    在Motion上添加一个NC Task   在Axis上右击添加一个轴,类型为Continuous Axis   在PLC上右击添加新项,然后添加一个PLC项目   在引用中添加TC2_MC2的库引用 ...

  2. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-T_AmsNetID是什么

    该参数是包含六个数字类似于IP地址的字符串形式,例如"1.1.1.2.7.1",如果为空字符串,则默认使用本机的AmsNetID 你可以右击贝福的图标,然后点击About查看当前本 ...

  3. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-TwinCAT自带的找原点功能块MC_Home怎么用

    对于相对编码器类型轴(包括虚拟轴),可以使用贝福提供的找原点功能块MC_Home.   HomingMode是指机器在往前跑的时候(30单位/s的默认速度),当碰到阻挡,则会有一个布尔值从FALSE改 ...

  4. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-报错0X4655,18005错误怎么办

    首先确认驱动器没有报错(如果驱动器报错,请先解决绝对值编码器的清除多圈数据问题) 报错一般上使能就会报错,没法测试运转,而且不管是用贝福自带的NC功能还是自己写的都会一样的效果   请删除在贝福的Et ...

  5. 倍福TwinCAT(贝福Beckhoff)基础教程1.2 TwinCAT安装配置

    由于TC2和TC3都有可能用到,个人推荐都安装,但是注意必须是先安装的TwinCAT2,然后安装TwinCAT3,如果反了可能两个都没法用(打开TcSwitchRuntime提示Both TwinCA ...

  6. 倍福TwinCAT(贝福Beckhoff)应用教程13.1 TwinCAT控制松下伺服 NC高级

    本节主要演示了使用自定义函数实现电机的运动(梯形曲线和S曲线都有实现),这里的JOG+和JOG-,针对单个关节实现了PTP的运动(跟贝福的MoveAbsolute功能块实现效果一致),在此没有介绍运动 ...

  7. 倍福TwinCAT(贝福Beckhoff)应用教程12.3 TwinCAT控制松下伺服 NC进阶

    在前面一节,我们简单介绍了通过PLC+HMI实现完整控制松下伺服的上使能-运动,采集位置,速度等功能,这里我们会大量简化用到的贝福功能块(为了更加实用).首先依然是对单个轴的封装,我们之前的做法,例如 ...

  8. 倍福TwinCAT(贝福Beckhoff)应用教程12.2 TwinCAT控制松下伺服 NC初步

    在前面我们已经学会了使用贝福自带的调试软件完成试运行,接下来是使用TWINCAT PLC实现这个功能,右击PLC添加一个PLC项目   在VISUs上右击添加一个HMI人机界面   目前PLC程序和人 ...

  9. 倍福TwinCAT(贝福Beckhoff)应用教程12.1 TwinCAT控制松下伺服 连接和试运行

    首先是用松下伺服自带的软件可以测试运行(驱动器,电机都连接好,然后用USB线连接到松下伺服驱动器的X1口),打开调试软件会自动提示连接到伺服   一般需要对驱动器清除绝对值编码器数据(驱动器可能报错4 ...

随机推荐

  1. 【转】mybatis循环map的一些技巧

    原文地址:http://blog.csdn.net/linminqin/article/details/39154133 循环key: <foreach collection="con ...

  2. echarts 图表建立步骤

    需要引用的文件 <script src="web/mobile/js/jquery-1.8.3.min.js"></script> <script s ...

  3. 获取mac地址和IP地址方式

    第一种 public class OperateMAC{ public static string GetMacByWMI() { string MacAddr = null; //Managemen ...

  4. Python垃圾回收机制:gc模块(zz)

    在Python中,为了解决内存泄露问题,采用了对象引用计数,并基于引用计数实现自动垃圾回收. 由于Python 有了自动垃圾回收功能,就造成了不少初学者误认为不必再受内存泄漏的骚扰了.但如果仔细查看一 ...

  5. qt include_directories没用

    include_directories之后在.cpp文件中include.h文件没有路径补全说明qt没有找到该.h文件 问题解决: 在add_executable里加入那个.cpp文件就可以了 因为c ...

  6. HDU 多校1.10

  7. Kattis - boxes (dfn序)

    Boxes There are N boxes, indexed by a number from 1 to N . Each box may (or not may not) be put into ...

  8. Xamarin XAML语言教程构建ControlTemplate控件模板 (二)

    Xamarin XAML语言教程构建ControlTemplate控件模板 (二) (2)打开MainPage.xaml文件,编写代码,将构建的控件模板应用于ContentView中.代码如下: &l ...

  9. 概述struts,以及struts如何实现MVC架构的

    概述MVC体系结构? 答:MVC包括三类对象,model是应用对象,view是视图,controller是控制器,它定义用户界面对用户输入的响应方式. 在MVC体系中,模型通常被称为”业务逻辑”,是真 ...

  10. 【动态规划】【记忆化搜索】【dfs】bzoj2748 [HAOI2012]音量调节

    f[i][j]表示第i首歌音量为j是否可能.若是将状态之间建边,那么答案就是max(j){f[i][j]==true&&0<=j<=limit}.于是就是图中dfs一遍判断 ...