zoukankan      html  css  js  c++  java
  • 倍福TwinCAT(贝福Beckhoff)应用教程13.3 TwinCAT控制松下伺服 NC配合完整上位

    这是TwinCAT教程的最后一节,简单讲述了以C#为上位,通过ADS控制TwinCAT下位,实现完整控制两轴模组的功能。可以发现,在上位层已经没有了运动控制的代码,不管是要执行哪种运动,无非是把目标参数写入到绑定的对应变量,然后修改下位的任务号CurrentJob

     

    在C#中一方面需要定时采集机器人的位置,速度还有状态等信息,另一方面需要显示这些信息(或者说利用这些信息)。采集需要足够快(比如判断一条命令是否执行完毕,应该是越快越好,可以立即执行下一条命令),而显示则可以慢一点(可想如果需要大幅更新主界面数据,如果也5ms,10ms更新一次会消耗大量资源,同时也没有什么实用价值)

     

    为了实现单条命令的生成,我们需要得到一种格式,比如下面的两句,要求命令的执行函数名(MOVEJ/MOVEL),目标位置(关节位置数组/TCP位置数组),目标速度,加速度,加加速度。每一家标准工业机器人的语法不太一样,但是都是大同小异。其实可以完善的地方很多,比如用户movej的时候给目标TCP位置而不是关节位置如何处理,比如多加了逗号,引号如何判断等等

    movej([-12.562,-16.032],a = 1200.00, v = 400.00, j = 3000.00);

    movel(p[-143.939,78.180],a = 800.00, v = 200.00, j = 1200.00);

     

    为了实现单条语句的执行,本质上就是生成语句的反过程(这也是单步执行和跳转到指定行执行的原理),解析成功或者失败都要有反馈(通过委托往外传递),一来可以提示用户要执行的语句语法错误,二来在连续执行的时候如果发现了重复指令需要自动跳过执行下一行。

     

    这就牵扯到了连续运行的原理,我们首先把textbox的所有文本按行分割,一行就认为是一句。给定一个起始下标默认从第0行开始执行(字符串命令拆分到数组的第一个元素),连续运行的时候先手动执行第一行。如果完成则C#会通过信号的上升沿捕捉到,然后通过委托告知主界面,主界面把下标加1,接着执行下一句,如果超过了总的行数则下标复位(当然如果是空行或者重复行,或者语法错误行,都应该跳过或者用其他处理办法,比如加红加粗表示这行有问题)

     

    以上简述的只是简单的连续执行原理,所有语法需要自己定义,而且无法掺杂更加高级的语法和判断(比如既然是一行作为一句,就无法嵌套if,switch语句这些判断情况。而且由于所有语句需要自己解析,对于数组,指针,结构体,对象,委托等等变量都很难处理)。简单点说这更像是一个G代码的处理模式,一行就是一行,实用价值也是有的,但无法真正作为编译器使用。

     

    编译器和高级语言的嵌入也是比较复杂的。例如C++或者Linux可以考虑LUA,可以发现官方的演示中测试自定义方法,也可以定义变量,for循环,if语句等等(具体如何嵌入到高级语言还需要读者自己研究)

    https://www.lua.org/cgi-bin/demo

    如果是.NET平台可以使用微软自带的Roslyn编译器,已经是开源的,而且网上有很多可以参考的范例

    http://www.cnblogs.com/TianFang/archive/2012/02/14/2351817.html

     

    此外还有一些Web平台,可以使用类似于JavaScript的语言作为编译器(甚至不需要IDE可以在线编程)

    官方网站:www.compilr.com

     

    官方网站:www.jsfiddle.net

     

    官方网站:www.botskool.com/online-compiler

     

     

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

    我的优酷空间:

    http://i.youku.com/acetaohai123

     

    我的在线论坛:

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

     

    问题交流:

    QQ:910358960

    邮箱:acetaohai123@163.com

     

     

  • 相关阅读:
    软件工程课程总结
    c++第五次作业
    软件工程第四次作业
    c++第四次作业
    软件工程第三次作业
    c++第三次作业
    软件工程基础第二次作业
    c++第二次作业
    c++第一次作业
    软件工程基础第一次作业
  • 原文地址:https://www.cnblogs.com/acetaohai123/p/6823784.html
Copyright © 2011-2022 走看看