结构化文本与传统编程语言

时间:2015-05-26 14:08:52

标签: plc st

我已经使用结构化文本启动了编程逻辑控制器(PLC)。我的背景来自IT或计算机科学。所以我习惯了传统的编程语言,如Java,C#等...我只是意识到PLC需要一个不同的思维集。 了解扫描周期...... 有人可以更清楚地向我解释下面的段落from

  

ST和传统编程语言之间的一个重要区别是   程序流程控制的本质。 ST程序将从头到尾运行很多   每秒一次。传统的程序直到完全没有达到目的   完了。

4 个答案:

答案 0 :(得分:4)

PLC程序与您已经知道的不同,它通常具有主要任务,该主要任务是循环执行的,即每个扫描周期执行一次。然后主要任务调用子任务或程序列表,完成后,主任务再次运行。

扫描周期可以设置为每隔一段时间运行一次,例如每10ms。然后,PLC将更新IO,运行程序,然后在等待下一次触发时不执行任何操作。如果你有一个固定的扫描时间,你可以使用它来制作非常精确的同步程序,但重要的是你的程序(主任务及其子任务)总是在这段时间内执行。

可以设置一些PLC以尽可能快地一个接一个地运行扫描周期。扫描时间是可变的,但您仍然需要监视扫描时间,以确保程序运行相当一致的循环时间。

我在从其他语言到PLC语言的过渡中学到的最重要的经验之一是尽可能保持程序流程的顺序,因为任何循环和偏差都会影响执行时间,而执行时间必须始终小于扫描时间。

答案 1 :(得分:3)

这意味着例如:1秒内PLC程序执行1秒/周期。所以,如果你有一个循环时间,例如1ms,您的程序每秒执行1000次。这是主要的区别。这是确定性的。这就是该段的含义。当它到达终点时它还没有完成。它会以更新的过程映像重新启动。

In,比方说,非PLC程序(比如在你的电脑上)就像是

 while(!_end)
 {
      /* your code */
 }

原则上,PLC的工作原理与此类似。但是在你的PC上,没有必要在硬时间周期内循环执行程序,例如500μs。您的PC的大多数应用程序都是,让我们称之为“时间不加批判”。最大的区别是,PLC运行完整程序,在开始下一次运行之前,它会刷新其过程映像(写入输出/读取输入)。程序执行由所谓的“任务”触发。此任务负责实时控制您的控制。我之前提到的过程映像是PLC存在的所有过程值的总和(如数字I / O,电机驱动器值,......)。所以你看,它是一种循环,但不像你从c#/ java程序中知道的那样。

(顺便说一句,我无法打开你的PDF格式)

答案 2 :(得分:3)

pboedker和ChrisKo的答案都很好。需要几个额外的警告。

扫描(或扫描时间)可能比代码的执行时间短。在大多数PLC中,有一个“监视器”可以检测到这一点,并警告你它正在发生。您经常需要设置此“看门狗”,并为其设置警报/事件处理程序。

了解PLC如何执行I / O.某些(例如ControlLogix)是异步的,I / O会根据RPI(请求数据包间隔)读入控制器内存,并在您使用代码更改I / O点时写出(相同的RPI)。其他(例如AutomationDirect的Productivity 2000系列)仅在对代码进行COMPLETE扫描时写入输出。我相信你可以想象每个场景的专业和缺点,特别是如果你的控制器在重新开始扫描之前没有完成你的代码。

PLC允许您为不同的代码段提供不同的扫描速率,为您提供强大的I / O和程序流管理工具。可以缓慢扫描慢速过程,从而为其他事情提供更多的PLC时间。

答案 3 :(得分:0)

我是一名PLC程序员。我想用PC控制PLC,PLC作为哑IO。 PLC编程总是循环和扫描。每个扫描时间是几毫秒。 您可以将其理解为ChrisKo所说的语句。

while(1=1)
{
    // code
}