前言:
使用梯形图编写程序时,博途编辑器是通过网络段,把程序分成一段一段的,编辑器可以插入若干个网络段,每一个网络段可以有各自的注释。
而SCL是文本语言,不分网络段(在LAD/FBD语言内增加SCL的除外),这就需要需要用其他的方法来,解决程序分段的问题。
把SCL划分的合理且清晰,我们可以使用注释和代码折叠指令划分的功能进行。
有时很难在 LAD(梯形逻辑)或 FBD(功能块图)中编写 PLC 代码。特别是,如果你必须做一些数学工作或批量操作。
在这些情况下,您可以轻松使用 SCL/ST(结构化控制语言/结构化文本)。
在 SCL 中编写您的第一个 TIA 代码:
步骤 1 – 创建或打开 TIA 项目
就像编程 LAD 或 FBD 一样,需要创建或打开带有 PLC 的项目进行编程。所有SIMATIC PLC(S7-300、S7-400、S7-1200 和 S7-1500)都支持 SCL 。
在本例中,我将使用 S7-1515-2 PN,但它也适用于其他 S7-1500 或 S7-1200 PLC。
步骤 2 – 添加 FB/FC
在项目打开并且有一个 PLC 可用后,我们可以添加一个功能 [FC] 或一个功能块 [FB]。FC和FB的区别在于存储能力。FB 可以存储在 PLC 循环后仍然可用的数据。在我们的例子中,我们只需要一个 FC。
双击“PLC/程序块”文件夹中的“添加新块”。现在“添加新块”对话框打开。在这里我们可以选择要创建的块类型,在我们的例子中是 FC。
选择块类型后,我们必须选择要编程的语言。下拉列表将显示与 PLC 类型相结合的所选块类型可用的所有可能的编程语言。我们当然会使用“SCL”。
如果需要,您还可以在附加信息栏的下方添加附加信息,例如作者、版本等。现在我们可以通过在对话框中单击确定来创建块。
第 3 步 - 修改块接口
创建块后,我们可以修改FC的Interface。在我们的例子中,我们将输入一个 [Array[0..5] of INT] 类型的输入、一个 [INT] 类型的输出和两个 [INT] 类型的临时变量。
注意:在 FB 中还显示了一个静态部分,因为它能够存储比实际 PLC 周期更长的数据。
步骤 4 – 输入 SCL 代码
在下一步中,我们输入代码来确定数组元素的最大值。代码将从索引 0 到 5 遍历数组,并比较实际值是否大于“tempMax”值。最后,我们将获得数组中包含的最大值。
在第一行,我们将“tempMax”设置为一个定义的值。在这种情况下为零。
在第三行,我们开始“FOR”循环。这将使用“tempCount”变量来存储我们循环的实际索引。它在开始时设置为零,并将运行直到达到五。所以我们将循环运行六次(0->1->2->3->4->5)。“FOR”循环的代码由第三行的“FOR ...”语句和“END_FOR;”封装。第七行的声明。
此代码块包含一个“IF”块,如果语句“#In[#tempCount] > #tempMax”将返回“TRUE”并且实际“maxTemp 小于数组的值”,则该块将仅处理其内部代码索引为#tempCount 的元素。
由于智能感知,TIA 门户在键入代码时会提供建议。此外,您在文本编辑器区域的顶部有一个最喜欢的指令列表,就像在其他语言的编辑器中一样。您可以在此处通过从说明选项卡中拖动其他说明来添加其他说明。
步骤 5 – 提供一些数据
为了能够为我们的程序提供一些值,我们必须创建一个全局数据块 [DB] 来提供一些数据,就像我们为 FC 所做的那样。
我们还将输入一些启动数据,这些数据在 PLC 启动时提供给全局 DB。
步骤 6 – 在 OB1 中调用 FC
要在我们的 PLC 中使用 FC,我们可以调用 Main [OB1] 中的块并为其提供来自“dbGlobal”的值。添加调用后,我们可以编译程序代码并将其加载到我们的 PLC 中或使用 PLCsim 进行模拟。
第 7 步 – 测试
连接到设备(通过选择 PLC 并单击“go online”)并激活块中的观察模式后,我们可以检查程序的行为。
我们可以创建一个监视表来观察和修改值来测试我们的代码。在“修改值”栏中输入要设置的新值,然后单击工具栏中的设置按钮。新值将被设置到变量中,代码将使用新值进行处理。
注意:请记住,由 PLC 程序设置的变量将在每个新循环中覆盖手动设置值。
您可以修改显示格式,例如以十六进制或二进制表示法显示变量,如 16#09 或 2#0000 1001。所以它更容易阅读,例如“状态词”。
步骤 8 – 更通用的方法
在块接口处,可以定义具有可变限制的输入数组,以便为具有不同长度数组的块提供更好的可重用性。在这里,我们必须在 FC 处调整接口并添加代码来确定数组的下限和上限。它也可以用多维数组来做到这一点。
注意:请记住,此功能仅在较新的 PLC (1200/1500) 中可用。
利弊
优点 | 不足 |
轻松编写复杂的代码 | 难以跟踪信号序列(不用于故障安全 PLC 编码的原因) |
适合大规模操作 | 糟糕的逻辑概述 |
开关盒的简单编程 | 有时难以阅读 |
注意:您可以*使用最适合您需求的编程语言。在之前的课程中,我们看到在 FBD 代码中使用 SCL 网络。例如,在 SCL 块中编写复杂代码和在 FBD 块中输出的互锁部分。