TwinCAT3 的条件编译

条件编译(Conditional Compilation)是一种编程技术,允许程序员在编译时根据特定条件选择性地包含或排除源代码的一部分。在编译阶段,编译器根据预定义的符号(通常是宏定义)来决定哪些代码块应该被编译到最终的目标程序中,哪些不被编译到最终的目标程序中。

在TwinCAT( Beckhoff Automation 的一款基于 .NET 的工业自动化软件)中,条件编译的概念与 C# 或其他支持条件编译的编程语言相似。在 TwinCAT 自动化项目中,条件编译主要用于在编译时根据预定义的符号(通常称为编译指示符或编译常量)来包含或排除特定的代码块。

本文档仅做入门的介绍使用,具体有不清晰的可以参照TwinCAT官方给的说明和例子,小伙伴们可以根据下面的图片路径进行查找。

条件编译路径

条件编译的关键词定义有两种方式,可以在项目属性中提前定义好,也可以在程序中直接使用定义指令进行。具体步骤如下:

1.在程序中直接定义:

如下图在程序编辑区域,直接使用{define + 变体名字}进行使用,此例程中定义了MechineD变量,在下面就可以直接使用。通过是否定义MechineD而选择性的编译程序,此例程中程序最终执行的就是Counter加1的程序。

添加图片注释,不超过 140 字(可选)

也可以在输出窗口看到输出信息,此项目中执行的是Counter加1程序。

添加图片注释,不超过 140 字(可选)

屏蔽{define MechineD}这一行变量,可以发现程序变为执行减1的程序。

添加图片注释,不超过 140 字(可选)

也可以在输出区域看到输出,项目变成了Counter减1的程序了。

添加图片注释,不超过 140 字(可选)

2.在项目属性中进行预配置关键词

点击项目,右键找到Properties,选择Compile项目,进行条件编译的关键词定义,如果要定义多个关键词可以用“,”(英文状态下的逗号)进行分割,定义后使用方法和上面的例子一样。就不需要{define MechineD}这一步骤。

添加图片注释,不超过 140 字(可选)

为什么要出现两个地方都可以定义使用呢,小伙伴们可以根据不同的使用习惯和应用进行区分。比如如果就是想调试程序,在某些情况下执行某一些程序,就可以临时在程序编译区域进行定义用完了就可以直接删除了,同时在某一个程序中进行定义那就是局部变量,别的程序中不能使用,无法做到影响整个项目。当然是否可以在全局变量中使用Define呢?楼主也没有测试留下一个小悬念给大家自行测试,有测试结果记得给一个反馈。

有些时候对于工程项目来说,对于同一个几台,有些许的差别,有时候不同的几台就要有不同的程序,这样就可以在项目属性中进行关键词的定义,不同的几台定义不同的关键词,对于工程师来说就以很简单的修改了项目而不是进行代码修改。

3.与变体管理功能结合使用

客户有一个标准机型,增加若干硬件又形成几个派生机型,老板希望派生机型调试时不用开发工程师去现场打开TwinCAT开发环境修改硬件配置,而是让现场调式人员在HMI直接切换配置,这样可以大大减少开发时间(实则是为了省钱~~)。

比如一个公司有一个标准的设备,一个控制器外带3个从站和8根轴,这时由于客户的要求的功能不同,标准设备就要进行不同分支的升级,分别是一个控制器带4个从站和10根轴,另一个是5个从站6根轴。有没有可能不用修改程序代码就可以完成不同机台程序的配置呢?

答案是可以的,用户可以使用TwinCAT的变体管理功能加上条件编译进行程序设计,同时使用Automation Interface功能,通过C#编程制作一个小页面,在小页面上进行简单的选择和操作就可以对于不同的机台下载不同的程序。具体怎么做,后面的文章我在慢慢说明。

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值