右击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. hdu 1534(差分约束)

    Schedule Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. 安卓长按交互onCreateContextMenu的简单 用法

    1.可在activity和fragment中使用. 2.使用方法 (1)注册 registerForContextMenu(btn);//btn是要实现交互的控件 (2)重写onCreateConte ...

  3. 隐藏tomcat版本号

    找到catalina.jar, cd /usr/local/tomcat/lib 解压catalina.jar unzip catalina.jar 会生成两个目录 修改配置文件:org/apache ...

  4. frameset框架集

    frame使用注意事项: 1.frame不能脱离frameset单独使用 2.frame不能放在body标签中,不然不起效果. 3.frame的高度只能由frameset来决定. frameset:是 ...

  5. dokcer常用命令

    文章来自于 CSDN docker常用命令详解 docker常用命令分类 常用命令 docker run -d --name express-docker-demo --restart=always ...

  6. POJ 3083 Children of the Candy Corn (DFS + BFS + 模拟)

    题目链接:http://poj.org/problem?id=3083 题意: 这里有一个w * h的迷宫,给你入口和出口,让你分别求以下三种情况时,到达出口的步数(总步数包括入口和出口): 第一种: ...

  7. P2819 图的m着色问题

    题目背景 给定无向连通图G和m种不同的颜色.用这些颜色为图G的各顶点着色,每个顶点着一种颜色.如果有一种着色法使G中每条边的2个顶点着不同颜色,则称这个图是m可着色的.图的m着色问题是对于给定图G和m ...

  8. Floyd-弗洛伊德算法

    今天,研究一下谁都能看懂的弗洛伊德算法. 首先,弗洛伊德算法是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法. 这个算法需要一个用到一个二维数组啊a[][],而a[i][j]表示的就 ...

  9. JVM加载Class文件的机制

    1.Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的, 类装载器所做的工作实质是把类文件从硬盘读取到内存中 2.java中的类大致分为三种:     1.系统 ...

  10. luogu P3368 【模板】树状数组 2

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数数加上x 2.求出某一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个数. ...