这一节我们介绍简单的NC运动(前面所讲的所有内容都是PLC编程和HMI的界面,算是基础知识),这里NC就是控制伺服电机的部分(当然还不是实际的NC轴,是虚拟轴,但是用到的函数都是一样,可以为后面的实际应用做准备),既然用到了贝福的NC功能,就要添加对应的库

 

首先添加一个让轴上使能的PRG(注意是FBD格式)

 

在第一个空行后面插入空运算块,然后在中间的???里面输入运算块的名称(NC的函数名,NC的函数就是控制轴运动的函数,无非是上使能,下使能,位置,速度等等运动,跟运动控制卡提供的函数类似),输入MC_Power之后,该块直接变成了指定的形式(左侧的都是输入,右侧的都是输出)

 

NC的函数本质是一个FB的功能块,而且注意TC2和TC3的不太一样,最大的区别就是TC3把跟轴交互的输入输出变量做成了一个(这个以后会讲到),我们只要记住在TC3中一个轴跟NC交互的就是一个AXIS_REF类型变量,这里把所有变量都定义成10个元素的数组,是为了方便(假如有多个轴要绑定就不需要再声明这么多变量了),左侧的BufferMode和Options也可以不管照抄即可(前面讲了很多贝福的模块很复杂,而实际上我们用到的部分很简单,所以不需要每个细节都掌握)

 

右侧如果没有输出符号,可以右击引脚,然后插入输出即可

 

我们既然定义好了这样一个功能块,如何使用呢?首先添加一个NC的配置项目(PLC的配置和NC的配置本质上是分开的,因为NC就是对所有IO输入输出的配置,而PLC程序怎么写跟外部设备怎么配没关系)

 

在Axis上右击添加一个新的轴(所有参数保持默认即可)

 

双击Axis 1,然后在Settings中把Link To PLC设置成一个PLC中的对应变量(注意前面创建完了AXIS_REF变量之后要点击激活配置,否则这里不会自动弹出来有效变量)

 

如果是实际的轴还需要配置其他参数,比如编码器分辨率,但是虚拟的就无所谓了,只需要把Monitoring中的跟随误差检测这些设置为FALSE即可,设置完了还是点击左上角的激活配置,确认Online value也是FALSE才说明真的写进去了

 

NC的简单配置完成之后,我们继续写程序要实现的功能,为了简单只使用一个绝对运动功能块,输入还是一个上升沿触发,注意输出仅当已经到达目标位置的时候Done才是TRUE,否则为FALSE,一个绝对运动模块需要位置,速度,加速度,减速度,加加速度这些参数(S曲线的PTP运动),我们还是使用数组来对应

 

这些都有了之后,程序就很好写了,在0状态的情况下,将绝对运动模块复位,点击按钮将可以上使能和下使能,也可以让虚拟轴按照给定的运动参数运动到指定的位置,注意为了在人机界面中可以看到程序的执行情况,还是做了一个字符串表示是否上使能成功,是否运动完成

 

注意打开Axis 1的Online页面对照,点击上使能,下使能,绝对运动执行的时候,都可以在这个页面看到轴的数据变化(当然这里只是测试了最简单的两个模块,实际上轴运动的时候可能会报错,会需要采集错误的模块,清除错误的模块,还需要停止运动的模块等等,都将在实际应用案例中讲解)

 

理论上,获取轴的位置,速度都是有指定方法的(如MC_ReadActualPosition),这里为了简单,还是只是用了轴的自身的属性(可以对AXIS_REF类型加深理解,一个AXIS_REF类型包括了FromPLC和ToPlc的两部分数据,PLC程序可以从一个AXIS_REF类型中获取到指定的数据或设置AXIS_REF的数据,在本节的另一篇文章中将介绍在TC2中同样的内容的做法,TC2是讲两部分数据分开的,需要分别绑定到同一个轴上)

 

事实上,在配置好一个虚拟轴(实际轴也是一样)之后,激活配置,不运行PLC程序,也可以通过每个Axis页面的Online测试这个轴,比如Set-All可以伺服上使能,F2,F3可以慢速点动,F1,F4可以快速点动

 

可以在Function中测试绝对运动,相对运动,往复两点等

 

可以新建一个轴,并将轴设置为丛动轴(以一些贝福自带的从动方式跟随主动轴的运动),注意需要两个轴都手动Set-All上使能。但是这些功能都不太常用,所以只要了解即可。

 

 

更多教学视频和资料下载,欢迎关注以下信息:

我的优酷空间:

http://i.youku.com/acetaohai123

 

我的在线论坛:

http://csrobot.gz01.bdysite.com/

 

问题交流:

QQ:910358960

邮箱:acetaohai123@163.com

 

 

 

倍福TwinCAT(贝福Beckhoff)基础教程7.1 TwinCAT 如何简单执行NC功能块 TC3的更多相关文章

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

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

  2. 倍福TwinCAT(贝福Beckhoff)基础教程1.1 TwinCAT背景知识

    本节附件中有很多PPT介绍贝福TwinCAT和EtherCAT的相关技术,在此只做简单说明. 简单总结:EtherCAT就是一种总线技术,具有速度快,稳定性高,布线简单等优点,详细可以参考下面这个PP ...

  3. 倍福TwinCAT(贝福Beckhoff)基础教程6.1 TwinCAT如何与高级语言通讯

    因为使用TwinCAT的人用途不同,重视点就不同.如果用来代替传统PLC+HMI做项目的,很少会需要用到跟高级语言通讯,但是如果是用来做运动控制平台如做机器人运动控制器的,就肯定会用到.不管是否用得上 ...

  4. 倍福TwinCAT(贝福Beckhoff)基础教程5.1 TwinCAT如何执行系统命令

    TwinCAT提供了一系列的执行Windows系统命令的方法 Name 描述 NT_Shutdown 关机操作系统 NT_AbortShutdown 取消关机操作系统命令 NT_Reboot 重启操作 ...

  5. 倍福TwinCAT(贝福Beckhoff)基础教程4.1 TwinCAT如何读写TXT文件

    TwinCAT提供了FB_FileRead等一系列读写文件的方法,本小程序演示的是多个贝福自带的FBD功能块连起来用的方法,跟前面讲的一样,建议在初始化的时候把所有FBD都复位,准备使用   真正的读 ...

  6. 倍福TwinCAT(贝福Beckhoff)基础教程4.2 TwinCAT如何读写CSV文件

    本程序只是在官方范例程序上稍作修改,在官方原有的范例中,演示了多种模式的读写(可以认为CSV文件是比TXT文件需要更多数据量的时候使用,比如记录一个小型的数据库集合)   但是写的比较混乱,甚至没有H ...

  7. 倍福TwinCAT(贝福Beckhoff)基础教程2.2 TwinCAT常见类型使用和转换_字符串

    一般声明字符串都会加一个长度的限制,比如A:STRING(80);至于真实的字符串长度不要超过这个限制即可   在测试中,我演示了两个字符串的方法,CONCAT字符串拼接和REPLACE字符串替换.拼 ...

  8. 倍福TwinCAT(贝福Beckhoff)基础教程7.1 TwinCAT如何简单执行NC功能块 TC2

    TC2的程序是在TC3的基础上稍作调整,只说明不同点,请先看TC3的. TC2中的一个原本是AXIS_REF类型变量被拆成了两个(PLCTONC_AXLESTRUCT和NCTOPLC_AXLESTRU ...

  9. 倍福TwinCAT(贝福Beckhoff)基础教程3.1 TwinCAT如何编写简单的计算器

    把编写简单计算器作为入门的第一个范例程序,主要是因为比较简单,而且综合了HMI,数据类型,数据转换,PRG和FBD等功能块的混合等知识,个人认为还是比较适合用来快速上手的.由于是第一个范例,所以视频教 ...

随机推荐

  1. 4.shell预定义变量

    就是shell设计者实现预定好的变量,可以直接在shell脚本中使用$$:当前进程的进程号(pid)$!:后台运行的最后一个进程的进程号(pid)$?:最后一次执行的命令的返回状态,如果这个变量的值为 ...

  2. jquery 操作dom效率测试------html和append插入文档

    $(function () { var htmlResult = createHtmlContent(100); console.log(htmlResult) insertHtml.call($(& ...

  3. 一步步疑难解析 —— Python 异步编程构建博客

    声明:该项目学习资源主要来自廖雪峰的Python教程,参见 http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6 ...

  4. Jmeter 监控远程服务器

    压力测试中如何监控服务器的性能呢? 性能选取哪些指标? 环境配置: Jmeter安装路径:E:\SOFEWARE\apache-jmeter-3.1: 需要将JMeterPlugins-Extras. ...

  5. HDU 1180 诡异的楼梯【BFS/楼梯随时间变化】

    诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submis ...

  6. POJ 2488 A Knight's Journey (回溯法 | DFS)

    题目链接:http://poj.org/problem?id=2488 题意: 在国际象棋的题盘上有一个骑士,骑士只能走“日”,即站在某一个位置,它可以往周围八个满足条件的格子上跳跃,现在给你一个p ...

  7. 用JDBC操作MySQL——大量数据库操作时使用批处理提速

    之前所有的操作由于数据量很小,所以没有进行批处理的优化,性能也没有出现明显的恶化,但是随着我用java处理数据量的大幅提高,频繁使用静态SQL语句的方法严重降低了处理效率,这里总结一下JDBC批处理的 ...

  8. Python的异步编程[0] -> 协程[1] -> 使用协程建立自己的异步非阻塞模型

    使用协程建立自己的异步非阻塞模型 接下来例子中,将使用纯粹的Python编码搭建一个异步模型,相当于自己构建的一个asyncio模块,这也许能对asyncio模块底层实现的理解有更大的帮助.主要参考为 ...

  9. hdu6156

    hdu6156 题意 求 \([2, 36]\) 进制下,给定区间内的数是回文数的个数.每存在一个回文数,答案加上该回文数的进制. 分析 10进制下回文数是 数位DP 很常见的问题,这道题只需要把在转 ...

  10. zoj2318

    zoj2318 题意 一个平面上给出很多圆,其中一个圆为现在自己的位置,问这个圆能不能冲出其它圆的包围(不能与其它圆相交). 分析 将所有圆心平移,使得自己的圆圆心处于原点,将所有圆半径增加自己圆的半 ...