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

 

在VISUs上右击添加一个HMI人机界面

 

目前PLC程序和人机界面都是空的,我们要通过这两个实现我们自定义的点动。首先右击Reference添加TC2_MC2的类库(这个类库是Motion Control的类库)

 

右击GLVs,添加两个全局变量,注意类型为AXIS_REF(比较特殊的类型,是跟NC轴交互的变量),在TWINCAT2中不太一样,一个AXIS_REF相当于PlcToNC+NcToPlc一对变量(因为PLC需要将数据传给驱动器,又需要从驱动器获取指定的数据,所以本质上是一对变量,只不过TWINCAT3把他们放到一起了)

Axis_1:AXIS_REF;

 

PlcToNc AT %Q*    : PLCTONC_AXLESTRUCT;

NcToPlc AT %I*    : NCTOPLC_AXLESTRUCT;

 

选中Axis1,然后Link To PLC中选择刚才新建的AXIS_REF类型变量(如果没有显示,就点击左上角的激活配置然后再绑定)

 

在编写具体程序的时候(不会每一行都讲一遍,基本看代码+参照基础的培训视频即可),注意我们添加了一个特殊类型的变量,让变量添加AT%Q就是表示他可以跟驱动器的某个参数绑定(从PLC写入到驱动器的数值),我们前面讲过需要在实际运行之前将Modes of operation改成8,需要先在MAIN程序中写,然后激活配置,然后自己绑定

AxisControlWord AT%Q*:SINT:=8;//Normally will be 8

 

说明:因为只是初步验证,程序结构会尽可能简化。但是获取位置,速度,错误是任何项目都必不可少的,而且应该放在程序最前面,一旦错误发生了,后续的就不要再进行了。

 

说明:主程序通过一个INT类型变量的切换实现不同的功能(这个是自定义的,比如数值1表示清除错误,2表示上使能,3表示下使能,以此类推),建议在0状态的时候让要用的功能块都变成FALSE并执行,这样下次点击某个按钮的时候就会产生上升沿,从而执行运动(要充分认识到TWINCAT的扫描周期的原理,必须是这个周期为FALSE,下个周期为TRUE,才能产生上升沿,很多功能块才能真正执行)

 

说明:在每一个功能块执行的时候,尽量做一个判断,如果执行成功了,给字符串赋一个done,否则是doing,以此来区分是否成功执行(在人机界面上可以看到字符串知道是否执行完成),当然你也可以每次定位到功能块的指定变量上看是否为TRUE,但是这样做显然效率更高,只要看HMI一个即可。

 

说明:这里演示的功能块大部分是没用的(至少做实际项目上很少用),比如一个绝对运动模块就可以实现相对运动,匀速运动这些功能,那么相对运动,匀速运动就是多余的。而标记零点的功能并没有把值写入到文件或者写入到驱动器的参数中去,下次重启项目还需要重新标记零点,所以也不完善。这些都将在后面的程序中完善,这里着重需要理解TWINCAT提供的典型的功能块。

 

 

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

我的优酷空间:

http://i.youku.com/acetaohai123

 

我的在线论坛:

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

 

问题交流:

QQ:910358960

邮箱:acetaohai123@163.com

 

 

倍福TwinCAT(贝福Beckhoff)应用教程12.2 TwinCAT控制松下伺服 NC初步的更多相关文章

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

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

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

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

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

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

  4. 倍福TwinCAT(贝福Beckhoff)应用教程13.3 TwinCAT控制松下伺服 NC配合完整上位

    这是TwinCAT教程的最后一节,简单讲述了以C#为上位,通过ADS控制TwinCAT下位,实现完整控制两轴模组的功能.可以发现,在上位层已经没有了运动控制的代码,不管是要执行哪种运动,无非是把目标参 ...

  5. 倍福TwinCAT(贝福Beckhoff)应用教程13.2 TwinCAT控制松下伺服 NC自定义直线插补

    对于MOVEJ的关节运动来说,我们只关心每个电机的角度(只需要考虑多个电机协同开始运动和结束运动,关键是对每个电机加速度均一化,从而一起跑一起停,这部分内容可以参考机器人学导论以获取更加详细的说明), ...

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

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

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

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

  8. 倍福TwinCAT(贝福Beckhoff)应用教程11.1 TwinCAT应用小程序1 如何读写数字量模拟量输入输出(DI,DO,AI,AO)

    常见的模拟量模块(还有更高端和更低端的,使用方法都一样) EL3054和EL4024(4路模拟量输入和输出模块)   常见的数字量模块(还有更高端和更低端的,使用方法都一样) EL1809和EL280 ...

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

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

随机推荐

  1. 【 Keepalived 】Nginx or Http 主-主模式

    上一篇:[ Keepalived ]Nginx or Http 主-备模式 在此基础上进行修改并实现 Keepalived主-主模式 首先,需要理解的是:主-备模式是一个VIP在工作,主-主模式则需要 ...

  2. python如何通过pymongo连接到mongodb?

    python版本2.7,mongodb2.6.9,pymongo 首先在mongodb中创建一个数据库users,然后连接到users from pymongo import MongoClientm ...

  3. 对tmemorystream的一些改进_delphi教程

    http://www.cnblogs.com/linyawen/archive/2010/12/11/1903072.html 怎么又是关于Stream的,呵呵,应该说只是最近比较关心程式的效率问题, ...

  4. [libgdx游戏开发教程]使用Libgdx进行游戏开发(10)-音乐和音效

    本章音效文件都来自于公共许可: http://files.cnblogs.com/mignet/sounds.zip 在游戏中,播放背景音乐和音效是基本的功能. Libgdx提供了跨平台的声音播放功能 ...

  5. (九)MySQL用户和权限管理

    (1)用户管理 1)登录和退出mysql 例: mysql -h192.168.111.150 -P3306 -uroot -predhat mysql -e 'select user,host,au ...

  6. Codeforces 608 A. Saitama Destroys Hotel

      A. Saitama Destroys Hotel   time limit per test 1 second memory limit per test 256 megabytes input ...

  7. 将csv格式的数据文件导入/导出数据库+添加新的字段

    最近一直忙于实验室的事情,没有好好更新博客,在抓包的过程中,遇到了很多问题. 因为我常用Wireshark将抓包信息导出为csv文件,这里简单mark一下将csv文件导入/导出到数据库的2种方法: 一 ...

  8. 揭秘响应式web设计

     0.引言 响应式web设计的作用主要使网页能在不同小大的显示窗口下依然优雅.当前的显示窗口有pc,ipad,iphone以及一些其他的设备.不同的显示窗口的分辨率各不相同,如何在不同的分辨率的情况下 ...

  9. RabbitMQ (四) 工作队列之公平分发

    上篇文章讲的轮询分发 : 1个队列,无论多少个消费者,无论消费者处理消息的耗时长短,大家消费的数量都一样. 而公平分发,又叫 : 能者多劳,顾名思义,处理得越快,消费得越多. 生产者 public c ...

  10. Integer 类和 int 的区别

    http://www.cnblogs.com/ysocean/p/8075676.html public static void main(String[] args) {     Integer i ...