草庐IT

【Ethercat机器人控制系统开发】倍福Twincat入门教程

淡淡_Nolan 2023-07-18 原文

【Ethercat机器人控制系统开发】倍福Twincat入门教程(一)

一. 简介

本人课题需要搭建一套高性能运动控制系统。在踩坑了很长一段时间后,最终选择基于Ethercat控制方案,写点东西记录一下,也分享给有需要的朋友。
内容可能会涉及,**低成本上手Twincat,伺服电机的配置与点动调试,PLC标准化语言IEC 61131-3编程基础,点到点运动程序编写,高级编程语言(C++,Python)ADS通讯,Matlab算法程序迁移。**有人看就坚持写

1. 倍福,Twincat与Ethercat简要介绍

1. 1 倍福Beckhoff简介

Beckhoff,即德国倍福自动化有限公司,1980年成立于德国,总部位于德国威尔市,主要从事工业自动化生产。
公司始终以基于PC的自动化新技术作为发展理念,主要产品有:工业PC、现场总线模块、驱动产品和TwinCAT自动化软件。

1. 2 Twincat简介

TwinCAT(The Windows Control and Automation Technology)是Beckhoff推出第一款基于PC的控制器。
TwinCAT 软件系统可将任何一个基于PC 的系统转换为一个带多PLC、NC、CNC 和机器人实时操作系统的实时控制系统。TwinCAT 具有以下几点优势:

  1. 仅需一个软件即可实现编程和配置
  2. 集成于 Visual Studio®,界面简单直观,好上手。
  3. 支持 IEC 61131-3 面向对象的扩展功能
  4. 极佳的兼容性:C/C++/Matlab®/Simulink® 作为实时应用程序的编程语言
  5. 支持多种工业总线:EthercatCanopenModbus(232,485)等等(ethercat之外的总线需要外加通信转换模块)。
  6. 简单好用的通信功能ADS通信可以支持与多种高级语言进行通信,

1. 3 Ethercat简介

EtherCAT(以太网控制自动化技术)是一个开放架构,以以太网为基础的现场总线系统,其名称的CAT为控制自动化技术(Control Automation Technology)字首的缩写。EtherCAT是确定性的工业以太网,最早是由德国的Beckhoff公司研发。Ethercat具有许多优点:
,一般的更新速率约为1–30kHz,但也可以使用较低的更新速率,以避免太频繁的直接内存存取影响主站个人电脑的运作。

  1. 高速:EtherCAT的通讯周期很短,可以成为高性能的分散式I/O系统:使用双绞线或光缆可以在30us内处理1000个分布式I/O信号,相当于在100Mbit/s的以太网传输125个字节的资料。读写一百个伺服轴的系统可以以10kHz的速率更新。
  2. 稳定精确:具有纳秒级别的同步性,资料同步时的通讯抖动量低。
  3. 拓扑结构灵活:EtherCAT网络最多可支持65,535个设备,而对拓扑结构没有限制。几乎无限数量的节点可以组成线型、树型、星型拓扑及任何拓扑的组合。
  4. 硬件成本低:Ethercat对于主站设备的需求仅为一个Intel网卡——而无需昂贵的接口卡或协处理器。

二. 学习资源

个人认为,相比于其他的高性能伺服系统,倍福Twincat是相对好入门许多的,这里推荐一些开放的学习资源。

  1. 官方网站(查询产品线和硬件资源)

  2. 倍福虚拟学院(官方教程网站,可用于入门和资源获取)

  3. 官方文档(百科全书)

  4. 《TwinCAT 3.1 从入门到精通》参考书

  5. 另外,B站上有不少的自制和官方教程,感兴趣的小伙伴可以参考一下,搜索关键词“Twincat”。

    前期入门的同学建议花半小时把虚拟学院上关于Twincat的课程看一下。有条件的配合书,可以很快上手。

三. 低成本上手Twincat

虽然说Ethercat设备对硬件的需求不高,但是一般需要先凑齐一套PC+嵌入式主站+Ecat从站IO或者驱动器才可以如果开始正式学习。这对于对于未接触过的初学者或者仅仅想尝试一下的人来说还是有些难以接受。比如一个倍福的嵌入式工控机少说也要一万多,一个支持ecat的伺服驱动器的价格也普遍在2000-3000甚至更高。
因此为了能够低成本快速的上手Twincat,这里分享一个低成本的上手教程,实际效果的话,简单控制一些IO或者是低速的伺服是完全没问题的,但是一些对实时性要求比较高的场景比如多轴的运动控制还是建议上工控机。

1. PC作控制器+虚拟轴调试

第一部分内容:使用个人电脑编辑Twincat项目,并作为控制器运行程序控制虚拟轴。不需要任何硬件。

1. 1 前期准备

仅需要一台带网口的电脑。注意:

  1. CPU选择:Intel或者AMD都可以,但是推荐Intel,因为倍福是跟Intel进行了深入合作的,AMD的兼容性会差一些,实时性也比较差,但是前期学习或者仅作为编程上位机也没啥问题。本教程使用一台台式机,cpu型号为AMD-3700X
  2. v3.1.4024.12
  3. 笔记本电脑和台式机都可以,但是一定是带RJ45网口能直接插网线才行,USB网卡的实时性无法满足ethercat的高实时性需求,经常报错。
  4. 系统需求:WIN10或者WIN7

1. 2 软件安装

最新版下载地址:https://www.beckhoff.com.cn/zh-cn/products/automation/twincat/tc1xxx-twincat-3-base/tc1200.html

历史版本下载地址:https://tr.beckh off.com.cn/mod/page/view.php?id=2287
本教程使用的Twincat版本是v3.1.4024.12

第一次尝试的话其实下什么版本无所谓,下载下最新版就行了,但是如果之后正式使用的话还是尽量确定好一个版本,不要轻易变动,避免兼容性问题。

软件安装过程比较简单,参考虚拟学院教程,安装时间大约在3-5min。

注意:1:版本选择complete版 2:勾选XAE Shell,让软件在内置的VS2013中运行。

软件安装完成后会提示重启。

重启之后,桌面显示Twincat图标,就代表安装完成了。

通过任务栏图标里的TcXarShell打开软件。

1. 3 创建第一个Twincat工程

(1) 软件界面


可以看到软件界面还是熟悉的VisualStudio,比较友好。

(2) 新建项目


创建类型选择Twincat Projects,之后确定项目名称并选择安装位置。
左侧为工程文件结构。注意右上角选择Local表示以本机为目标控制器。也就是将本机的CPU当成一个控制器,作为Ethercat主站。后续如果对嵌入式控制器进行编程则需要选择相应的控制器。

(3) CPU核心设置

首先双击Real-Time图标,进入CPU核心配置界面。点击Read from Target图标,可以看到自己的CPU核心

Intel CPU的电脑勾选Core 0即可

AMD电脑需要电机Set on target。由于amd的兼容性问题,twincat的程序不能直接像intel的cpu那样和Windows共享运行,强行运行会导致系统崩溃蓝屏(蓝了无数次)。因此需要把若干个cpu核心隔离出来,这里设置一个隔离核,之后重启电脑

重启电脑后,打开任务管理器,可以看到windows只能识别出逻辑核心了,其中一个核心仅供Twincat征用。

这里勾选隔离核作为默认核心,注意勾选掉所有的共享核启电脑后,打开任务管理器,可以看到windows只能识别出逻辑核心了,其中一个核心仅供Twincat征用。

(4) 激活配置

电机这个按钮,激活配置并运行。
第一次激活需要激活码,之后每周都会出来一次,不用管,输入就完事了。

之后win10系统的话会遇到这个报错,不要慌张,这是提示需要一个win10的补丁才可以激活。根据提示路径 C:\TwinCAT\3.1\System下找到 win8settick.bat 文件,以管理员权限(右键选择)执行一下,之后重启电脑。

之后可以看到软件下方的图标变绿,就说明系统进入运行模式了

任务栏的Twincat图标也变绿

VT-x报错解决办法 :https://tr.beckhoff.com.cn/mod/data/view.php?d=19&rid=281

有关【Ethercat机器人控制系统开发】倍福Twincat入门教程的更多相关文章

  1. Ruby Readline 在向上箭头上使控制台崩溃 - 2

    当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby​​安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少

  2. ruby-on-rails - 带 Spring 锁的 Rails 4 控制台 - 2

    我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.

  3. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  4. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  5. C51单片机——实现用独立按键控制LED亮灭(调用函数篇) - 2

    说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时

  6. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  7. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  8. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  9. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  10. ruby-on-rails - 在 Rails 控制台中使用 asset_path - 2

    在我的Character模型中,我添加了:字符.rbbefore_savedoself.profile_picture_url=asset_path('icon.png')end但是,对于数据库中已存在的所有角色,它们的profile_picture_url为nil。因此,我想进入控制台并遍历所有这些并进行设置。在我试过的控制台中:Character.find_eachdo|c|c.profile_picture_url=asset_path('icon.png')end但这给出了错误:NoMethodError:undefinedmethod`asset_path'formain:O

随机推荐