跳到主要内容

7.1 编译

  • 编译的作用是将高级语言编写的程序转换为设备可执行的二进制代码,通过编译,程序员可以使用更易于理解的高级语言进行编程,而无需直接编写复杂的机器语言代码;编译流程包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成阶段,这些阶段共同确保了程序的正确性和高效性

7.1.1 编译简介

  • 用户程序必须先经过编译才能在 CPU 中执行。每次进行更改后都需要重新编译程序
  • 编译可以取消,但是不能undo/redo。如果取消编译过程,在巡视窗口中将显示一条报警(黄色)

7.1.1.1 编译方式(入口)

  1. 菜单栏-->“编辑”菜单-->编译(根据选中的“项目树节点”编译内容)【增量】

  2. 工具栏-->取消编译 / 编译(根据选中的“项目树节点”编译内容)【增量】

  3. 项目树右键菜单(根据选中的“项目树节点”编译内容)【增量 / 全量】

    • PLC_1(编译所有软件+硬件)
    • 软件及软件子节点(编译所有软件)
    • 硬件及硬件子节点(编译所有硬件)

7.1.2 增量编译

7.1.2.1介绍

  • 增量编译是相对于全量编译而言的。它指的是当源程序的局部发生变更后,重新编译的工作仅限于修改的部分及与之相关部分的内容,而不需要对全部代码进行编译

7.1.2.2 增量编译介绍

  • 软件增量编译,即对用户软件所有涉及的修改部分进行编译
  1. 除了明确有修改模块,需要调用关系和依赖关系检查相关PU进行一起编译

  2. 更改被调用块的接口或已使用的用户自定义数据类型(UDT),可以导致在调用块和被调用块之间接口;或者UDT数据类型与使用这些数据类型的变量之间不一致的情况

  3. 为了避免用户程序出现此类不一致情况,在每次执行编译前,进行相关修改模块的依赖性检查,然后编译相关所有模块

  4. 若立即开始下载,而不是首先编译,则系统首先进行增量编译,编译成功才会下载

7.1.2.3 增量编译操作

  • 增量编译:编译该设备(PLC)的APPLICATION(软件)下的所有修改的GVS,PU,UDT,TASK,IO映射表等,和项目树选择软件对象无关

操作步骤:

要在项目树中编译“程序单元”目录中的所有被修改的块

  1. 在项目树中选择PLC或软件及软件下任意节点

  2. 在右键快捷中选择“编译 > 软件(增量编译);或在项目菜单编辑框或工具栏中,选择“编译”命令

提示

若成功进行语法检查和编译依赖性检查,则生成编译块代码
巡视窗口的“信息 > 编译”中显示的消息,将报告编译是否成功

  • 点击编译信息的“跳转箭头”,光标可跳转到相应的信息位置
此图为导出图片
  • 当UDT,FC或FB接口发生修改,根据依赖关系检索相关实例涉及的模块也需要重新编译。详见:增量编译-->增量编译介绍

7.1.3 全量编译

7.1.3.1 全量编译

  • 全量编译是指对整个软件项目或系统的所有组成部分进行完整的编译、链接、测试和打包等构建流程。这个过程是为了确保所有源代码和资源都被正确地编译和链接,生成一个或多个可执行文件或库文件,以便最终部署到目标环境中。

7.1.3.2 全量编译操作

  • 软件全部重建编译:指的是先清除该设备(PLC)的所有软件编译产物,然后编译APPLICATION(软件)下的所有的GVS,PU,UDT,TASK,IO映射表等,和项目树选择软件对象无关

操作步骤:

要在项目树中编译“程序单元”目录中的所有块

  1. 在项目树中选择PLC或“程序单元

  2. 在快捷菜单中选择“编译 > 软件(全部重建)

提示

若成功进行语法检查和依赖性编译检查,则生成编译块代码
巡视窗口的“信息 > 编译”中显示的消息,将报告编译是否成功