首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结构化文本与传统编程语言

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

Stack Overflow用户
提问于 2015-05-26 14:08:52
回答 4查看 4K关注 0票数 1

我已经开始使用结构化文本编程逻辑控制器(PLC)。我的背景是IT或计算机科学。所以我习惯了传统的编程语言如Java,C#等.我刚意识到PLC需要一个不同的思维方式。理解扫描周期.能给我更清楚地解释下一段我读了从…

ST语言与传统编程语言的一个重要区别是程序流控制的本质。ST程序将从开始运行到结束,每秒钟运行多次。一个传统的程序不应该到达终点,直到它完全完成。

EN

回答 4

Stack Overflow用户

发布于 2015-05-27 08:19:43

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

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

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

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

票数 4
EN

Stack Overflow用户

发布于 2015-05-26 16:45:28

这意味着:在1秒内,您的PLC程序被执行1秒/循环时间。因此,如果您的cycletime为1ms,您的程序将在一秒钟内执行1000次。这就是主要的区别。这是决定性的。这就是这一段的意思。当它到达终点时,它还没有完成。它以更新的进程映像重新启动。

例如,在非PLC程序中(就像在您的pc机上),您有类似于

代码语言:javascript
复制
 while(!_end)
 {
      /* your code */
 }

原则上,PLC的工作原理与此类似。但是在你的电脑上,没有必要在像500秒这样的困难时间框架内周期性地执行程序。你的电脑的大多数应用程序,让我们称之为“时间不关键”。最大的区别是,PLC运行完整的程序,在下一次运行之前,它刷新它的进程映像(写入输出/读取输入)。程序执行由所谓的“任务”触发。此任务负责使您的控制保持实时。我前面提到的进程映像是为PLC提供的所有进程值的总和(如数字I/O、电机驱动器值、.)。所以你看,这是一种循环,但和你从c#/java程序中知道的不一样。

(顺便说一句,我不能打开你的pdf)

票数 3
EN

Stack Overflow用户

发布于 2015-06-10 12:54:53

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

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

了解您的PLC如何执行I/O --有些(如ControlLogix)是异步的,I/O基于RPI (请求数据包间隔)读入控制器内存,并在使用代码更改I/O点时被写入(相同的RPI)。其他人(如AutomationDirect的Productivity2000系列)只在对代码进行完整扫描后才将输出写入。我相信您可以描绘每个场景的利弊,特别是当控制器在重新启动扫描之前没有完成代码的时候。

PLC允许您对不同的代码段拥有不同的扫描速率,这为I/O和程序流程管理提供了强大的工具。缓慢的过程可以被缓慢地扫描,让你有更多的PLC时间做其他事情。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30460983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档