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#编程制作一个小页面,在小页面上进行简单的选择和操作就可以对于不同的机台下载不同的程序。具体怎么做,后面的文章我在慢慢说明。

相关推荐

  1. TwinCAT 3 log程序

    2024-03-31 14:42:03       33 阅读
  2. TwinCAT 3 tcp程序

    2024-03-31 14:42:03       35 阅读
  3. Twincat中PLCST语言编程实现机器人安全交互

    2024-03-31 14:42:03       37 阅读
  4. C语言条件编译格式

    2024-03-31 14:42:03       32 阅读
  5. C++中C标准库、注释和条件编译

    2024-03-31 14:42:03       18 阅读
  6. uni-app条件编译

    2024-03-31 14:42:03       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-31 14:42:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-31 14:42:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-31 14:42:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-31 14:42:03       20 阅读

热门阅读

  1. OD C卷 - 螺旋数组矩阵

    2024-03-31 14:42:03       17 阅读
  2. Clickhouse 查看分区情况

    2024-03-31 14:42:03       22 阅读
  3. centos7.5 安装gitlab-ce (Omnibus)

    2024-03-31 14:42:03       17 阅读
  4. 【Go】goroutine并发常见的变量覆盖案例

    2024-03-31 14:42:03       15 阅读
  5. Vue的侦听方法和生命周期

    2024-03-31 14:42:03       19 阅读
  6. Viso的使用

    2024-03-31 14:42:03       20 阅读
  7. LeetCode 84. 柱状图中最大的矩形

    2024-03-31 14:42:03       15 阅读
  8. 【BlossomRPC】一个完整的含源码和文档的RPC项目

    2024-03-31 14:42:03       15 阅读
  9. 补关于zip安装mysql-8.0版本问题

    2024-03-31 14:42:03       15 阅读