基于BECKHOFF TWINCAT 3的模块化C++实时性研究
TwinCAT编程软件介绍

8 Bit
16 Bit 32 Bit 8 Bit 8 Bit 16 Bit 16 Bit 32 Bit 32 Bit
12
第三讲
实型
TwinCAT PLC数据类型
又称浮点型。
REAL: 占32Bit地址空间
字符串型
STRING: 字符型数据的宽度在变量声明时指定,若没有指定,系统默认宽度为80个字符。每个字符占一 个字节(8 Bit)的地址空间。 举例:str:STRING(35)=„This is a String‟;
T#60m0s0ms
T#8052m18s3ms 或T#5d14h12m18s3ms 举例 TIME_OF_DAY 或 TOD TOD#15:36:10.340 TOD#11:38 TOD#00:00 TOD#00:00:00.100
16#EE80,16#0036
16#19D3,16#1CCC
从00时00分00秒开始以毫秒计算,占32 Bit地址空间 低16 Bit,高16 Bit 16#1764,16#0359 16#09C0,16#09C0 16#0000,16#0000 16#0064,16#0000
程序的调用
在IL中调用: CAL PRGExample LD ST PRGExample.PAR ERG
在ST中调用: PRGEample; ERG:= PRGEample.PAR;
在FBD中调用: PRGEample
PAR
ERG
11
第三讲
TwinCAT PLC数据类型
布尔型
BOOL: 真( TRUE )与 假( FALSE ),占用1位(Bit)地址空间
整型
类型 下限 上限 占用地址空间
BYTE
Beckhoff测量模块

Beckhoff 的自动化技术适用于各种信号和现场总线,可为所有常用的 I/O 信号、模拟量信号和现场总线系统提供全系列的现场总线组件。
EtherCAT 是用于实现工业自动化的以太网解决方案,具有性能优异和操作简单的特点。
本书详述了 Beckhoff 现场总线模块中的测量模块、高精度模块、XFC 模块和宽温模块。
目录现场总线端子模块简介测量模块的的应用• 只有 12mm 宽的测量仪器——基于现场总线的测量模块• 称重模块介绍• 三相电力模块介绍• 万用表介绍• 振动测量模块介绍• 温度测量模块介绍• 高精度模块• XFC 模块• 宽温模块SCOPE VIEW 2 软件介绍只有 12 mm 宽的测量仪器——基于现场总线的测量模块称重模块介绍三相电力测量模块介绍EL3356 和 EL3356-0010 称重测量端子模块可以直接连接一个电阻桥或者 1 个 6 线制的称重传感器,最终的重量值作为一个过程数据在模块内部计算,不需要在 PLC 上面进行额外的计算。
为了满足各种需求,这系列模块有以下特点:• 测量误差 <0.01%• 高分辨率:16 位(EL3356)或者 24 位(EL3356-0010)• 采样时间:10 ms(EL3356)或者 100 μs(EL3356-0010)• 电路自整定——消除温漂和时漂• 分布式时钟模式——可以获取采样数据的具体时间(仅 EL3356-0010)• 手动输入传感器的铭牌参数(如 KG 和 mV/V)以及通过整定程序来整定传感器的参数(如零平衡点)• 预制皮重功能,可以在测量值中去掉产品外包装的重量• 针对高速动态称重的特殊功能可以使用 EL3356 来实现高精度慢速称重测量任务,而 EL3356-0010 特别适合用于快速、准确监测扭矩或张力的传感器。
此类传感器的应用范围包括:• 称重任务:慢速料仓测量或快速装袋• 运动部件的张力测量• 静载荷下的变形测量和变形报警• 通过传感器变形进行压力测量EL3403、EL3413 和 EL3773 EtherCAT 电力测量端子模块可以直接通过现场总线对相连工厂或建筑物电网进行能耗分析,也可以对各个用电设备进行具体的能耗数据分析。
TwinCat软件基本使用教程

Beckhoff公司TwinCat软件基本使用教程协助:1、<能助信息论坛>:/bbs2、<倍福(Beckhoff)自动化QQ群>:463707183、<问题反馈邮箱>:thankchina@第二篇认识TwinCat软件主要分为2大部分:从图中可以看到,“System Manager”和“PLC Control”。
System Manager:系统管理器:进行配置整个控制系统。
下面请参考 ====System Manager 操作==== 部分内容;PLC Control:PLC控制器:编写控制程序。
下面请参考 ====PLC Control 操作==== 部分内容;====System Manager 操作====1、连接到目标系统:打开System Manager管理器窗口,注意此时窗口的右下脚标志为Local (192.168.0.100.1.1) |Config Mode如下图:下一步,选择需要控制的目标系统,按下Choose Target… 按钮,出现Choose Target System窗口:下一步,选择搜索整个以太网,按下Search (Ethernet) 按钮,并在出现的窗口中按下Broadcast Search按钮,显示出搜索到的TwinCat系统,显示为类似下面窗口:在Host Name中选择需要连接的工控机,点选左下脚的Add Route按钮,显示登陆密码输入窗口:输入正确的用户名和密码,(另:参考==== 远程桌面连接 ====进行设置该用户名和密码)点选OK按钮,并自动退回到Add Route Dialog窗口:点选窗口中的Close按钮返回到Choose Target System窗口:此时选择需要连接的工控机,并点选OK按钮,返回System Manager管理器主窗口,注意此时窗口的右下脚标志为CX_XXXXX (5.1.127.166.1.1) | RTime X%如下图:窗口的右下脚表示的是当前选择的系统和当前系统的状态。
BECKHOFF TwinCAT CNC简明操作手册

BECKHOFF 金属加工 CNC 系统从入门到精通
CNC 软件更新: CNC 部分版本在应用中需要更新补丁,譬如我们在使用 CNC 1506E 版本的时候,如果用到转为激光切割开
发的尖叫控制功能时,需要加装补丁文件。 更新补丁方法如下: 1、 解压缩 TcISG 1506e.01 文件。
2、 将解压文件夹中的【ahmi_ads.exe】复制到 TWINCAT 软件安装位置的 C:\TwinCAT\Cnc Tools。 将压缩文件内容替换到 C:\TwinCAT\Cnc Tools 中的【ahmi_ads.exe】文件。
1Hale Waihona Puke 模式相关 2)CNC 状态 3)特殊功能 第五章 CNC 工程特殊功能介绍 第五章:
BECKHOFF 金属加工 CNC 系统从入门到精通
第一章 调试准备
概述: 倍福 CNC 系统是建立在倍福的 TwinCAT NCI 软件基础上的一个应用。倍福 CNC 系统是一套标准的应用系统:G
代码格式遵循德国 DIN66025 标准,PLC 程序遵循 IEC61131-3 标准,配置界面在 C#程序下编写的。倍福 CNC 系统是 一套完整的 CNC 应用系统,功能涵盖了普通的 CNC 插补功能,到复杂的空间坐标转换功能,RTCP\TLC\KINEMIC 坐 标转换,可以实现多通道、多种类型 CNC 轴、高速切割、样条等标准 CNC 功能等;倍福 CNC 系统是一个完善的开 发平台,适合用于磨床、钻床、铣床、车床、特殊机械如等离子、激光机床等。 一、控制硬件要求
Twincat使用

Beckhoff公司TwinCat软件基本使用教程协助:1、<能助信息论坛>:/bbs2、<倍福(Beckhoff)自动化QQ群>:463707183、<问题反馈邮箱>:thankchina@第二篇认识TwinCat软件主要分为2大部分:从图中可以看到,“System Manager”和“PLC Control”。
System Manager:系统管理器:进行配置整个控制系统。
下面请参考 ====System Manager 操作==== 部分内容;PLC Control:PLC控制器:编写控制程序。
下面请参考 ====PLC Control 操作==== 部分内容;====System Manager 操作====1、连接到目标系统:打开System Manager管理器窗口,注意此时窗口的右下脚标志为Local (192.168.0.100.1.1) |Config Mode如下图:下一步,选择需要控制的目标系统,按下Choose Target… 按钮,出现Choose Target System窗口:下一步,选择搜索整个以太网,按下Search (Ethernet) 按钮,并在出现的窗口中按下Broadcast Search按钮,显示出搜索到的TwinCat系统,显示为类似下面窗口:在Host Name中选择需要连接的工控机,点选左下脚的Add Route按钮,显示登陆密码输入窗口:输入正确的用户名和密码,(另:参考==== 远程桌面连接 ====进行设置该用户名和密码)点选OK按钮,并自动退回到Add Route Dialog窗口:点选窗口中的Close按钮返回到Choose Target System窗口:此时选择需要连接的工控机,并点选OK按钮,返回System Manager管理器主窗口,注意此时窗口的右下脚标志为CX_XXXXX (5.1.127.166.1.1) | RTime X%如下图:窗口的右下脚表示的是当前选择的系统和当前系统的状态。
基于TwinCAT的主减速器试车台监测系统设计

Design of monitoring system for a main gearbox bench based on TwinCAT
Li Xiongbin,Xia Jiqiang,Man Qingfeng ( School of Mechanical Engineering & Automation,Beihang University,Beijing 100191,China)
根据 5 类传感器输出信号,搭建现场设备层总线 结构,现场设备层硬件拓扑图如图 2 所示。
图 1 系统总体构成图
2 系统详细设计
2. 1 PLC 数据实时采集 根据传感器信号的类型,构建现场总线、EtherCAT
总线二级总线结构,利用 TwinCAT PC 作为 EtherCAT 软主站,以实现可编程逻辑控制器( PLC) 对数据的实 时采集。 2. 1. 1 传感器信号的分类
* 国家科技重大专项项目( 2010ZX04014-017)
123
2015 年第 6 期
现代制造工程( Modern Manufacturing Engineering)
1 系统总体构成
试车台监测系统基于 TwinCAT 软 PLC 技术,采用 分层的结构模型,由数据层、HMI 层、TwinCAT 层和现 场设备层 4 大部分组成。现场设备层由 EtherCAT 及 现场总线二级总线结构组成,将现场底层传感器信号 通过现场总线 ( PRPFIBUS-DP、CANopen 及 EtherCAN 总线) 构成分布式的采集网络,并将不同的现场总线 信号转换为高速实时的 EtherCAT 信号。TwinCAT 层 构成 EtherCAT 软主站,通过 TwinCAT System Manager 实现对各总线的访问,TwinCAT PLC Control 进行数据 的处理。HMI 层采用 C #高级语言完成 C #程序的编 制,实 现 采 集 量 的 监 测 和 报 警、用 户 管 理,以 及 与 TwinCAT 的通信及对数据层的访问。数据层采用 Microsoft SQL Server 2008 构建数据库,实现试车数据的 管 理。 HMI 层 C # 程 序 通 过 ADS ( Automatic Device Specification) 与 TwinCAT 进 行 通 信,通 过 ADO. NET 技术访问数据库。图 1 所示为系统总体构成图。ຫໍສະໝຸດ 传感器类型 1 2 3 4 5
BECKHOFF技术_TwinCat的特点

TwinCAT特点 BECKHOFF技术特点
TwinCAT PLC/NC 性能参数 (安装在标准 P4 主板上 主板上): 安装在标准
1000 条PLC 命令所需执行时间 0,9 微秒 20 微秒 30 微秒 50 微秒 100 个伺服轴所需执行时间 更新1000 更新1000 个 I/O (EtherCAT) 所需通信时间
只要以太网能够到达的地方, 只要以太网能够到达的地方 TwinCAT通讯就能到达 通讯就能到达
丰富的调试诊断工具
TwinCAT特点 BECKHOFF技术特点
• 无须仿真,PLC程序可直接在开发环境所在的机器上运行。 无须仿真, 程序可直接在开发环境所在的机器上运行。 程序可直接在开发环境所在的机器上运行 • 类似高级语言的调试功能,支持断点功能。 类似高级语言的调试功能,支持断点功能。 • BECKHOFF另外提供一些免费的工具软件, BECKHOFF另外提供一些免费的工具软件, 另外提供一些免费的工具软件 示波器软件: 示波器软件:scope view, , 可视化组件: 可视化组件:Visulization, , 设备仿真功能库 …… • TwinCAT Freerun模式具有硬件诊断功能。 模式具有硬件诊断功能。 模式具有硬件诊断功能
支持源代码下载, 支持源代码下载 上传源代码时所 有注释均可保留
只要计算的CPU够快 够快, 只要计算的 够快 TwinCAT的任务周期最短 的任务周期最短 可至50微秒 可至 微秒
丰富的功能库
TwinCAT特点 BECKHOFF技术特点
运行速度快
TwinCAT PLC/NC:
Execution time / µs
1200 1000 800 600 400 200
EtherCAT系统搭建与测试指导(采用Beckhoff 公司的测试套件)

EtherCAT系统搭建与测试指导(采用 Beckhoff公司的 TC9910-B112测试套件)Version 0.1Date: 2010-10-09版权申明TrademarksBeckhoff®, TwinCAT®, EtherCAT®,Safety over EtherCAT®,TwinSAFE® andXFC® are registered trademarks of and licensed by Beckhoff Automation GmbH. Other designations used in this publication may be trademarks whose use by third parties for their own purposes could violate the rights of the owners.Patent PendingThe EtherCAT Technology is covered, including but not limited to the following German patent applications and patents: DE10304637, DE102004044764, DE102005009224, DE102007017835 with corresponding applications or registrations in various other countries.DisclaimerThe documentation has been prepared with care. The products described are, however, constantly under development. For that reason the documentation is not in every case checked for consistency with performance data, standards or other characteristics. In the event that it contains technical or editorial errors, we retain the right to make alterations at any time and without warning. No claims for the modification of products that have already been supplied may be made on the basis of the data, diagrams and descriptions in this documentation.Copyright© Beckhoff Automation GmbH 05/2009.The reproduction, distribution and utilization of this document as well as the communication of its contents to others without express authorization are prohibited. Offenders will be held liable for the payment of damages.All rights reserved in the event of the grant of a patent, utility model or design.1 EtherCAT 协议介绍EtherCAT 是德国倍福(Beckhoff)公司提出的开放式实时以太网,由独立的技术小组ETG(EtherCAT Technology Group)负责管理和推广。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于BECKHOFF TWINCAT 3的模块化C++实时性研究摘要:随着信息化与工业自动化和智能制造领域深度融合,诸如C或C++等高级语言均在控制领域有了突破性应用。
然而,标准C或C++无法很好地适应工业自动化生产中针对实时性控制的需求。
德国BECKHOFF公司基于其集成自动化开发环境TwinCAT 3软件平台,提出了模块化C/C++的概念。
本文介绍代码封装成通用模块过程,如何分配相应的task周期地运行,从而解决了高级语言代码实时性问题,同时可以达到较高的软件开发灵活性。
关键词:智能制造;工业自动化;TwinCAT 3;模块化C/C++1.引言近年来,随着“工业4.0”和“中国制造2025”的提出,国内智能制造行业迅猛发展[1,2,3],运动控制设备和逻辑控制设备被广泛利用与新能源汽车制造业、金属加工、材料成型、食品生产与检测等行业中[4,5]。
在生产制造中常用的控制单元有可编程逻辑控制器(Programmable Logic Controller,PLC)、离散控制系统(Discrete Control System,DCS)等[6,7]。
这些设备为工业制造提供了安全、可靠的控制模式,然而随着机器人行业和智能制造领域的进一步深化,以上设备的不足之处逐渐暴露出来。
针对这种情况,德国BECKHOFF自动化公司在已有的开发套件TwinCAT 2基础上[8,9],研发了基于Microsoft Visual Studio的TwinCAT 3工业控制开发环境[10],可以通过模块封装的形式在面向PLC控制的程序开发中调用已经编译好的C/C++代码,较大地提高算法代码的运行效率,便于信息/计算机从业人员进行工业控制中特定功能的模块开发,降低代码的开发和维护成本,加快开发流程。
2.基于BECKHOFF TwinCAT 3模块化设计2.1 现有工业控制开发中的问题首先,PLC作为可靠的工业控制单元,其设计初衷是为工业控制提供高可靠的设备,然而计算能力却往往较低,无法实现高精度的运动位置插补算法与复杂度较高的信号处理算法。
在以往的工业应用中,以上问题往往通过具有较高计算能力的工控机或专门的运动控制卡实现,这就在无形中提升了生产成本、提高了系统开发难度,同时由于控制设备与运算设备之间需要进行通信,这就对总线通信的实时性带来了更高的要求。
其次,全球范围内,生产PLC生产厂家众多,例如美国Rockwell Automation公司、德国Siemens公司、日本的Omron与Mitsubishi公司等,国内生产PLC厂家如南大傲拓、无锡泊昂等。
针对PLC控制系统的开发语言有多种,例如梯形图(LD)、指令表(IL)、顺序功能图(SFC)、结构化文本语言(ST)等,这些语言均为IEC 61131标准下规定的PLC语言。
然而,针对不同的硬件版本,以Siemens公司为例,提供的开发环境也有区别,如Step 7和TIA Portal软件,这些软件不同的架构和开发流程无疑也带来了较高的开发成本。
最后,随着人工智能和机器学习向传统制造业和先进制造业的深入,计算机控制技术和高级语言正在工业控制中发挥着更大的作用。
然而由于PLC控制系统开发的封闭性,很难引入相应的高级语言编译及开发模块,同时难以解决高级语言执行相应控制任务时的实时性问题。
由于以上存在的问题,很难将高级语言编写程序时的灵活性与代码编译执行的高效性与工业实时控制相结合,局限了高级语言在工业现场中的应用。
2.2 BECKHOFF TwinCAT 3模块化设计机制随着工业产品设计复杂化、精细化和高精度的要求日益加剧,为减少开发成本,提高设计再利用率,制造企业在设计之初就对产品进行模块化设计。
这里的模块化设计分为两个部分,在硬件上根据产品的功能,设计实现不同功能的结构及结构原型,并保存设计信息,在其他具有同样或类似功能的结构上采用近似设计方案;其次,在软件开发中,将具有通用功能的算法或的控制流程封装成库文件或模块,以备之后调用,降低代码二次开发量,节约开发成本。
在BECKHOFF TwinCAT 3集成开发环境中,TwinCAT运行时(Runtime)为加载、应用和管理TwinCAT模块提供了必要的环境支持。
通过分配合理的系统和硬件资源,例如内存、硬件访问、任务优先级和总线通信资源等,实现了模块化设计的基础。
尽管不同的C/C++模块在编译时采用的编译器不同,在经过封装之后,可以脱开其原始编译执行环境在不同开发环境中调用,完成相同功能。
与PLC控制程序需要在TwinCAT运行时环境中运行不同,TwinCAT C++模块可以无需在宿主环境中运行,如图1所示,支持这个模块运行的是系统内核模块(.sys)。
图1 TwinCAT PLC和C/C++模块运行环境示意图然而,如何在依靠系统内核实现TwinCAT C/C++模块运行的实时性是Windows 操作系统面临的一大挑战。
众所周知,Windows操作系统是一个非实时系统,无法自发地完成具有实时性属性任务的调度。
在Windows操作系统内进行高级语言的开发,以C#为例,当创建和编译完成程序之后,这段程序执行所需的资源的任务调度工作就交给了操作系统。
由于Windows操作系统多线程、多任务的特点,可能在任何时间点中断原有程序的运行,并且何时回复执行原程序也是未知的,如图2所示,这无法满足任务实时性要求。
图2 Windows操作系统的程序执行过程示意图因此在TwinCAT C/C++模块调用执行时采用类似PLC扫描周期的方式通过周期性函数回调管理实时性任务,在一个周期内必须完成程序的执行,如图3所示。
图3 实时性TwinCAT C/C++模块执行流程图4 并发多任务实现示意图在传统意义上的操作系统级代码开发过程中,并发特性是通过程序自身来控制的,也就是说通过程序自身控制在何处激活新的线程,在何时进行线程间的通信。
所有这些任务的实现都需要依靠一定的资源,这些资源的分配会进一步的危害到任务执行的实时性。
同时由于线程间的通信是事件驱动的,也就是说当有事件触发时才会在线程间开始或终止通信,这样就使得通信进程更加不可控。
为了解决这一问题,在TwinCAT中,通过任务(tasks)而非线程来调用模块。
在多核操作系统中,任务可以被分配给一个或多个CPU核,这些任务通常都带有任务周期和优先级属性(高优先级任务可以抢占低优先级任务的运行资源)。
当这些任务被分配到不同的CPU核上时,就实现了并发任务,如图4所示。
在内存管理方面,TwinCAT有自身的实时内存管理方式。
所有的内存资源均来自于操作系统分配的非页面内存池。
此外,在同样的内存区域内,TwinCAT提供了一种形式的“路由内存”,利用这些内存资源,TcCOM模块可以在实时性环境下动态的分配内存资源,如图5所示。
图5 TwinCAT内存管理示意图3.实例化TwinCAT 3 C/C++模块流程第一步,在安装有TwinCAT 3 XAE集成开发环境的计算机中打开Micro Visual Studio软件,并通过文件菜单新建一个TwinCAT工程。
之后在解决方案窗口中单击“C++”选择新建项目,并在接下来的窗口中选择TwinCAT驱动器项目,或者通过TwinCAT静态库项目新建静态TC-C++库文件。
在接下来的对话框中选择带有周期性I/O的TwinCAT模块类。
之后,带有驱动的TwinCAT 3 C++工程就创建完毕,如图6所示。
第二步,通过具体需求实现所需的TwinCAT 3 C++模块,并进行编译生成。
在编译生成时注意选择目标平台,如图7所示。
图7 目标平台选择第三步,实例化TwinCAT 3 C++模块。
在执行C++模块之前需要对模块进行实例化,同一个模块可以存在多个实例。
在C++ Configuration中通过添加新项目实例化一个对象,如图8所示。
图6 创建完成图8 实例化C++模块最后,将通过创建TwinCAT task并将其挂载实例化的模块上即可实现周期的调用模块对应的任务。
4.实验流程4.1 实验设备硬件:Thinkpad X270笔记本,CPU intel I7-7700,16G RAM,512G SSD。
软件:操作系统:WIN7 Ultimate,Microsoft Visual Studio 2012,TwinCAT 3 installation XAE Engineering,Microsoft Windows Driver Kit。
4.2 实验目标实现TwinCAT 3中实现PLC程序对C++模块的调用。
4.3 实验步骤(1)创建TwinCAT 3 C++模块,对其实例化,并将实例分配至某一任务。
(2)创建PLC项目:首先,在Microsoft Visual Studio中新建TwinCAT项目,并在其中创建标准PLC任务。
其次,在PLC文件中添加PLC代码,如图9所示。
并通过添加Function Block实现对Module实例对应的task的调用,结果如图10所示。
图9 PLC程序图10 调用结果5.结束语在工业控制集成开发环境中利用C/C++实现相应的算法,并利用模块化封装,可以大大提升代码利用率,在计算机控制环境模式下大大提升控制性能。
BECKHOFF公司提供的自动化控制集成开发环境TwinCAT 3,在Windows下实现C/C++模块的封装,并可通过PLC实现对C/C++模块的调用。
在满足实时性前提下,提高工业控制中算法的性能,为工业控制的实时性、可靠性和高性能提供了新的途径。
参考文献[1]胡振豪,左小五,万红平.工业以太网EtherCAT的实时性研究[J].软件导刊,2018,17(02):179-181+185.[2]闫高斌,王军,王金涛.面向工业无线控制网络的业务传输机制[J].计算机工程与设计,2017,38(11):3007-3010+3117.[3]郭秦.实时性容错以太网交换机的电路设计[D].北京交通大学,2017.[4]南扬.EtherCAT工业以太网控制系统主站设计与实现[D].西安电子科技大学,2017.[5]姚舜.工业机器人控制器实时多任务软件设计与实现[D].东南大学,2017.[6]赵新亚.网络实时通信技术在工业控制上的研究[J].科技经济导刊,2017(06):29.[7]李侃.工业无线控制网络中的实时性问题研究[J].科技视界,2015(26):332+341.[8]袁熹.高可靠网络中实时性保障技术研究与应用[D].南华大学,2015.[9]杨明.工业以太网实时任务调度算法的研究[D].浙江理工大学,2015.[10]邓尚伟.工业以太网实时通信技术及进展[J].中国新通信,2015,17(03):24.。