Jump to content

leigehong

Subscription group
  • Content Count

    168
  • Joined

Everything posted by leigehong

  1. 在上一篇文章中,我们讨论了数据块,我们讨论了两种不同类型的数据块,全局数据块和功能块FB的数据实例。 在本文中,我们将讨论西门子 Tia Portal 中优化数据块访问和标准数据块访问的含义。 内容: 什么是优化数据块和标准数据块? 简单的程序示例。 什么是标准 DB? 偏移量是多少? 什么是优化的数据库? 使用优化数据库的优点。 结论。 什么是优化和标准数据块访问? 首先,这些不是新类型的数据块;我们说过我们只有两种不同的类型:全局数据库和背景数据库。优化数据块访问是数据块的一项功能。您可以从已创建的数据块的属性中激活或禁用此功能。 优化数据块功能仅适用于 S7-1200 和 S7-1500 PLC,不适用于 s7-300 或 s7-400 使用 S7-1200 或 S7-1500 PLC 时数据块的标准设置是它们是经过优化的,如果您想要标准数据块,则必须自行设置。 那么,什么是优化块和标准块? 为了理解其中的差异,我们将编写一个简单的程序并尝试展示优化块与标准块的不同之处。 简单程序示例: 在此示例中,我们不会创建任何 PLC 逻辑或编写任何指令,我们只会创建 2 个全局数据块,DB1 将称为 OptimizedDB,DB2 将称为 StandardDB。 在这两个数据块中,我们将分别声明数据类型 Bool、Int、Real 和 Word 的 4 个变量。见图1。 图 1 – 创建两个全局 DB 首先你会注意到,两个数据块是完全相同的,那是因为正如我们所说,创建数据块时的默认设置是它会被优化,所以我们需要更改 DB2 的设置,使其成为 标准块,看看是否会发生变化。 我们根据 DB2 的属性来做到这一点。您可以通过右键单击数据块并按属性来访问 DB2 的属性。见图2。 图 2 – 将 DB2 更改为标准块访问 取消选择图 2 中所示的优化块访问属性并按 “确定” 后,将弹出警告消息,见图 3。 图 3 – 更改块访问弹出窗口 一旦按下 OK,您的 DB2 将被转换为标准块访问。请参见图 4。看看这有何不同。 图 4 – DB2 现在是一个标准块 我们直接看到的是 DB1 和 DB2 不再一样了。DB2 中表示的标准块访问选项有一个称为偏移量的附加列。 在偏移框中的每个变量前面,都有一个...写着,一旦你编译程序,这个就会改变。 让我们编译一下,看看会发生什么,见图 5。 图 5 – 编译程序以重新加载偏移量 现在,偏移量已分别填充为 0.0、2.0、4.0 和 8.0。 那么,这个偏移量是多少? 这是什么意思? 我们稍后会讨论这个问题,但现在,让我们创建另一个 STANDARD 块并声明相同的 4 个变量,但这次我们将更改变量数据类型的顺序,见图 6。 图 6 – 创建另一个标准块 DB3 从上图可以看出,DB2 和 DB3 的偏移量是不同的,为什么当我们改变数据类型的顺序时,偏移值会不同呢?它们是相同的数据类型,但顺序不同。 让我们创建另一个标准DB,并声明相同的 4 个变量,但顺序不同。编译您的 PLC 代码,然后比较 3 个 DB 的偏移量。见图7。 图 7 – 具有三个不同偏移量的三个不同 DB 同样的事情又发生了。 什么是标准 DB?偏移量是多少? 标准访问的数据块具有固定的结构。当您在标准 DB 中声明变量时,该变量将被分配到该 DB 中的固定地址。 该变量的地址显示在 “Offset” 列中。因此,我们在前面的图片中看到的偏移量是为每个变量分配的地址。 因为标准 DB 的结构是固定的,所以只能在具有固定存储容量的 DB 中工作,即 16 位区域或 2 字节。这就是当我们改变声明顺序时,相同变量的寻址不同的原因。更多解释请参见图 8。 图 8 – DB2 的简单表示 图 8 显示了标准数据块 DB2 的简单表示。正如我们之前所说,标准DB具有固定的 16 位内存块,因此,当我们将 Variable_1 声明为 BOOL 数据类型时,该变量将占用全部 16 位,即使它只需要 1 位内存。这就是为什么您会看到其余区域标记为红色,因为它未使用但无法再使用。所以这是一段失去的记忆。 对于 Variable_2,数据类型 INT 需要 16 位,因此它使用 2 个完整字节。与 Variable_4 相同,其数据类型为 WORD。 对于 Variable_3,我们占用了 4 个字节,因为它是 REAL 数据类型。这就是为什么 DB2 的偏移量分别为 0.0、2.0、4.0 和 8.0。 DB3 和 DB4 执行相同的概念。但由于变量的数据类型顺序不同,内存表示也会不同,因此偏移量也会不同。DB3 和 DB4 见图 9 和 10。看看根据前面的解释你是否能理解表示法。 图 9 – DB3 的内存表示 图 10 – DB4 的内存表示 因此,当您使用标准数据库时,声明变量时必须小心,因为每次定义新的 BOOL 变量时都会造成内存损失。 如果您在数据库列表的末尾声明新变量,则偏移量将扩展以包含您的新变量。但是,如果您在旧变量之间或在数据库的开头声明新变量,则会发生其他情况。见图11。 图 11 – 声明一个新变量 您会注意到的第一件事是您的偏移量现在丢失了,您必须编译代码才能重新建立新的偏移量。见图12。 图 12 – 通过重新编译代码重新建立偏移量 您是否注意到变量的寻址 (OFFSET) 现在发生了怎样的变化? 例如,REAL 标签的偏移量为 2.0,但在添加新的 TestVariable 后,同一 REAL 标签的寻址 (OFFSET) 现在为 4.0,见图 13。 图 13 – 添加 TestVariable 后的偏移变化 因此,当添加新变量时,所有旧变量的寻址都发生了变化。这意味着程序中需要写入或读取某个变量值的任何指令现在都将查看指令中分配的地址,但现在该地址具有与预期不同的数据。 简而言之,你的整个逻辑现在已经混乱了。这会带来很多麻烦。更不用说现在添加新变量后您会丢失额外的内存。见图 14。 图 14 – 添加 MOVE 指令 让我们添加一条 MOVE 指令,将值 1 移至 Variable_2 标签中。查看 MOVE 输出的地址如何为 %DB2.DBW2。 现在,让我们向 DB2 添加一个 INT 类型的新变量。见图15。 图 15 – 添加新的 INT 变量 当您添加新变量时,偏移量将丢失,并且 PLC 不再知道 MOVE 指令的 OUT1 的目的地在哪里。 我们需要编译程序来重新加载新的偏移量。见图16。 图 16 – OUT1 的新地址 您看到 OUT1 地址现在有何不同了吗?现在是 %DB2.DBW4 而不是 %DB2.DBW2。这是使用标准数据块的一个非常大的缺点。 什么是优化数据库? 优化数据块和标准数据块的区别在于,优化数据块内部的变量没有被分配到固定的地址,而是给变量赋予一个符号名称,而且数据块的结构也不像标准的那样固定。数据块,因此在声明新标签时不会丢失内存,也不会更改地址。 见图 17。 图 17 – 在优化块中声明新标签 因此,在优化数据块中声明新标签不会影响其余标签,因为它们是由符号名称而不是绝对寻址定义的。 优化的数据块将不允许您在使用其中定义的标签时使用地址。见图18。 图 18 – 使用优化块的绝对寻址 正如您在最后一张图片中看到的,优化数据块不允许绝对寻址,只允许符号名称。见图19。 图 19 – 使用带有优化 DB 的符号名称 优化访问的数据块的优点 具有优化访问的数据块没有固定定义的结构。数据元素(标签)仅分配一个符号名称,并且不使用块内的固定地址。 元素会自动保存在块的可用存储区域中,以便内存中不存在间隙。与标准 DB 相比,这可以实现内存容量的最佳利用,并避免内存丢失。 这具有以下优点: 您可以创建任何结构的数据块,而无需注意各个标签的物理排列。 由于数据存储是由系统优化和管理的,因此始终可以快速访问优化的数据。 例如,间接寻址或来自 HMI 的访问错误是不可能的。因为现在有地址,每个标签只有唯一的符号名称。 您可以将特定的单个标签定义为保持性。在标准 DB 中,您只能将整个块定义为保持性。 结论 与标准数据库相比,优化数据块有很多优点。在向块添加新变量时,使用符号名称有助于避免标签的任何地址更改。 通过优化块,不会丢失任何内存区域。与使用标准数据库时发生的情况相反。
  2. leigehong

    PLC 中的系统时间和本地时间

    在之前的文章中,我们讨论了 PLC 中的定时器、不同类型以及如何使用它们。计时器实际上并不需要实时工作,因为它们只是根据您的设置来计算秒或毫秒。 但对于某些应用,您需要了解 PLC 程序的真实日期和时间,例如出于诊断目的。 在这篇文章中,我们将讨论 PLC 的系统和本地时间。 内容: 为什么 PLC 需要实时性? 示例程序和模拟 什么是系统时间? 当地时间是几点? 结论。 为什么我需要 PLC 中的实时功能? 在 PLC 的许多应用中,出于多种不同的原因,您需要了解进程运行时的实时情况。 以下是其中一些原因: 将 PLC 备份到主服务器。 对于 PLC 的诊断,需要有诊断的时间记录,以了解某一事件发生的时间,否则诊断信息就没有多大用处。 对于需要使用时间中断 OB10 的应用程序,您需要知道实际时间。 您可能需要在需要处理实时应用程序的逻辑部分中使用本地时间或系统时间。 对于数据记录,如果您有重要的数据要保存,并且需要每次数据记录的时间戳,那么您需要为 PLC 设置正确的时间,以便存储的数据有意义。 PLC 示例程序和仿真 为了更好地理解什么是 PLC 中的系统时间和本地时间,我们将从创建一个非常简单的程序开始,并用它来解释 PLC 内部实时的概念。 检查以下步骤: 在本文中,我们不会创建任何 PLC 逻辑,但我们会展示 PLC 中与系统和本地时间相关的一些配置,如何设置它们,以及有什么区别。 打开西门子 Tia Portal,添加一个新设备,这次我们将使用 CPU 1512C-1 PN。见图1。 图 1 – 添加新 PLC 编译并启动新的 PLC 仿真。打开在线&诊断页面,查看PLC的设定时间。见图2。 图 2 - PLC 在线时间 从上图可以看到有两个不同的时间: PG/PC 时间 – 这是您的 PC 本身的本地时间。 模块时间 – 这是 PLC 本身内部的实际时间。 这两个时间可以设置为相同的值,也可以设置为不同的值。最好使它们相同,最好使模块时间与您的本地时间相似,或者更具体地说与将使用 PLC 的地区的本地时间相似。见图3。 图 3 - PLC 设定时间 如果您希望模块时间与本地时间相同,请选择从 PG/PC 获取并按应用。 在主 OB1 中,拖放 RD_SYS_T 和 RD_LOC_T 指令。 这些是读取系统时间和读取本地时间指令。这些指令是 PLC 内部的内置功能 FC,用于将 PLC 的本地时间和系统时间写入指令输出 OUT 中选择的目的地。见图4。 图 4 – 添加读取系统和当地时间指令 添加一个新的全局数据块,并定义一些要使用的标签。见图5。 图 5 – 创建一个新的全局数据块 再次运行模拟并检查两次。见图6 图 6 PLC 在线本地时间和系统时间 从上图中可以看出,PLC 的本地时间和系统时间是相同的,但与 PC 机的实际本地时间不同。 如果您还记得的话,我们已将 PLC 的模块时间设置为与 PG/PC 时间类似,即您的本地时间。见图7。 图 7 – 模块时间和 PG/PC 时间 如您所见,在设置时间页面上,模块时间选择从 PG/PC 时间获取。但在实际情况中,它们是不同的。为什么? 为什么时代不同? 由于 PLC 本地时间的默认设置是 UTC+0 或 Zulu 时间(如果您熟悉该术语),因此您无需从在线和诊断页面更改它,而是从 PLC 本身的属性更改。见图8。 图 8 – PLC 中的时间配置 如您所见,PLC 时间的默认设置设置为 UTC+0 时间,这就是 PLC 模块时间与实际本地时间不同的原因。除非您实际上在伦敦,否则您不会遇到这个问题。 为了更正 PLC 本地时间,我们必须在配置中更改它,我们需要将时区更改为我们拥有的时区,在我的例子中是 UTC+02:00。见图9。 图 9 – 将 PLC 本地时间调整为您所在的时区 您还可以看到夏令时选项已被停用,因为它在我的国家/地区没有使用。如果您所在地区使用它,则必须激活它。 现在所有配置均已正确设置,返回并在模拟中再次查看本地时间和系统时间。见图10。 图 10 – PLC 的本地时间现在与 PC 相同 现在你看到调整 PLC 时区后,PLC 的本地时间和你所在地区的实际本地时间是一样的。 正如我们之前所说,由于我们上面提到的许多原因,设置正确的 PLC 本地时间非常重要。您现在可以定义 PLC 的系统时间和本地时间吗? PLC 中的系统时间 是 CPU 时钟的模块时间。 CPU 时钟将模块时间解释为协调世界时 (UTC)。因此,模块时间的存储始终不包含 CPU 时钟中的“本地时区”或“夏令时”因素。然后 CPU 时钟根据模块时间计算 CPU 时钟的本地时间。 CPU 时钟的模块时间用作从 CPU 开始的所有时间处理的模板。 使用示例: 根据模块时间计算 CPU 时钟本地时间 “在线与诊断” 下以当地时间表示模块时间 CPU 诊断缓冲区中的条目 PLC 当地时间 有关时区以及夏令时和标准时间开始的信息(这些信息已在 CPU 时钟配置中设置)用于输出本地时间。 本地时间是指您的电脑上或您所在国家/地区的时间,不同地区的时间会有所不同。 结论 许多应用要求 PLC 了解过程的实时或本地时间,以便能够执行某些任务,例如数据记录和诊断任务。在以后的文章中,我们将展示一些逻辑需要实时的应用程序 应手动配置 PLC 的本地时间,以匹配 PLC 的使用区域。
  3. 在之前的文章中,我们讨论了 SIEMENS TIA Portal 中的不同类型的块,其中讨论了功能块 FB、功能 FC 和数据块 DB。 在本文中,我们将讨论西门子 PLC 中的另一种类型的块,这些是组织块,在本文中,我们将讨论其中最重要的组织块,即主组织块或 OB1。 内容: 什么是组织块? 不同类型的 OB。 什么是 OB1? 周期时间监控。 简单的程序示例。 结论。 什么是组织块 (OB)? 组织块,您可以将它们视为功能 FC 或功能块 FB。但不同的是,你不调用它们,PLC 的操作系统调用这些组织块,无论操作系统将 OB 作为 OB1 循环调用还是在某个事件发生时调用,无论哪种方式,操作系统 照顾它。您只需要创建块并在块内添加您想要的任何逻辑。有时,您甚至不需要在 OB 中添加任何代码,只需创建 OB 本身就可以提供许多好处,我们将在讨论其中一些 OB 时看到这些好处。 组织块是 PLC 操作系统和用户程序之间的接口。任何 PLC 都会有两个不同的程序,运行程序是 PLC 的操作系统,用户程序是 PLC 程序员编写的用于控制某个过程的逻辑或代码。这两个不同的软件需要相互通信,而组织块 OB 就是如何完成此操作的。 组织块 OB 用于执行许多任务,下面列出了其中一些任务: 自动化系统的启动特性 循环程序处理 中断驱动程序执行 错误处理。 不同类型的组织块 因为组织块基本上是操作系统执行许多任务的工具。 不同的任务需要不同的 OB,这就是为什么 PLC 内部有许多不同的 OB,有多少不同的 OB 将取决于您使用的 PLC 类型,但以下是您几乎可以在所有 PLC 中找到的一些最常见的 OB。西门子 PLC: 主循环 OB1。 时间会中断 OB。 一天中的时间 OB。 软件错误 OB。 硬件错误 OB 还有更多的组织块可用于您的逻辑。见图1。 图 1 – TIA Portal 中提供的不同组织块 在本文中,我们将讨论其中最重要的组织块,即主循环中断 OB1。 主循环中断 OB1 主循环 OB1 是负责由 PLC 循环执行逻辑的组织块。每当您创建新项目并添加 PLC 时,软件都会自动创建主 OB1。这些是 PLC 代码所需的最少块。见图2。 图 2 – 主OB1自动创建 在此主 OB1 中,如果项目很小,您可以编写整个 PLC 程序。如果您的项目相当大,那么您可能需要执行一些功能块 FB 的功能 FC。在这种情况下,您将使用主 OB1 来调用它们。 当然,您不必通过 OB1 调用每个 FC 或 FB,但如果您的 OB1 不是嵌套调用的第一个块,则它将不会被执行。见图3。 图 3 – 通过 OB1 调用您的块 PLC 代码的基本基础是循环行为,这意味着您需要连续执行代码。当逻辑处理完成后,操作系统将再次开始处理它。这是通过使用主 OB1 来完成的,您可以在该 OB1 中放置和调用所有逻辑和代码,操作系统将确保连续执行它。 您应该知道,即使您无法创建 OB1 块(因为添加新 PLC 时会自动创建 OB1 块),您也可以创建多个循环中断块。 OB1 是一个循环中断,操作系统会自动连续调用并执行里面的任何逻辑。然而,对于大型 PLC 项目,您的 PLC 逻辑中有如此多的功能和功能块,您可以使用多个循环中断 OB 来更好地构建代码,使其易于阅读和理解。 在这种情况下,您将创建另一个循环中断,见图 4。 图 4 – 创建多个循环 OB 当创建了多个程序循环 OB 时,将按照 OB 编号的顺序依次调用这些 OB。 首先调用具有最低 OB 编号的程序循环 OB。见图5。 图 5 – 具有多个循环 OB 的程序循环 循环程序完成后,操作系统按如下方式更新过程映像: 它将过程映像输出中的值写入输出模块。 它读取输入模块的输入并将这些输入传输到过程映像输入。 前两步加上 PLC 程序的执行称为一个扫描周期。见图6。 图 6 – 西门子 PLC 的扫描周期 周期时间监控 循环时间是指循环程序的运行时间,包括所有嵌套程序部分(例如 FC、FB 和更高优先级 OB)的运行时间。如果创建了多个程序循环 OB,则每个程序循环 OB 都会影响循环时间。 操作系统监视循环时间是否仍然小于配置的最大循环时间。如果超过最大循环时间,PLC 将根据您的编程进入 STOP 模式或调用 OB80。 除了监控最大循环时间之外,还可以保证最小循环时间。为此,操作系统会延迟新周期的开始,直到达到最小周期时间。 您可以在 PLC 的配置属性中配置最小和最大循环时间。见图7。 图 7 – 配置最小和最大循环时间 PLC 中的简单程序示例 图 8 – PLC 程序示例 为了更好地理解 PLC 程序周期和 OB1 执行,让我们创建一个简单的程序。该程序将使用一条加法指令,每 1 个扫描周期将值 1 累加到存储区域中。请参阅以下模拟。 从动画中可以看出,add 指令的执行速度非常快;这就是扫描周期的速度。这将取决于您的 PLC 的功能有多强大。但主要扫描周期在毫秒范围内。 结论 组织块是 PLC 操作系统和控制程序之间的接口。 主循环 OB1 由操作系统循环执行。 您可以通过将逻辑包含在一个或多个循环 OB 中来执行该逻辑。 扫描周期时间是执行逻辑 1 次所用的时间。
  4. 在上一篇文章中,我们讨论了什么是组织块,并且谈到了一个非常重要的组织块,它就是主 OB1。 在本文中,我们将继续讨论不同的 OB,这次我们讨论的是时间中断组织块或 OB10。 内容: 中断 OB10 是一天中的什么时间? 如何创建和使用 OB10? 简单的程序示例。 一天中中断时间的重要规则。 结论。 什么是当日时间中断 (OB10)? 顾名思义,时间中断是一个组织块,它将在一天中的某个时间中断 PLC 程序主周期的执行。该中断时间(日期和时间)可以指定为在指定时间发生一次,或者以指定时间间隔定期发生,例如每分钟、每小时、每天、每周和一些其他选项。 您可以在同一程序中拥有多个时钟中断,它们不必具有相同的逻辑或代码,每个中断都可以有自己的功能,并且每个中断都可以单独配置为在指定的时间发生 时间。 如何创建和使用 OB10? 要创建一天中的时间中断,请按照与需要在逻辑中添加任何新块时相同的步骤进行操作。见图1。 图 1 – 添加一天中的时间中断 按左侧项目树中的添加新块选项,选择组织块,然后选择一天中的时间中断,如上图所示。 现在您可以打开 OB10 并添加调用此块时要执行的任何 PLC 逻辑,所谓调用是指中断事件或时间已经发生,因此操作系统将中断主周期并执行 OB10。 我们将在 OB10 中编写一段非常简单的代码,以帮助我们更好地理解这个 OB10 块的工作原理。在此逻辑中,我们使用 add 指令将值 1 添加到称为 TimeOfDayInterruptCounter 的内存区域,然后将求和结果放回同一区域。这样我们就可以有一个用于执行 OB10 的计数器。 每次调用并执行 OB10 时,TimeOfDayInterruptCounter 的值都会加 1。见图 2。 图 2 – 将逻辑添加到 OB10 现在我们已经创建了 OB10 并在其中编写了一些逻辑,我们需要配置 OB10 的设置时间以及我们希望它中断主周期的次数。 要配置 OB10 的时间和间隔设置,我们需要进入 OB10 的属性页面。见图3。 图 3 – OB10 的属性 在 OB10 的属性中,您会发现许多可以配置的设置和属性。 现在我们需要的是一天中的时间中断页面,以便我们可以设置何时调用 OB10 以及调用多少次。见图4。 图 4 – 时间中断设置 正如您从最后一张图片中看到的,您可以设置 OB10 的执行、开始日期以及执行 OB10 的时间。 为了模拟方便,我们将执行间隔设置为每分钟,这样每分钟都会调用并执行 OB10。这意味着从 2023 年 3 月 23 日和时间 09:25 AM 开始,TimeOfDayInterruptCounter 的值将每分钟增加 1。 您可以选择根据 PLC 系统时间或本地时间设置时间,如上图所示。在上一篇文章中,我们讲了 PLC 的系统时间和本地时间,各个时间的含义以及如何配置和使用它们。 正如我们之前所说,当地时间是您现在在 PC 上看到的时间。所以是 PLC 使用地区的实际时间。 您必须根据 PLC 的使用地点配置本地时间。见图5。 图 5 – 设置 PLC 当地时间 简单 PLC 程序示例 我们在 PLC 程序中添加了时间中断 OB10,并对其进行了设置,以便每分钟执行一次。我们还配置了 PLC 的本地时间。 我们创建了 ADD 指令的简单逻辑,以便在每次执行 OB10 时将 TimeOfDayInterruptCounter 的值累加 1。 我们将添加另一条指令,但在主 OB1 中,该指令是 RD_LOC_T 或读取本地时间,因此我们可以看到本地时间的进展情况并将其与 OB10 的执行进行比较。见图6。 图 6 – 简单程序示例 编译您的 PLC 程序并开始新的模拟。 请注意,我们将设置中断发生的时间,以便在模拟 PLC 逻辑时可以调用并执行 OB10。请参阅以下模拟。 从动画中可以看到,TimeOfDayInterruptCounter 的值一开始为零,然后从 09:25 AM 开始每分钟增加 1,表示 OB10 每分钟执行一次。 一天中的时间中断的重要规则 如果设置时间中断以使相应的 OB 被处理一次,则启动时间不得是过去的时间(相对于 CPU 的实时时钟)。 如果设置时间中断以定期处理相应的 OB,但开始时间是过去的时间,则在下次到期时根据当前时间处理时间中断 OB。 周期性时间中断的日期必须与实际日期相对应。例如,开始日期为 1/31 的时间中断 OB 每月重复一次是不可能的。在这种情况下,仅在有 31 天的月份中启动 OB。 启动期间激活的时间中断只有在启动完成后才会执行。 启动会删除由用户程序中的指令设置和激活的所有时间中断。 结论 OB10 是一个组织块,可配置为在特定日期和时间中断程序循环。该中断可以发生一次,也可以每隔一定时间定期发生。 没有具体原因说明您需要 OB10,因为这取决于您的流程和逻辑。是的,您可以使用您的个人代码实现相同的功能,但它是一个可用且易于使用的内置函数。而且你知道如何使用它。
  5. 在之前的文章中,我们讨论了什么是组织块,并讨论了主循环中断 OB1 和时间中断 OB10。 在本文中,我们将继续讨论不同的 OB,这次我们讨论的是延时中断组织块或 OB20。 内容: 什么是 OB20? 如何调用 OB20? SRT_DINT 指令的参数。 示例程序。 结论。 什么是延时中断 (OB20)? OB20 是一个组织块,由操作系统调用并执行,但是我们必须告诉操作系统什么时候调用这个 OB20。 操作系统从用户 PLC 程序获取信息来调用该 OB20,它将等待配置的延迟时间,然后调用并执行 OB20 内部的任何逻辑。 我们通过在项目树中添加新块来创建 OB20 块。见图1。 图 1 – 创建一个新的 OB20 块 现在我已经创建了延时中断,那么什么时候执行呢? 以及如何配置块执行的时间延迟? 同样,OB20 是一个组织块,这意味着您不调用要执行的块,而是告诉操作系统何时可以调用它并执行其中写入的任何功能。 如何让操作系统调用 OB20? 为了告诉操作系统我们要调用 OB20,我们使用 SRT_DINT 或启动时间延迟中断,见图 2。 图 2 - 启动延时指令 SRT_DINT 指令的参数 从上图可以看出,可以使用 SRT_DINT 指令来调用 OB20。但您需要配置一些参数才能使指令正常工作。 EN:在 EN 输入出现下降沿信号之前,不会执行指令。这意味着您必须指定一组条件中的一个条件来启用信号,并且只有当该条件为真然后再次为假时,指令才会起作用。 OB_NR:您分配需要调用的延迟中断的编号,在我们创建 OB20 的情况下为 20,但我们可以创建多个延迟中断,然后我们必须使用单独的 SRT_DINT 指令调用每个延迟中断。 DTIME:即执行OB20之前要等待的延迟时间,为了模拟,我们将这个时间设置为 5 秒。 SIGN:调用延时中断 OB 时在 OB 的启动事件信息中出现的标识符。 PLC 程序示例 为了更好地理解 OB20,我们将创建一个简单的逻辑来了解如何调用和执行 OB20。我们将基于之前文章中为 OB1 和 OB10 制作的逻辑构建此 PLC 示例。 在 OB20 内部,我们将创建一个逻辑,用于计算在我们为 OB20 配置的 5 秒延迟时间内调用和执行了多少个 OB1 周期。见图3。 图 3 – OB20 内部逻辑 在最后一张图中,您可以看到我们使用 MOVE 指令在 OB20 调用开始时以及执行后推送有关周期计数的信息。 其余逻辑请参见图 4。 图 4 – 计算 5 秒内有多少个周期 之后,我们将循环计数的两个值相减,即可得到在五秒延迟内执行了多少个循环。 现在我们已经创建了我们想要的逻辑,我们如何调用 OB20? 如前所述,我们必须使用 SRT_DINT 指令。我们将在之前配置为每分钟执行一次的 OB10 中使用该指令。这意味着 OB20 也将每分钟调用并执行一次,但延迟时间为 5 秒。 在上一篇文章中,我们构建了一个逻辑来调用 OB1 被调用和执行的次数,我们还构建了另一个逻辑来每分钟调用 OB10。 在本例中,我们将使用 OB10 的调用来调用 OB20。见图5。 图 5 – 通过 OB10 调用 OB20 我们之前说过,SRT_DINT 需要 EN 处的下降沿信号才能启动调用。这就是为什么我们使用 TimeOfDayInterruptEnabled 信号,我们知道执行 OB10 时该信号将为 true,然后返回 false,为我们提供所需的边沿信号。 现在所有 PLC 逻辑都已完成,让我们编译并运行一个新的仿真。请参阅以下我们项目的模拟。 您首先在动画中看到周期计数的值为零,但是当调用 OB10 并且 TimeOfDayInterruptEnabled 为 true 时,逻辑将等待 5 秒,然后计数值将使用周期计数进行更新。 结论 OB20 是由操作系统调用并执行的组织块。 我们可以通过 SRT_DINT 指令告诉操作系统调用 OB20。
  6. 在之前的文章中,我们讨论了不同类型的组织块,例如主 OB1 是主循环程序块,在本文中我们将讨论另一个循环组织块。OB30 或循环中断 OB。 内容: 什么是循环中断 OB30? OB1 的主周期是什么? 为什么需要 OB30? 如何配置循环中断? 如果我有多个循环中断怎么办? 结论。 什么是循环中断 OB30? 循环中断 OB30 是一个组织块,它以指定且精确的时间间隔被调用和执行,与连续调用和执行的主循环 OB1 不同,循环中断将按照您在创建循环中断 OB 时配置的时间间隔被调用 。 例如,如果我创建的 OB30 的时间间隔(也称为周期时间)为 20ms,则意味着操作系统将中断主周期 OB1 并每 20ms 调用 OB30。 必须确保循环中断 OB 的运行时间必须小于其时间间隔。否则,当 OB30 的本次调用仍在执行时,仍有可能发生下一次 OB30 的调用到达。在这种情况下,操作系统会生成时间错误,可能导致 PLC 进入 STOP 模式。 什么是主循环 OB1? 主循环 OB1 是负责由 PLC 循环执行逻辑的组织块。每当您创建新项目并添加 PLC 时,软件都会自动创建主 OB1。 PLC 代码的基本基础是循环行为,这意味着您需要连续执行代码。当逻辑处理完成后,操作系统将再次开始处理它。这是通过使用主 OB1 来完成的,您可以在该 OB1 中放置和调用所有逻辑和代码,操作系统将确保连续执行它。 主 OB1 循环时间是指循环程序的运行时间,包括所有嵌套程序部分(例如 FC、FB 和更高优先级 OB)的运行时间。如果创建了多个程序循环 OB,则每个程序循环 OB 都会影响循环时间。 操作系统监视循环时间是否仍然小于配置的最大循环时间。如果超过最大循环时间,PLC 将根据您的编程进入 STOP 模式或调用 OB80。 为什么需要 OB30? 有人可能会说,我可以将 OB30 内的任何功能放在主 OB1 中,并尝试摆脱它,这取决于当今大多数 PLC 的快速性能。有时这可能没问题,但并非每次都如此。 根据 PLC 的性能,主循环时间可能在 1 到 150 毫秒之间;它可以不同,但这是标准配置,该循环时间取决于很多因素,例如 PLC 程序的大小、逻辑内部的中断以及其他因素,这些因素很可能会使循环的运行时间不稳定。 现在,如果您需要精确地每 10 毫秒执行某些功能,而不是 9 毫秒或 11 毫秒。现在您不能依赖主 OB1,因为结果可能达不到预期。在这种情况下,您使用循环中断 OB30,将其配置为您想要的 10ms,操作系统将确保精确地每 10ms 调用并执行此函数。这就是为什么它被称为中断;因为它会中断主 OB1 的执行来调用并执行您的 OB30。 需要 OB30 的功能示例 PID 控制器处理。 安全电路监控。 监控机器之间的通信。 前面的所有示例都需要在特定时间连续监视和检查参数,因为它们与实际物理量或机器安全相关。不应延迟执行此类功能,因为它们会影响流程的安全性和连续性。 如何配置循环中断? 创建循环中断时,需要配置一些参数。请参见图 1 添加新 OB30。 图 1 – 添加新的循环中断 OB30 创建循环中断时,您可以在块的属性中找到许多可以设置的参数,请参见图 2。 图 2——OB30的特性 您需要考虑的最重要的参数如下: 周期 使用参数“循环时间”设置循环中断 OB 两次调用之间的时间间隔。它是 1 µs 的整数倍。 相位偏移 在此,您可以设置开始时间相对于循环时间的倍数偏移的时间段。 有关周期时间和相位偏移配置,请参见图 3。 图 3 – 设置 OB30 的循环时间和偏移量 循环中断 OB 的优先级 这是配置循环中断时必须考虑的另一个重要参数,因为您可能有多个循环块,如果需要同时调用两个不同的 OB,操作系统将调用并执行该块 更高优先级的编号。 您应该知道 PLC 主程序循环 OB1 的优先级编号为 1,这是块可以具有的最低优先级。这就是 OB1 可以被任何其他块调用中断的原因。见图4。 图 4 – 设置 OB30 的优先级 如果我有多个循环中断怎么办? 在逻辑中出现多个循环中断的情况并不罕见。如果您的 PLC 逻辑中有两个 PID 控制器,那么您可能需要两个循环中断来处理每个 PID。在这种情况下,需要确保不同循环中断的调用和执行不会重叠。 例如,如果 OB30 的间隔循环时间为 5ms,OB31 的循环间隔为 10ms,则意味着 OB30 的第二次调用也将是调用 OB31 的时间。这可能会导致逻辑错误,即使您将其中一个的优先级设置为高于另一个,也会扰乱较低优先级块的循环时间。见图5。 图 5 – 调用不同循环中断的重叠 在这种情况下,当您使用多个循环中断 OB 时,可能建议使用相位偏移。 如果它们的周期时间具有公倍数,则可以使用相位偏移来防止同时启动时间。见图6。 图 6 – 不同 OB 调用之间的偏移 因此,为了避免这种重叠,我们将 OB31 的偏移时间设置为 1 ms。 这意味着 OB31 时间间隔的计数将比 OB30 的起始时间偏移 1ms。见图7。 图 7 – OB31 的偏移设置 结论 循环中断对于不应该面临任何延迟的时间关键任务非常有用。 您的逻辑中可以有多个循环中断。 使用循环中断的偏移设置来避免同时启动时间。 使用优先级设置来控制不同循环中断的执行顺序。
  7. 在之前的文章中,我们开始讨论 TIA Portal PLC 的不同组织块,讨论了 OB 是什么,并讨论了一些 OB,例如 OB1 - 主循环、OB10 和 OB20,分别表示时间延迟和时间延迟中断。在本文中,我们将讨论西门子 Tia Portal 中的 OB100 或启动组织块。 内容: 什么是 OB100? 为什么需要 OB100? 启动期间的重要注意事项。 简单的程序示例。 什么是初创组织块(OB100)? OB100 或启动 OB 是一个组织块,在 PLC 启动时由操作系统调用并执行一次,即每次从 STOP 模式转换到 RUN 模式时一次。 只有执行完 OB100 内部的所有启动函数后,主循环 OB1 才会被调用和执行。 您的 PLC 逻辑中可以有多个启动 OB,如果发生这种情况,操作系统将从较低 OB 编号到较高编号开始一一调用并执行所有这些启动 OB。IE。如果您有 OB100 和 OB123,则将首先调用并执行 OB100,然后再调用并执行 OB123。 执行 OB100 后,操作系统将输入模块读入 PII 并启动主循环程序 OB1。 为什么需要 OB100? 在启动循环逻辑之前,您可以使用 OB100 来执行许多您可能想要或需要执行的任务,原因如下: 初始化变量。 重置系统模块。 重新校准传感器/执行器。 在开始流程之前检查警报和安全状况。 即使您尚未为逻辑创建启动 OB,操作系统在启动主逻辑之前仍然需要执行许多任务,其中一些任务是: 清除非保留记忆 清除 PIQ 调用并执行启动 OB(如果有)。 更新个人身份信息 更改为 RUN 模式后启用输出。 您是否注意到启动例程的最后一个任务是启用输出? 这就是为什么执行主循环程序 OB1 的第一步是将 PIQ 写入输出模块。 启动期间的重要注意事项 关于 “STARTUP” 模式,请注意以下几点: 模块上的输出被禁用。 过程映像被初始化。 过程映像未更新。 为了在“启动”期间从输入读取当前状态,您可以通过直接 I/O 访问来访问输入。 为了在启动期间初始化输出,可以通过过程映像或直接 I/O 访问写入值。 在转换到“RUN”模式期间,这些值在 输出端输出。 非保持性位存储器、定时器和计数器被初始化。 数据块中的非保持性标签被初始化。 在启动期间,尚未运行循环时间监控。 简单程序示例 在此示例中,我们将向 PLC 逻辑添加一个启动 OB100,并查看 OB100 执行了多少次。请参阅图 1 添加新的 OB100。 图 1 – 添加 OB100 正如您从最后一张图片中看到的,您添加启动组织块的方式与我们添加功能块的功能相同。 在我们刚刚创建的 OB100 中,我们将添加一个简单的 ADD 指令,以累计 OB100 被调用和执行的次数。见图2。 图 2 – OB100的累计执行次数 现在,编译并运行您的程序,看看会发生什么。请参阅以下动画来了解 PLC 程序的模拟。 动画1 从上面的动画中可以看到,OB100CycleCounter 为 1,并且当 PLC 模式从 STOP 转换为 RUN 时它不会改变。 嗯,它确实发生了变化,但你看不到这种变化。每次 PLC 进入 STOP 模式,然后再次进入 RUN 模式。执行 OB100 后,计数器将重置为零,然后再次重置为 1。您还可以看到主 OB1 循环计数器发生变化,PLC 停止然后再次运行,OB1CycleCounter 将再次开始累加。 为了看到启动计数器的变化,我们需要保留标签内存的值。见图3。 图 3 – 保留 OB100CycleCounter 标签存储器 我们保留 OB100CycleCounter 标签后,现在再次运行 PLC 仿真,看看会发生什么。参见模拟动画2。 动画2 现在,您可以从上面的动画中看到,每次我停止 PLC 然后再次启动它时,启动计数器都会增加。由于现在保留了标签内存,因此该值不会重置为零,这就是您看到 OB100CycleCounter 的值累加的原因。 现在,我需要向启动 PLC 逻辑添加额外的功能,即了解 PLC 上次启动的时间。我们将通过一个简单的逻辑来实现这一点,在启动时读取 PLC 的本地时间并将日期和时间移动到某个存储区域。见图4。 图 4 – 启动时读取当地时间 添加逻辑后,再次编译并运行模拟。参见 PLC 仿真动画3。 动画3 从上面的动画可以看到,每次 PLC 启动时,启动日期和时间都会被记录在我们分配的内存区域中。现在我有了关于我的 PLC 启动了多少次以及上次启动时间是什么时候的信息。 结论 如果您想在运行循环过程之前评估某些功能,启动 OB 非常重要。您可以使用启动 OB 来初始化参数、校准传感器,甚至在允许流程运行之前检查安全条件。
  8. 在本文中,我们将继续讨论西门子 PLC 中不同类型的组织块。这次我们将讨论 OB121 或 Tia Portal 中的编程错误中断。 内容: 什么是编程错误中断 OB121? 编程错误的示例。 如果检测到编程错误会发生什么? 在 TIA Portal 中模拟编程错误。 OB121 如何有助于防止编程错误? 结论。 什么是编程错误中断 (OB121)? OB121 是一个组织块,如果运行逻辑时发生编程错误,PLC 操作系统将调用该块。请注意,我们并不是在讨论在尝试将逻辑下载到 PLC 时编译器会捕获的编程错误。见图1。 图 1 – 一些编程错误会被编译器捕获 从最后一张图可以看出,我的 PLC 逻辑中有一个编程错误;网络 1 的输入和输出中缺少一些操作数。但是,编译器甚至在将逻辑下载到 PLC 之前就捕获了该错误。图1中的错误不是可以触发需要调用 OB121 的编程错误类型。 PLC 程序中编译器无法发现的错误,但在 PLC 运行时仍然会导致逻辑出现问题,这就是我们所说的编程错误。这些错误将触发操作系统对 OB121 的调用。 编程错误示例 以下是 PLC 逻辑中可能导致编程错误的一些错误示例: 超出了块调用的最大嵌套深度。 您使用了 NULL 指针来寻址操作数。 未知指令。 寻址字符串的长度信息不正确。 读取时面积长度错误。 写入时区域长度错误。 计时器编号错误 访问未加载的数据库;DB 编号位于允许的区域内。 数据库不存在。 这些错误以及更多错误可能会导致 PLC 中的编程错误。您可以查看 TIA Portal 的帮助部分,了解可能导致 PLC 编程错误的其他原因。 如果检测到编程错误会发生什么? 当您的 PLC 检测到编程错误时,可能会发生以下三个事件之一。 您的 PLC 将显示错误并进入停止模式。 您的 PLC 将显示错误,但继续运行您的逻辑。 您的 PLC 将显示错误,然后尝试解决该错误。 这三个事件基本上取决于您的 PLC 编程。这意味着您的代码将决定操作系统在检测到编程错误时的行为方式。 在 TIA Portal 中模拟编程错误 为了更好地理解 PLC 的行为方式,我们将创建一个简单的程序,在其中引发编程错误,然后我们将看看会发生什么。见图2。 图 2 – 简单的程序逻辑 我们创建的逻辑非常简单,当 InitiateProgError 已启用时,值 126 将被移至 DB52.DBW16 区域。请注意,我们还没有创建 DB52。所以,这将是我们的编程错误。请注意,在编译或下载到 PLC 期间不会捕获此错误。见图 3 和 4。 图 3 – 编译器未捕获的错误 查看该块如何成功编译,同时包含编程错误。 图 4 – 下载到 PLC 的块 该块再次下载到 PLC 时出现编程错误。 现在,让我们模拟一下 PLC 程序,看看会发生什么。PLC 代码的模拟参见动画1。 动画1 正如您从上面的动画中看到的,PLC 错误 LED 将呈红色闪烁几秒钟,然后 PLC 将进入停止模式。 进入 PLC 在线诊断看看发生了什么。见图5。 图 5 – PLC 在线和诊断 您在动画中看到的内容与您在上一张图片中看到的内容完全相同。它们可以分为 3 个步骤: PLC 检测到编程错误,即 OB52 未加载。 操作系统将触发对 OB121 的调用,但在我们的逻辑中并没有创建 OB121。 当 PLC 发现我们的逻辑中没有创建 OB121时,操作系统就会发起 STOP 请求。PLC 将进入 STOP 模式。 OB121 如何有效防止编程错误? 让我们将 OB121 添加到 PLC 代码中,看看情况会如何变化。见图6。 图 6 – 添加 OB121 创建 OB121 并将其添加到 PLC 逻辑中后,让我们看看模拟中会发生什么。 请记住,我们尚未在 OB121 内编写任何 PLC 逻辑。参见动画2。 动画2 从动画2 中可以看到,当 InitiateProgError 被触发时,PLC ERROR LED 将呈红色闪烁,但 PLC 将继续运行。 这意味着 PLC 不会进入 STOP 模式。 让我们检查一下在线诊断,看看到底发生了什么。见图7。 图 7 – 错误并未导致 PLC 停止 从图中可以看出,PLC 检测到错误,但没有进入 STOP 模式。它将跳过此错误,继续循环并从头开始。 当再次出现错误时,它将再次检测到错误,并在诊断中发出警报。跳过错误并继续。这意味着 PLC 在每个扫描周期都会发出相同的警报。这就是为什么在图片中您看到事件不断触发并且警报在每个扫描周期重复。 因此,只要有一个空的 OB121 就可以让您保持 PLC 运行和扩展,从而保持过程运行。 但是,我们还可以做更多的事情,我们可以尝试捕获这个错误并消除它。另外,我们可以尝试显示检测到的编程错误的类型。 确定错误类型 OB121 有一个内部故障 ID 标识符,我们可以用它来显示故障类型,也可以作为 HMI 上的警报。在 OB121 内部,我们将创建一个简单的 MOVE 指令,在该指令中,我们将 OB121 的 Fault_ID 输入推送到全局 DB 内定义的存储区域。见图8。 图 8 – 识别错误类型 从上图可以看出,当发生编程错误时,Fault_ID 将被推送到 Data.ProgErrorID 中。见图9。 图 9 – 编程错误 Fault_ID 可以看到故障 ID 为 3A。如果您查看 TIA Portal 帮助您可以找到该故障的含义。 3A:访问未加载的 DB;DB 编号位于允许的区域内。 捕获错误 这只是意味着,在找出原因后尝试解决 PLC 编程错误。这主要取决于错误是什么以及您希望如何处理它。我们将模拟错误的解决方案,看看 PLC 将如何表现。 针对我们创建的错误的实际解决方案是仅创建 DB52 或使用已创建的数据块。 但为了模拟,我们将只添加一个简单的触点,当编程错误发生时,该触点将打开以捕获该错误。见图 10 和 11。 图 10 – 捕获错误 每当调用 OB121 时,都会设置 CatchError。 图 11 – 消除错误 每当调用 OB121 时,都会设置 CatchError,用于捕获网络 1 中的编程错误。PLC 模拟请参见动画 3。 动画3 从上面的动画可以看出,当 InitiateProgError 被触发时,PLC 会暂时出错,然后错误会被清除,PLC 始终处于 RUN 模式。 结论 如果代码中存在编程错误,只需在逻辑中包含一个空 OB121,即可确保 PLC 不会进入 STOP 模式。您稍后还可以使用 OB121 来识别错误并解决它。
  9. 在可编程逻辑控制器 (PLC) 和分布式控制系统 (DCS) 中,由于这些系统的实时性以及工业过程的相关复杂性,硬连线 I/O 和串行 I/O 之间的选择变得尤为重要。 下面,我将详细分析这些特定系统中每个系统的特征。 硬连线输入/输出 下面列出了我们必须讨论的有关硬连线 I/O 的要点。 直接连接 实时响应 接线复杂性 灵活性有限 可靠性 信号完整性 适应性 安全关键应用 1. 直连 硬连线 I/O 直接连接到 PLC 或 DCS。每个输入或输出设备都有一条返回控制器的专用线路。 2. 实时响应 这些 I/O 通常设计用于实时控制任务。它们特别适用于需要立即采取行动的时间敏感型应用,例如过程控制、联锁和紧急关闭。 3. 接线复杂性 对于具有大量 I/O 点的大型系统,硬连线解决方案可能会变得很麻烦,需要大量布线和更大的控制柜。 4. 灵活性有限 由于需要物理重新布线,修改或扩展硬连线系统可能是劳动密集型的。 5、可靠性 硬连线 I/O 通常被认为对于关键任务来说更可靠,因为它们具有直接、点对点的性质,可以降低通信故障的风险。 6. 信号完整性 与串行通信相比,硬连线连接的信号完整性通常更好,尤其是在电磁干扰 (EMI) 较多的环境中。 7. 适用性 最适合较小的系统或可靠性和速度至关重要的场景。 8. 安全 硬连线 I/O 主要用于安全关键型应用,例如控制回路至关重要的工业过程控制应用。 串行输入/输出 下面列出了我们要讨论的有关串行 I/O 的要点。 数据序列化 基于协议的通信 可扩展性 联网能力 数据处理 距离 漏洞 成本 安全 1. 数据序列化 串行 I/O 通常通过一条数据线一次传输一位数据。这与同时发送多个位的并行系统形成对比。硬连线 I/O 中的每个信号都有单独的电线,但串行 I/O 通常只有一根电缆用于传输/接收所有数据。 2. 基于协议的通信 它们通常依靠已建立的工业协议(如 Modbus、PROFIBUS 或以太网/IP)进行通信,这些协议标准化了设备之间的数据交换。 3. 可扩展性 串行 I/O 通常更具可扩展性。添加更多 I/O 点通常只需要配置现有网络,无需额外布线回控制器。 4. 联网能力 串行 I/O 可以轻松联网,并且通常具有内置诊断功能,这使得它们更加通用,但也增加了复杂性。 5. 数据处理 串行 I/O 在数据处理方面更加通用。它们可以通过网络传输更复杂的数据类型,包括实数和字符串。 6. 距离 它们更适合 I/O 点远离 PLC 或 DCS 控制器的应用。在某些情况下,我们可能需要一些特殊设备,例如中继器、网关等。 7. 漏洞 由于串行 I/O 是基于协议的,因此更容易出现数据冲突、延迟和其他网络相关问题等问题。 8. 成本 虽然由于网络硬件的原因,初始设置成本可能较高,但长期成本可能较低,特别是对于需要频繁修改或扩展的系统。 9. 安全 串行 I/O 绝不会用于安全关键型应用,因为主电缆损坏可能会导致数据完全故障。 在硬连线和串行 I/O 之间进行选择 两者之间的选择通常取决于各种因素,例如系统规模、所需的操作速度、安全性、数据复杂性和成本考虑。工程师通常会进行详细分析,有时甚至在单个 PLC 或 DCS 系统的不同部分中使用这两种类型,以充分利用每种类型的优点。例如,硬连线 I/O 可用于安全关键型应用,而串行 I/O 可用于数据收集和监控任务。 硬连线 I/O 和串行 I/O 之间的比较 下表显示了硬连线 I/O 和串行 I/O 之间的差异。 参数 硬连线输入/输出 串行输入/输出 连接类型 直接、点对点连接 基于协议,通常是联网 数据传输速度 通常更快,实时处理 由于序列化可能会更慢(取决于协议) 复杂性 由于序列化可能会变慢(取决于协议) 更易于管理的复杂性 可扩展性 扩展困难且昂贵 扩展更容易且成本更低 可靠性 故障点较少,可靠性更高 故障点较多 布线 需要大量布线 布线较少,通常只需一根数据线 信号完整性 在高 EMI 环境中更好 可能容易受到 EMI 影响 支持的数据类型 一般为 4-20 mA 模拟信号,24 V DC 数字信号 由于网络硬件的原因,这可能会更高 距离 适合较短距离 可以处理较长距离 成本(初始) 小型系统较低,大型系统较高 高(取决于协议) 成本(维护) 由于故障排除的复杂性而较高 通常较低 灵活性 有限,难以修改 高度灵活,易于修改 冗余 实施起来困难且昂贵 实施起来更容易且成本更低 安全应用 通常用于安全关键任务 不太常用于安全关键任务 网络诊断 有限或无 通常内置 当谈到 PLC 和 DCS 系统的安全性时,硬连线 I/O 和串行 I/O 具有不同的特性,这些特性可以增强或可能损害工业过程的安全性。 下面的比较表仅关注这两类 I/O 系统的安全方面。 安全方面 硬连线输入/输出 串行输入/输出 可靠性 由于直接连接和故障点较少,可靠性通常更高 基于协议和网络,引入更多潜在故障点 实时响应 非常适合实时响应,通常用于紧急关闭和安全联锁 由于网络拥塞或协议限制,可能会出现延迟,这使得它们不太适合立即采取行动 系统复杂性 较低的复杂性通常更容易识别和解决安全问题 网络和协议的复杂性使得确定安全问题的根本原因变得具有挑战性 信号完整性 不易受到电磁干扰 (EMI),从而提高信号质量和可靠性 可能更容易受到 EMI 和信号衰减的影响,从而危及安全 数据完整性 由于通常是点对点的,因此数据损坏的可能性较小 由于网络而更容易出现数据完整性问题,从而增加了安全相关故障的风险 人为错误 由于其简单性,不太容易出现影响安全的配置错误 配置或维护过程中出现人为错误的可能性更大,影响系统安全 紧急情况 由于响应时间快,通常是紧急关闭等安全关键系统的首选 由于可能存在延迟和其他网络相关问题,通常不用于立即操作任务 安全 较低的网络攻击敏感性,因为它们通常不联网 由于网络的原因,更容易受到可能危及安全的网络威胁 内置安全功能 安全功能通常是硬连线且不复杂,因此非常坚固 可能有内置的安全协议,但这些协议可能会受到网络问题的影响 认证 由于复杂性更低、可靠性更高,安全关键型应用的认证变得更加容易 由于网络和协议的复杂性,可能需要更广泛的测试和认证 从安全角度来看,硬连线 I/O 和串行 I/O 之间的选择通常倾向于关键安全应用的硬连线 I/O,因为它们具有固有的可靠性和即时响应能力。然而,系统的整体安全性并不仅仅取决于所使用的 I/O 类型;它还受到设计、维护实践和操作人员能力等因素的影响。
  10. leigehong

    PLC 系统的升级和迁移

    无论是工业自动化还是任何其他 PLC 系统,每个装置或设备在经过一定时间后都会达到一个阶段,需要对其进行更改或升级。 升级和迁移 例如,如果 PLC 的使用时间超过10年,则其技术支持将不再存在,或者 PLC 已经过时而无法更换。在这种情况下,您有两个选择 - 要么迁移到一套全新的 PLC,要么升级固件和程序。理解这种差异非常重要,因为它有助于选择合适的工作。 在这篇文章中,我们将了解升级和迁移 PLC 系统之间的区别,并了解如何实施正确的系统。 为什么需要迁移或升级 PLC 系统? 在进入主题之前,首先有必要了解为什么我们需要这样做。假设您已经使用“X”PLC 近 15 年了。程序不会突然出现故障;这是一个完全不同的理论,完全取决于程序员如何编写代码。PLC 代码一旦编写,终生都会以相同的方式执行。 问题始于硬件和支持。如果这种“X”PLC 不稳定或者编程有很多限制,那么 PLC 制造商通常不会将这种“X”PLC 投入生产这么长时间。 很快,该 PLC 将开始过时,并且将无法找到替代品。即使是系统集成商或 PLC 制造商本身也无法提供技术支持,因为他们的人员将转移到更新的品牌,或者其编程电缆也不再可用。 在这种情况下,如果 PLC 系统由于某种原因突然出现故障,那么您别无选择,只能等待较长的停机时间结束。另外,如果你仍然能够从某个地方获得这个 PLC,那么它的成本将非常高并且超出预算。 由于当前的供应链中断以及新的工业自动化解决方案和零件的稀缺,准确估计采购新设备可能需要多长时间是不可行的。在这种情况下,您有两个选择 - 要么迁移到另一个品牌,要么将现有品牌升级到更新的固件 CPU 或程序。 因此,这就是迁移和升级在工业自动化中发挥重要作用的原因。此外,新的解决方案还减少了错误和风险,提供了更强大的技术支持、服务专业知识、更少的资本投资以及工厂的高效运营。 什么是 PLC 系统的移植? 首先,让我们了解两者中较简单的一个。迁移是指用新系统完全替换旧系统。这类似于一个公民从原来的城市迁移到一个新城市。假设您有一台旧 PLC,在使用 10 年后被发现存在一些硬件缺陷。 CPU 的两个数字输入出现故障,并且该 CPU 不再在市场上销售。另外,由于运气不佳,提供 PLC 的系统集成商已经关闭了业务或转向了一些较新的品牌。 在这种情况下,迁移意味着您需要购买其他品牌的 PLC。在购买之前,您需要考虑 IO 数量、IO 接线、通信端口可用性、编程能力、内存容量、执行速度、可扩展程度等因素。 一旦你完成了这一切,你就需要购买一个新的,并根据制造商的软件在其中编写一个新的程序。另外,您需要与新供应商共享以前的 IO 列表,以便他在 PLC 中相应地进行 IO 映射,并减少在电气面板中接线 IO 的时间。完成后,您可以用新的 PLC 替换旧的 PLC 并相应地使用系统。 虽然使用这种方法不能完全应用新的、一致的编程标准,但整体功能仍然尽可能接近原始,并且可以在一定程度上改进程序。 什么是 PLC 系统升级? 我们再来看第二个 PLC 系统升级的案例。您拥有与之前讨论的制造商相同的 PLC,并且发生了故障。现在,您发现同一制造商的一些更高级别的 PLC 可用,具有相似的编码风格和 IO 功能。 甚至供应商也可以提供支持。您无需将供应商更换为更新的供应商或完全更改 PLC 品牌,只需将系统升级到更新、更高的系统即可。这个新的 CPU 要么必须用新的编码重写,要么只是即插即用,具体取决于软件。 因此,升级需要在更新系统时进行更全面的 IO 接线和 PLC 编码。 此外,从头开始重写新代码可以让程序员消除他在旧系统中观察到的错误,并以更简单的方式规划高效可靠的逻辑。这是一种升级系统的全新方法。 迁移和升级 PLC 系统之间的差异 迁移意味着切换到全新的 PLC 制造商,而升级意味着切换到同一 PLC 制造商的较新 CPU。 迁移比升级更便宜,因为它需要更少的停机时间、更少的新硬件、更少的编程时间和设计基础设施。 迁移比升级风险更小,因为您已经拥有旧程序的可用程序,只需复制粘贴相同的程序即可。虽然 100% 复制是不可能的,但由于这种方法,功能可以在很大程度上相似。 迁移可能会导致使用新的硬件,这可能需要工程师花时间快速了解系统,以便他们能够对其进行维护和故障排除。在这种情况下,升级就容易多了。 迁移的可靠性和效率不如升级,因为尽管你研究了这么多,但你仍然不知道这个新的 PLC 现在将如何工作。 迁移和升级是一件棘手的事情,需要参与其中的工程师和程序员的详细专业知识。此外,要采取的操作因系统而异。一旦完成,它可以使您的任务变得更加容易。这样,我们看到了 PLC 系统升级和迁移的概念。
  11. leigehong

    了解 GE 制造 PLC 上的 LED 指示

    我们都知道 PLC 在当今的自动化时代有多重要,所以有很多流行的 PLC 品牌,例如西门子、横河、AB、ABB、GE 等。在这些 PLC 控制器上,提供了很多 LED 指示来了解控制器的不同状态 ,但要了解状态,我们首先需要了解这些指示的含义。 GE 制造 PLC 上的 LED 指示 在本文中,我们将了解其中一款 GE PLC(特别是 CPL 系列)的 LED 指示,我们还将了解控制器上可用的各种端口的功能。 在这篇文章中,我们将解释 GE 制造的 PLC CPL-410 型号的 LED 指示。 关于 CPL 410 型号 该 PAC(可编程自动化控制器)系统称为 RX3iCPL410,配有内置 Linux 服务器,支持梯形逻辑、结构化文本、功能框图和 C 等编程语言。 包含 64Mb 可配置数据和程序存储器、用于离散输入和输出的 32K 位以及用于模拟输入和输出的 32K 字。还支持大容量内存用于数据交换 最多支持 768 个程序块,1 个程序块大小为 128KB,还支持 4 个独立的以太网 LAN(10\100\1000)。 最多允许 32 个 Modbus TCP IP 客户端,48 个 SRTP(服务请求传输协议)可以同时运行,以及 16 个同时的 Modbus TCP IP 服务器连接。 该 PLC 可以处理高达 -40 至 70 摄氏度的工作温度,它是 DIN 导轨安装设备,支持 18-30 VDC 电源,并且不需要特殊电源。 前面有 5 个以太网端口,底部有 1 个 RJ45 连接,OLED 显示屏可用于导航和监控 CPU 的各种状态,还有许多带 LED 指示的开关可用于监控状态并浏览设置。 我们可以使用 Proficy Machine Edition 软件对 CPU 进行编程和配置,该系统可以轻松创建冗余系统,到辅助 PLC 的切换时间为 100ms。 好的,现在我们将讨论此特定 GE PLC 型号 CPL-410 的 LED 指示。 在下图中我们可以看到很多指示和通讯端口,图 1 中 PLC 没有任何连接,图 2 是运行中的通讯通道。 图 1(左)、图 2(右) 所以,让我们从右上角开始。 µSD:此插槽用于插入Micro-SD卡;Micro SD 卡用于外部存储或加载程序;它有一个保护盖,以防止损坏。 DISP:您可以访问 OLED 显示屏上的显示菜单导航并根据需要进行更改,使用此按钮您可以访问 LAN 设置、控制状态、I/O 状态、设备信息、Linux 操作系统设置、冗余信息和冗余命令,我们可以检查每个 LAN 连接的配置 IP。 SEL:您可以使用此指示和按钮指导选择以进行任何设置修改,您可以根据您的要求导航选项。 RUN:用于向 PLC 运行命令,它激活 OLED 菜单以从 PLC 选择 RUN 启用或 RUN 禁用模式,在运行状态下,绿色指示将在运行按钮下方闪烁。 STOP:用于向 PLC 发送停止命令,可以通过该按钮为 PLC 选择停止启用或停止禁用。 PHY PRES:TPM(可信平台模块)物理存在指示暨选择,这将在健康状况下亮起绿灯。 SSD:固态硬盘活动,绿色指示处于健康状态。这是为了检查存储数据的固态磁盘或驱动器的运行状况。 TEMP:这表明控制器温度过高,当温度超出限制时,它将显示琥珀色 LED 指示。 OK:此信号表明 CPU 正常且处于健康状态。 OE:输出使能,正常时绿色指示。 FRC:当我们对任何模块或设备施加力时,黄色指示灯会亮起,表明力信号已启用。 FLT:当出现系统故障时,该指示将发出红光,如果任何模块出现问题,就会发生系统故障。 IO:该 LED 指示 IO 网络状态的健康状况;健康状况下绿色指示灯会亮起。 RACT:冗余系统是避免主控制系统出现任何问题时避免过程故障的必要条件,还需要对冗余系统进行密切监控以确保始终可用,RACT LED 指示将指示冗余处于活动状态或活动冗余状态,当冗余设备处于活动状态时,指示将呈绿色,一旦冗余 CPU 热备准备就绪,该 LED 将被激活。 RBOK:表示冗余备份单元正常,指示灯呈绿色。 GPOK:Linux 成功启动并重新启动 CPU 后,此 LED 指示灯将呈绿色闪烁,表示通用功能正常,即操作系统处于健康状态或准备好供用户登录,或者我们可以说 Linux 正在运行。 PWR:电源打开,我们也可以用这个按钮重置控制器,我们必须按住 PWR 按钮才能重置 PLC,在健康状态下它会发出绿光。 PLC 中的通讯端口 让我们对通信端口有一些了解: USB1:此端口分配给 Linux,可用于访问键盘、记忆棒、笔驱动器和其他已正确安装驱动程序的存储设备。 USB2:此端口分配给控制器运行时 PACS(可编程自动化控制器) LAN:LAN 端口用于配置工厂通信包和热备冗余,其中两个 LAN3 组端口用于实现此目的。它们在两个 CPU 之间提供高速数据同步链路。将主 CPU 的上部 LAN3 端口连接到辅助 CPU 的上部 LAN3 端口,并将主 CPU 的下部 LAN3 端口连接到辅助 CPU 的下部 LAN3 端口。 前面板局域网: -LAN-1:此端口不可切换,连接到最上面的 RJ45 连接器。 -LAN-2:连接中间两个 RJ45 连接器,可内部切换。 -LAN-3:连接下方的两个 RJ45 连接器,这些端口也能够内部切换,该端口用于为系统提供热备冗余。 底层局域网: -RJ45:该端口支持串行 IO 协议,该端口也是分配给 Linux 系统本身的。 LAN 端口的速度和链路的健康状况对于正常通信至关重要,我们来看看 LAN 端口的上下指示以及该指示的含义。 LAN 端口状态(上方指示): 绿色指示:相应的链路已建立,绿色闪烁:检测到流量,熄灭,无连接。 LAN 端口 - 速度(下方指示): 绿色 亮起:数据速度为 1 Gbps 或 100 Mbps,熄灭:网络数据速度为 10 Mbps 请参见下图了解 LAN 端口的指示。 图 3 PLC 底部可用的其他端口 RJ45:这是一个串行 COM 端口,我们可以在其中使用 RJ45 连接器连接通信通道,我们可以使用此端口进行直接以太网连接,或者我们可以使用 TCP IP 转换器(串行到以太网)进行 Modbus 或串行通信通道通信 。请注意,RJ 连接器有 8 个引脚,并与组合成双绞线的电线连接,这种双绞线有助于减少串扰并消除电磁干扰。 PLC 底部有以下端口(图 4) 图 4 Display Port:这是一个视频显示端口,我们可以使用此端口同时或单独传输视频和音频。DP 可传输信号范围为 144Hz 至 4k。 EFA:这是一个 IICS(Informatica 智能云服务)云端口,这是用于集成和数据管理的基于云的服务,使用此平台您可以配置连接、创建用户、运行、安排和监控活动或任务。 EPCSS:Energy Pack Control & Status Signal,它是一个带有 5 个接线端子的接线端子。虽然 EPCSS 在使用时是可选的,但它允许 PLC 控制器在断电时保存其当前状态。 24DC IN:三线端子块,用于向 PLC 提供 24V 直流电源。 我们来看看图 5 中所有 LED 指示的汇总 图 5 至此,对 LED 指示以及 GE 制造的 PLC 的各种端口有了一个基本的了解。
  12. leigehong

    PLC 开发中的测试和验证

    当您开发 PLC 程序时,您需要确保在向客户展示之前对其进行了正确的测试和验证。这是因为 PLC 程序中有很多部分,如逻辑、配置、设置等。 因此,有必要测试和验证每个部分,无论哪个程序会出现故障。如果配置或逻辑存在错误,那么系统将在现场出现故障。 为了避免这种情况,大多数程序员会花费数小时来测试 PLC 逻辑,这是他们所做的非常重要的一步。在这篇文章中,我们将学习 PLC 开发的测试和验证过程。 PLC 开发中的测试和验证 下面提到了与 PLC 测试和验证相关的一些要点。 召集利益相关者召开首次会议,讨论 PLC 项目的范围、目标和要求。 制定测试和验证的目标和验收标准。 分配测试和验证过程所需的资源,包括团队成员、硬件和软件工具。 准备详细的功能设计规范 (FDS),作为 PLC 程序开发和测试的基础。 根据功能设计规范开发初始代码块和例程。 专门为单元测试编写测试计划,确定每个单元应该完成什么以及如何测试它。 执行单元测试,遵循测试计划并记录每个功能或例程的结果。 创建集成测试的测试计划,概述如何将不同的代码块和例程组合并作为单个实体进行测试。 执行集成测试,验证整个程序的功能以及与其他系统的互操作性。 开发 FAT 协议,指定系统必须满足才能被视为可接受的标准。 在模拟环境中基于 FAT 协议进行 FAT,以确保满足所有要求。 起草详细的验证协议,定义如何进行验证、检查什么以及可接受的结果是什么。 审查验证协议并获得质量保证和其他利益相关者的批准。 实施验证协议、记录结果并识别任何偏差或失败。 创建 SAT 协议,重点关注 PLC 系统运行的真实环境。 进行 SAT 以验证 PLC 系统在其预期操作环境中可靠工作。 准备测试和验证活动、结果以及所采取的任何纠正措施的综合文档。 获得所有利益相关者的最终批准,确保 PLC 系统经过测试和验证。 建立流程来监控 PLC 系统的性能并安排定期重新测试和重新验证活动。 归档所有 PLC 项目文档和代码,并正式结束项目。 上述步骤提供了在新的 PLC 开发项目中准备测试和验证的简单指南。 让我们一一看看一些重要的步骤,需要遵循这些步骤直到最后才能正常运行。 IO 映射 PLC 根据输入和输出运行。因此,测试程序的第一步是检查 PLC 中的 IO 映射。您必须在模拟中强制每个数字输入,或者向 PLC 提供实际的硬件输入。 一项一项地,如果映射正确,那么同样会反映在您的图形和程序中。这将验证数字输入。对于模拟输入遵循相同的过程。但是,对于模拟输入,您必须提供多个原始计数,而不仅仅是一个计数。 广泛的计数可以让您正确了解通道是否正常运行。然后,对于数字输出,你必须一一强制它们。如果 PLC 输出按照顺序打开和关闭,则您的 DO 映射是正确的。 对模拟输出遵循相同的过程,并提供广泛的原始计数而不是单个计数。您将正确了解 AO 通道是否正常运行。 通讯协议检查 一旦在 PLC 程序中验证了 IO,下一步就是检查通信和网络地址。假设 PLC 有一个以太网端口和一个 Modbus RTU 端口。您已将一个 HMI 连接到以太网端口,并将三个 VFD 连接到 Modbus 端口。Modbus 端口用于与 VFD 传输和接收数据,如电流、频率、电压等。 这些映射已由您在 PLC 逻辑中完成。首先检查以太网口,测试 IP 是否能 ping 通;以及是否与 HMI 通讯。然后,建立 Modbus 通讯并检查与 PLC 的数据通讯是否正常。 这完全清除了您的硬件部分,因为您现在可以正确地将数据传送到现场;通过硬 IO 或软 IO。这两个基本步骤是验证的第一步。 手动模式 一些系统具有没有关键联锁的手动模式,而一些系统具有带有关键联锁的手动模式。要检查手动模式,您必须逐步打开每个输出,并检查实际的物理输出是否打开。 第一步验证物理 DO 或 AO 是否已与手动模式按钮正确链接。然后,您必须产生相应的警报并检查输出是否关闭。 仅应关闭链接的输出。其余输出不应受到影响。这确保了所有输出都已在程序中通过正确的互锁正确链接。因为,一旦手动模式被清除,将确认物理输出可以手动打开,然后可以更容易地检查自动模式。 直接检查自动模式逻辑会使程序员混淆什么输出正在打开或关闭。验证手动模式将确保各个输出是否打开。 自动模式 下一个重要步骤是检查自动模式。自动模式是一个带有互锁的验证序列。每个系统都有一个控制逻辑文档,显示序列如何与适当的联锁和输出矩阵一起工作。 PLC 程序员必须确保当任何序列运行时,相应的输出相应地打开/关闭。另外,序列是否正常运行并具有互锁? 自动模式逻辑在制作时必须主要分为四个部分 打开输出, 编写序列流, 连接联锁和警报,以及 显示当前运行状态。 这种技术使得程序流程非常容易查看和排除故障。 应尽量避免不断使用置位-复位线圈和梯形逻辑。梯形图逻辑使用起来很方便,但是在线仿真运行时,排查故障很费时间。 此外,置位-复位线圈也难以管理,因为一旦使用了置位线圈,就必须小心地将其复位到某处。否则,如果条件写入不正确,该位将保持设置状态。 就这样,我们看到了 PLC 开发中的测试和验证过程。
  13. 只有使用变频驱动器才能控制感应电机的速度。基本上,我们可以通过三种不同的模式来控制感应电机的速度。 使用数字信号 使用 0~10V/0~5V/4~20mA/0~20mA 等模拟信号 使用 Modbus 通讯,无论是 RTU 模式还是 TCP/IP 模式 感应电机转速 在这篇文章中,我们将使用范围为 0 至 20 mA 的模拟输入信号来控制电机的速度。本文介绍如何使用 PLC 的模拟输出来控制电机的速度。请参阅下面的示意图以获取概述。 为了改变电机的速度,来自 PLC 的 0 至 20 mA 模拟输出信号被发送到 VFD 的模拟输入端子。随着毫安从 0 增加到 20,速度从 0 到 50 Hz 变化。在本主题中,我们使用 S7 200 智能 PLC 的六个独特的模拟输出点来控制六个电机的速度。(每个电机根据电机额定值都有单独的 VFD)。 这里使用的 PLC 是西门子 S7 200 Smart 系列的 CPU ST60,并配有两个模拟量输出模块 EM AQ04,而 VFD 型号是施耐德电气的 ATV310 系列。西门子 HMI 与 CPU ST60 通信,可从屏幕上改变电机的速度。 在进行 PLC 逻辑之前,请参阅下面的硬件配置和连接详细信息: CPU ST60 中添加了上述模拟量输出模块。VFD 的每个模拟输入点都会从各个 PLC 模拟输出点接收 0 至 20 mA 信号。 现在,查看 ATV310 VFD 驱动器的参数详细信息。 401:01(参考通道 1) 204.0:0A(AI1型) 204.1:4mA(AI1电流定标参数 0%) 204.2:20mA(AI1电流定标参数 100%) 除此之外,还需要根据电机额定值在 “300” 组中设置电机参数。 模拟输出模块也称为 DA 模块或数模模块。根据该声明,根据配置设置将数字值转换为毫安或电压。 不同的 PLC 有不同的数字值,可以转换成模拟电压或毫安信号。西门子 S7 200 系列使用 0 代表 0 毫安,27648 代表 20 毫安。 根据参数号 “204.1”,我们必须确定输出点发出 4mA 左右的数字值。通过使用碰巧方法,我们确定该值为“5559”,此时我们接收到的电流大约为 4 毫安。 根据上面的讨论,频率将在 0 到 50Hz 之间的任何位置,并且 PLC 中的毫安表示为数字值。当从 HMI 馈送特定频率时,需要进行一些缩放才能获得实际频率。 因此,我们可以将这些数字值称为 “未缩放” 值。现在要将这些未缩放的值更改为缩放后的值,可以使用以下公式: OSH = 27648.0(输出 20 mA 模拟信号的未缩放数字值) OSL = 5559.0(输出 4 mA 模拟信号的未缩放数字值) ISL = 0(频率输出下限,单位 Hz) ISH = 50(频率输出上限,单位 Hz) “输入” 是用于从 HMI 设置电机速度的变量。 “输出” 是缩放后的数字值 现在,将这些值放入公式中并进一步评估: 输出 = [(27648.0 – 5559.0) *(输入 – 0)/(50 – 0)] + 5559.0 输出 = [22089.0*输入 /50] + 5559.0 输出 = [441.78*输入] + 5559.0 在评估梯形图逻辑中的方程式之前,请先完成以下 PLC 软件中的模拟输出配置设置: 在 Step 7 MicroWin Smart 软件中,单击 “项目树” 栏中突出显示的系统块设置选项。 在系统块设置中,配置第一张 AQ04 卡的所有通道和第二张 AQ04 卡的第 3、4 通道,当前类型突出显示。 使用模拟输出进行感应电机速度控制的 PLC 编程 网络 1: VD200 以频率或 Hz 的形式存储从 HMI 设置的输入值或变量值。然后乘以 441.78 并存储在 VD204 中。 然后将 VD204 中的值加上 5559 并存储到 VD208 中。 VD208 中的值是实数格式的评估缩放输出值。VD208 中的值的小数部分被丢弃,整数部分使用 “TRUNC” 指令以双整数格式存储在 VD276 中。 之后,MW4 以整数格式存储该双整数值。AQ04 模块的第一个通道 AQW16 的地址是该值现在传输的位置。 例如:如果 VD200 = 41.5 Hz 从 HMI 馈送,则 VD208 = [441.78*41.5] + 5559.0 = 23892.87。 因此,为了达到 41.5 Hz,需要将 23892 以整数形式存储在 MW4 中。 根据网络评论,第一个通道用于改变其中一个应用中电机(装载机)的速度。 同样,网络 2 至 6 的构建是为了使用 VD212、VD224、VD236、VD248 和 VD260 作为其变速设定点,从 EQ04 模块的各自通道改变其他电机和风扇的速度。 根据接线连接,第二个 EQ04 模块使用第三、第四通道; 因此,使用的地址是 AQW36 和 AQW38。要了解更多信息,请参阅系统块配置。
  14. leigehong

    PLC 接线最佳实践

    由于多种原因,PLC 接线(可编程逻辑控制器)的最佳实践对于工业自动化和控制系统至关重要。 在生产运营、制造和能源生产领域以及广泛的工业领域,PLC 的主要组件有助于调节和监控不同的流程。 PLC 接线最佳实践 图片提供:PLCHMIs 以下是正确 PLC 接线如此重要的一些关键原因。简而言之,它提供可靠性、安全性、准确性、维护性、可扩展性、合规性、成本效率和文档。 PLC 接线有哪些做法? PLC(可编程逻辑控制器)的接线是自动化控制系统安装和调试的基本部分。PLC 用于控制各种工业过程和机器。 接线将 PLC 连接到工厂车间的传感器、执行器和其他设备。它确保信号从 PLC 准确传输,使其能够与设备交互。 以下是 PLC 接线时应采取的一些重要做法: 规划 在开始布线之前,必须有一个清晰的布局计划。它应包括组件、输入/输出 (I/O) 设备以及 PLC 在机柜或电气面板中的位置。 接线图 确保拥有电气图的更新(修订)副本。 选择合适的电缆 使用符合必要电气规格的优质电缆。 确保它们足够长并具有足够的电流容量,以避免信号传输问题和过热。 鉴别 清楚地标记所有电缆、连接器和端子。它简化了故障排除、维护和未来扩展。标签可以轻松识别系统内的每根电缆、连接器和端子。 标签有助于保持控制系统的完整性。错误连接电缆或端子可能会导致设备损坏、系统故障甚至安全风险。正确的识别可以减少安装或维护过程中出错的机会。 牢固的连接 通过拧紧端子来确保牢固和安全的连接,以防止可能导致故障的连接松动。 对于市中心的工厂来说,成本可能极其昂贵。连接松动会导致设备意外停机或故障,从而导致生产延误和财务损失。 电源和信号分离 电源线和信号线之间保持足够的距离,以避免电磁干扰。 如有必要,请使用排水沟或分隔线以物理方式分隔电缆。这有助于防止串扰并减少干扰的机会。 测试与验证 在给 PLC 系统通电之前,必须执行连续性和验证测试。这是为了确保所有组件均按照设计规范正确连接。不正确的连接可能会导致设备故障、效率低下或损坏。 安全 接线时请遵守电气安全规定。在进行接线之前,请确保 PLC 和所有组件均已拔掉插头。 文档 保留所有接线的详细记录,包括最新的图表、接线清单和配置文档。这对于未来的维护和未来的系统修改非常有价值。 训练 确保操作和维护系统的人员接受过 PLC 接线和操作方面的培训。 监管合规性 验证 PLC 接线是否符合适用标准。 正确的接线对于保证 PLC 控制系统的可靠、安全运行至关重要。 PLC 接线对于工业控制系统的可靠性、安全性、准确性和可维护性至关重要。 正确的接线可确保控制系统按预期运行并符合行业标准和法规,最终有助于工业过程的整体效率和成功。 为什么正确的 PLC 接线很重要? PLC(可编程逻辑控制器)的正确接线对于工业自动化和过程控制系统至关重要,原因如下: 正确的接线可提供系统可靠性。正确的接线可确保系统组件之间牢固且稳定的电缆连接,从而减少间歇性故障或通信错误的可能性。 它保证了安全。不正确的接线可能会导致短路、过载和电气危险。正确的接线可以最大限度地减少电气事故的可能性,并确保系统符合安全标准。 它提高了系统性能:不正确的接线会对系统性能产生负面影响,导致通信和指令执行延迟。正确的布线可确保快速、准确的数据传输。 正确的接线可减少停机时间和维护成本。它帮助我们进行更简单的维护:仔细组织和标记电缆将使我们更容易识别和解决系统问题。 法规遵从性:在许多行业中,一些特定的法规和标准要求正确布线以确保系统安全和质量。 PLC 接线技巧 下面我们分享一下 PLC 接线的相关要点。 遵守国家和当地的电气规范。 使用屏蔽电缆传输模拟信号和通信信号。 确保所有组件正确接地。 标记所有电线和端子。 实施电线颜色编码方案。 将输入接线与输出接线分开。 使用尽可能短的电缆长度。 避免将电线缠绕在端子螺钉上。 根据负载和电流要求选择合适的线规。 对绞合线使用线套。 在物理上分开高压线和低压线。 仔细检查电源和 I/O 连接的极性。 将电线捆扎整齐并使用扎带。 通电前测试电线连续性和正确连接。 维护更新且详细的文档。 使用接线端子更方便维护。 定期进行接线检查。 使用应力消除机制来保护电线。 为了安全,请遵循上锁/挂牌程序。 接线完成后进行彻底的系统测试。
  15. leigehong

    PLC 编程器现场调试步骤

    每当一个新的 PLC 程序员去现场调试一个项目时,出现的第一个问题就是如何去做。这是因为 PLC 系统庞大且难以理解。 因此,每个 PLC 程序员必须知道自己在到达现场时应该做什么,并有适当的计划。如此大量的电场线和设备,需要配合 PLC 程序逻辑来了解他在做什么。 在这篇文章中,我们将学习 PLC 程序员应遵循的调试步骤。 PLC 编程器现场调试步骤 PLC 程序员的第一步是检查他的笔记本电脑上是否安装了所有必需的 PLC 软件。假设该站点系统中有施耐德自动化。那么,首先,他需要在笔记本电脑上安装所有相应的 PLC 软件。软件每次都必须正确打开,所有相关驱动程序也必须正确响应。之后,他需要将笔记本电脑连接到办公室的自动化硬件。这将确保他能够在系统中正确上传和下载。软件安装或连接不当可能会导致现场调试出错。 然后,他必须在笔记本电脑上进行最终备份,并通过模拟检查 PLC 逻辑。这将确保他到现场了解整个过程。之后,携带所有通讯电缆,准备前往现场。如果发现由于时间限制,系统没有得到充分检查,则记下测试过程中观察到的待处理点和逻辑错误。确保在调试时对此进行检查。 到达现场后,首先全面了解工厂状况。有多少机械工作待处理,有多少电气工作待处理;这是最重要的。另外,检查水、空气和蒸汽等公用设施的状况。记下所有状态并在笔记本电脑上列出日常活动列表。将此文件分享给你的直属上级,以便他知道活动卡在哪里,并可以相应地推动相应的人员完成工作。 一旦面板被交付测试,就开始检查现场 IO。根据 IO 列表和接线图,相应的现场设备必须相应操作。记下发现的任何问题并联系电气人员解决问题。 如果 PLC 系统中有通讯设备,也必须检查它们。所有通讯设备必须能够在网络总线上与 PLC 自动化系统正常通讯。 现场接线确认后,必须检查所有机械装置是否按接线运行。最后,进程运行很重要,如果设备没有响应,则进程将无法正常运行。 一旦完成所有器件验证部分,下一步就是与工艺工程师验证逻辑。必须检查设备是否按照编写的逻辑运行。如果发现问题,检查是否可以通过逻辑解决,或者是否必须由工艺工程师解决。得出同样的结论并解决。 这样您的 PLC 调试活动就完成了。保存所有最终备份并将其交给您的上级以确保安全。此外,记下所有最终工艺参数并录制运行工厂的视频以供理解。制作最终报告并由客户签字以证明调试已完成。记下他的任何言论,并确保问题尽早得到解决。 PLC 调试步骤 下面简单介绍一下 PLC 调试的主要步骤。 查看文档:检查系统要求和原理图。 安全检查:验证上锁/挂牌和其他安全协议。 硬件检查:检查 PLC 和 I/O 模块是否有任何损坏。 上电:打开 PLC 并确认基本功能。 建立通讯:建立 PLC 与编程终端之间的链接。 更新固件:如果需要,安装最新的 PLC 软件版本。 配置 I/O:设置输入和输出模块。 加载程序:将初始 PLC 代码下载到系统中。 测试模式:验证各个输入、输出和通信。 回路检查:确保现场设备和 PLC 之间的信号完整性。 逻辑测试:验证 PLC 功能和序列。 模拟:使用模拟输入测试复杂逻辑。 流程启动:开始流程的初始测试运行。 微调:根据测试运行调整 PID 控制器调谐、计时器、计数器和设定值。 更新文档:记录调试期间所做的更改。 功能测试:验证整个系统是否按预期工作。 操作员培训:教操作员如何使用新设置。 创建备份:保存最终的 PLC 程序和配置参数。 客户批准:获得客户或项目经理的签字。 移交:完成系统移交的文档。 这样,我们就看到了 PLC 程序员要遵循的调试步骤。
  16. leigehong

    什么是 PLC 编程指令列表?

    PLC 编程有五种语言:梯形图、指令表、结构化文本、功能块图和顺序流程图。每种类型的 PLC 语言都有其自身的优点和缺点。虽然某些语言在视觉上看起来不错并且很容易排除故障,但其他语言具有较低的内存消耗和更快的处理速度。 使用的最基本的 PLC 语言之一是指令表。它不像其他语言那样出名,并且由于技术过时,只有少数 PLC 程序员使用,但仍然在几乎所有 PLC 制造商的软件中可用。在这篇文章中,我们将了解 PLC 中指令表语言的概念。 什么是指令列表? 用指令表语言编写的 PLC 程序由一系列由逻辑控制器顺序执行的指令组成。每条指令由单个程序行表示,并由以下部分组成: 线路编号 当前值(仅限在线模式) 指令运算符 操作符 可选注释 基本上,如果您见过微处理器中使用的传统汇编语言,那么您很容易就会与这种语言产生联系。它也可以称为梯形逻辑和结构化文本的混合。梯形逻辑是指指令必须以线性方式编写,而结构化文本是指助记符在单词中使用。 请参阅下图以了解更多信息。第一张图显示了用梯形图语言编写的 PLC 逻辑。逻辑是 – 如果 %M0 开启且 %M1 开启或 %M2 开启,%M3 将开启。 现在,请参考以下指令列表逻辑。您可以看到每行只有一个组件 - 第一行有 %M0,第二行有 %M1 与下一行进行 AND 逻辑。 第三行让 %M2 与前一行进行 OR 逻辑,第四行关闭命令,第五行打开输出 %M3。因此,它是梯形逻辑和结构化文本的表示。 指令表的组成部分 PLC 指令表的主要组成部分如下所述。 行号 – 创建新程序行时会生成四位数的行号,并由软件自动管理。上图中可以看出为 0000 到 0004。 当前值——在线模式下,您可以看到各个元素的当前值,如下图所示。在线动画期间,下图中指示其为真或假。 指令运算符 – 该运算符是一种用于执行指令的命令。也可以称为所写逻辑的输入侧和输出侧。它是一个助记符号,用于表示输出端要执行的命令类型以及输出端将如何执行它。例如,上图中,LD 代表加载,通过加载第一位的值开始执行,AND / OR 表示逻辑指令,ST 表示将结果值存储到目标位。 评论——这是可选的。它允许程序员编写任何注释来帮助他轻松排除逻辑故障。 PLC 编程中的指令表 下面介绍一些 PLC 的指令表。 LD – 将操作数的布尔值加载到累加器中。 LDN – 将操作数的布尔值取反后加载到累加器中。 LDR – 当操作数从 0 变为 1(上升沿)时,将操作数的布尔值加载到累加器中。 LDF – 当值从 1 变为 0(下降沿)时,将操作数的布尔值加载到累加器中。 AND – 它在前一个结果和当前操作数之间执行 AND 运算。 ANDN – 它在前一个结果和当前操作数的倒数之间执行 AND 运算。 ANDR – 在前一个结果和当前操作数的上升沿之间执行 AND 运算。 ANDF – 在前一个结果和当前操作数的下降沿之间执行 AND 运算。 OR – 在前一个结果和当前操作数之间执行或运算。 NOT – 它执行操作数的逆运算。 ST – 它采用生成的结果的值。 STN – 它采用生成结果的倒数值。 S – 对操作数进行设置操作。 R——对操作数进行复位操作。 除此之外,它还有其他指令,如跳转、子程序、结束、与、或等,具体取决于 PLC 制造商。 这样,我们就了解了 PLC 编程中指令表的概念。
  17. leigehong

    PLC 编程人员现场携带所需工具

    每当 PLC 程序员访问现场进行调试或进行某些服务呼叫时,他必须知道在开始工作之前必须携带哪些工具。这是因为大多数地点都非常偏远,如果忘记携带,并非所有材料都可以轻松获取。因此,如果他小心谨慎并随身携带必要的材料,那么他就可以轻松完成工作。 当程序员阅读待办事项列表时,通常会出现很多混乱;所以,我想简单地提一下,以便他们能够快速掌握。 PLC 编程工具 PLC 程序员所需的主要工具如下所述。 安装了 PLC 软件的笔记本电脑 USB 至 PLC 接口电缆 以太网电缆 螺丝刀套装 电气测试表(万用表) 剥线钳 钢丝钳 接线端子螺丝刀 电工胶带 便携式硬盘或 USB 闪存驱动器 RJ45 压接工具 串行转换器(RS232 到 USB 等) IP 配置工具(可选) 用于标记电线的标签机 工业以太网交换机 模拟信号环路校准器 绝缘钳 用于记录的笔记本和笔 用于现场标签的便携式打印机 防静电手腕带 注意:所需工具可能因具体 PLC 品牌、型号和现场工作性质而异。始终确保携带必要的个人防护装备 (PPE)。 在这篇文章中,我们将看到 PLC 程序员在现场需要携带的工具。 合适的笔记本电脑 这是首要的基本要求。屏幕/硬件损坏、RAM 性能缓慢或内存不足的劣质笔记本电脑可能会严重妨碍程序员的工作。所有必备软件都必须存在于程序员使用过的笔记本电脑中。 任何不正确安装的软件都会以非常糟糕的方式破坏他的工作。他的所有通信端口都必须正常工作。笔记本电脑充电器必须正确。除此之外,Wi-Fi 等网络适配器必须正常工作。 编程电缆 当 PLC 程序员到达现场时,他基本上是要连接到一些自动化设备。为此,他必须携带所有必备的编程电缆。在前往现场之前,他必须在办公室检查这些电缆。 例如,如果 PLC 有 USB 端口、LAN 端口和 RS485 端口,那么他至少必须携带 USB 和 LAN 电缆,这些电缆很容易获得。只携带一根电缆是有风险的。 笔式驱动器/便携式硬盘 外部存储是必须的,因为您可以随时需要它来传输文件或存储备份。存储必须有足够的可用空间,以便在需要时存储数据。 如今,许多自动化设备都配有 USB(笔式驱动器)端口;因此,如果电缆不起作用,携带它可以增加安全性。 鼠标 在现场,PLC 程序员大部分时间都面临着按时完成任务的压力。使用笔记本电脑触摸板会消耗大量时间。 此外,笔记本电脑触摸板使图形设计变得忙碌。因此,携带 USB 鼠标可以帮助他们轻松完成任务。 螺丝刀套装 螺丝刀对于 PLC 程序员来说是非常重要的工具。如果他在现场遇到任何接线问题,或者接线工需要他的一些额外帮助,那么各种尺寸的螺丝刀将非常有用。 此外,PLC 程序员可以在没有人帮助的情况下独立处理一些电气接线,以快速解决任何问题。 剥线钳 与螺丝刀类似,剥线钳也发挥着重要作用。如果突然需要进行大量接线,那么 PLC 程序员只需剥去线头并按要求进行接线即可独立完成。 网络连接 由于 PLC 编程器可以多次要求在线支持访问,因此要求 SIM 卡有足够的数据并且速度必须足够好以支持。 通常,您的 SIM 卡也有可能无法访问该网站。在这种情况下,请向当地工程师寻求帮助以获取他们的数据,或者更好的是,您可以携带网络适配器以获得最佳使用效果。 文具用品 如果 PLC 程序员携带记事本、钢笔、记号笔等书写用的文具,那就太好了。很多时候,在工作中写一些东西可以帮助程序员在压力大的情况下记住事情。 此外,由于客户持续不断地要求完成工作,编写东西使程序员的工作变得更容易。 这样,我们就看到了 PLC 程序员在现场需要携带的必备工具。
  18. 在工业自动化中,有时 IO 仪表距离面板很远,由于距离太远而无法与本地 PLC 连接。 因此,可以使用远程 IO 模块,仅将这些 IO 的数据与主 PLC 进行通信。这使得通信更加容易,并为仪器工程师提供了将仪器放置在任何需要的地方的灵活性。 远程 IO 适配器模块 远程适配器与主 PLC 之间的通信大多通过以太网完成,这是最快、最高效的通信方式。 许多 PLC 品牌都提供此类远程 IO 模块。其中,施耐德电气就是这样一个品牌,其中有 BMXCRA 或 BMECRA 模块可供使用。在这篇文章中,我们将了解施耐德 PLC 中 CRA 模块的概念。 施耐德 PLC 中的 CRA 模块 图片:BMXCRA31210、Modicon X80 RIO 模块 CRA 是 Schneider PLC 自动化系列中的远程 IO 适配器模块。它没有任何 CPU 来编写逻辑;它只是一个数据通信器。它获取 IO 值并将其不断更新到主 CPU。该模块工作在以太网 IP 协议上。它有三个 LAN 端口用于工作。 除了标准 IO 值外,该模块还提供各种类型的诊断以进行故障排除。这有助于程序员更灵活地编写逻辑。例如,您有三个 IO 模块,距离 CPU 非常近。然后,只需在软件中的 CRA 模块中配置这三个模块即可;然后 CRA 将使用它与 CPU 进行数据通信。 模块配置 该模块上有两个旋转开关。它们定义了模块的 ID。例如,系统中使用了 4 个 CRA 模块。所有四个都彼此相距很远。然后,每个模块必须被赋予一个单独的标识,以便 CPU 逻辑可以轻松区分。 另外,模块 IP 在 CPU 程序中设置。CRA 模块中没有任何配置。只需在 PLC 逻辑中为 CRA 模块正确配置 IP 地址,通过旋转开关设置 ID,您的 CRA 模块就会开始相应运行。 该模块有四个 LED 用于故障排除 – 运行、IO、模块状态和网络状态。详细阅读模块的目录以获得正确的描述。 施耐德 PLC 通讯模块 该模块仅在 Schneider PLC 的 M580 和 Quantum 系列中受支持。该模块的一个有趣之处在于它具有大量的通信服务,例如 SNMP 代理、SNTP 客户端、FDR 客户端、FTP 客户端、TFTP 客户端、DHCP 客户端、CIP 显式消息和服务质量。所有这些都是网络安全功能的一部分,有助于保护模块免受网络攻击。 CRA 模块是完全冗余的。这取决于您如何将系统联网。冗余级别取决于布线方式以及拓扑结构。基于此,您可以安全地操作逻辑,而不必担心 IO 数据丢失。 例如,您有两个 CRA 模块并需要 IO 冗余。根据其支持的拓扑,您可以这样设计网络:如果第一个 CRA 模块的一个 LAN 端口发生故障,您可以通过第二个 LAN 端口将数据传输到第二个 CRA 模块,然后传输到主 PLC。有多种路由选项可供选择。 这样,我们就看到了施耐德 PLC 中 CRA 模块的概念。
  19. leigehong

    PLC 数学指令

    IEC 61131-3 标准指定了多个用于执行算术计算的专用梯形图指令。 其中一些如下所示: PLC数学指令 与数据比较指令一样,这些数学指令中的每一个都必须通过到使能 (EN) 输入的“通电”信号来启用。 输入和输出值通过标签名称链接到每个数学指令。 此处显示了使用此类指令的示例,它将以华氏度为单位的温度测量值转换为以摄氏度为单位的温度测量值。 在这种特殊情况下,程序输入 138 华氏度的温度测量值并计算出 58.89 摄氏度的等效温度: 以及一个专用变量(X),用于存储减法和除法“框”之间的中间计算。 尽管 IEC 61131-3 标准中未指定,但许多可编程逻辑控制器支持梯形图数学指令,允许直接输入任意方程。 例如,Rockwell (Allen-Bradley) Logix5000 编程具有“计算”(CPT) 功能,该功能允许在单个指令中计算任何类型的表达式,而不是使用多个专用数学指令,例如“加”、“减” ,“ ETC。 与任何需要重要计算的应用程序使用专用数学指令相比,通用数学指令大大缩短了梯形图程序的长度。 例如,在 Logix5000 编程中实现的相同华氏温度到摄氏度温度转换程序仅需要单个数学指令,并且无需声明中间变量:
  20. leigehong

    PLC 数据比较指令

    正如我们在计数器和定时器中看到的那样,一些 PLC 指令生成除简单布尔(开/关)信号之外的数字值。 计数器具有当前值 (CV) 寄存器,定时器具有经过时间 (ET) 寄存器,这两个寄存器通常都是整数值。 许多其他 PLC 指令旨在接收和操作非布尔值,例如这些指令,以执行有用的控制功能。 IEC 61131-3 标准指定了各种数据比较指令,用于比较两个非布尔值并生成布尔输出。 PLC 数据比较指令 基本比较运算“小于”(<)、“大于”(>)、“小于等于”(≤)、“大于等于”(≥)、“等于”(=) ,“不等于”(6=) 可以在 IEC 标准中作为一系列“框”指令找到: 只要评估的比较函数为“真”且使能输入 (EN) 处于活动状态,每个指令“框”的 Q 输出就会激活。 如果使能输入保持有效但比较功能为假,则 Q 输出将停用。 如果使能输入取消激活,Q 输出将保留其最后的状态。 比较功能的一个实际应用是所谓的交流电机控制,其中监控两个冗余电机的运行时间,PLC 根据哪个电机运行最少来确定接下来打开哪个电机: 在此程序中,两个保持性接通延迟定时器跟踪每个电动机的总运行时间,并将运行时间值存储在 PLC 内存中的两个寄存器中: 电机 A 运行时间和电机 B 运行时间。 这两个整数值被输入到“大于”指令框进行比较。 如果电机 A 的运行时间比电机 B 长,则下次按下“启动”开关时,将启动电机 B。 如果电机 A 的运行时间少于电机 B 或与电机 B 相同(蓝色突出显示的状态指示所示的情况),则电机 A 将启动。 两个串联的虚拟触点 OUT 电机 A 和 OUT 电机 B 确保在两个电机都停止之前不会对电机运行时间进行比较。 如果不断地进行比较,可能会出现这样的情况:如果有人碰巧在一台电机已经运行的情况下按下了启动按钮,那么两台电机都会启动。
  21. leigehong

    PLC 计数器指令

    计数器是一条 PLC 指令,当一位从 0 到 1(“假”到“真”)转换时,它会递增(向上计数)或递减(向下计数)整数值。 计数器指令分为三种基本类型: 向上计数器, 递减计数器,以及 加/减计数器。 “向上”和“向下”计数器指令都有用于触发计数的单个输入,而“向上/向下”计数器有两个触发输入:一个使计数器递增,一个使计数器递减。 PLC计数器指令 为了说明计数器指令的使用,我们将分析一个基于 PLC 的系统,该系统旨在对通过传送带的物体进行计数: 在该系统中,连续(不间断)的光束使光传感器关闭其输出触点,为离散通道 IN4 供电。 当传送带上的物体中断从光源到传感器的光束时,传感器的触点打开,中断输入 IN4 的电源。 连接到激活离散输入 IN5 的按钮开关在按下时将用作计数值的手动“重置”。 连接到离散输出通道之一的指示灯将作为对象计数值何时超过某个预设限制的指示器。 现在我们将分析一个简单的梯形图程序,该程序旨在每次光束中断时递增计数器指令: 这个特定的计数器指令 (CTU) 是一个递增计数器,这意味着它会随着输入到其“CU”输入的每个关闭到打开的转换输入而“向上”计数。 当光束连续时,常闭虚拟触点(IN 传感器对象)通常保持在“打开”状态,因为传感器在光束连续时保持离散输入通道通电。 当光束被传送带上经过的物体打断时,输入通道断电,导致虚拟接触 IN 传感器物体“关闭”并将虚拟电源发送到计数器指令的“CU”输入。 当物体的前缘破坏光束时,计数器就会增加。 计数器指令盒的第二个输入(“R”)是复位输入,每当按下复位按钮时,都会从触点 IN 开关复位接收虚拟电源。 如果该输入被激活,计数器立即将其当前值 (CV) 重置为零。 状态指示在此梯形图程序中显示,计数器的预设值 (PV) 为 25,计数器的当前值 (CV) 为 0,以蓝色突出显示。 预设值是在系统投入使用之前编程到计数器指令中的东西,它作为激活计数器输出(Q)的阈值,在这种情况下打开计数指示灯(OUT计数达到线圈)。 根据 IEC 61131-3 编程标准,只要当前值等于或大于预设值,该计数器输出就应激活(如果 CV ≥ PV,则 Q 激活)。 这是传送带上三十个物体经过传感器后同一程序的状态。 可以看到,计数器的当前值已增加到 30,超过预设值并激活离散量输出: 如果我们不关心保持超过 25 个物体的准确总数,而只是希望程序指示 25 个物体何时经过。 我们还可以使用预设为 25 值的递减计数器指令,当计数达到零时,该指令会打开输出线圈: 此处,激活时,“加载”输入会导致计数器的当前值等于预设值 (25)。 随着每个传感器脉冲的接收,计数器指令递减。 当它达到零时,Q 输出激活。 该对象计数系统的任一版本都存在一个潜在问题,即 PLC 无法区分传送带上的正向运动和反向运动。 例如,如果传送带方向发生逆转,当物体在传送带上退回时,传感器将继续对之前(向前)经过的物体进行计数。 这将是一个问题,因为系统会“认为”沿着传送带传递的物体比实际多(表明产量更大)。 解决此问题的一种方法是使用既可以递增(向上计数)又可以递减(向下计数)的可逆计数器,并为该计数器配备两个能够确定行进方向的光束传感器。 如果两束光束彼此平行,并且比沿传送带通过的最窄物体的宽度更近,我们将有足够的信息来确定物体行进的方向: 这称为正交信号定时,因为两个脉冲波形的相位相差大约 90 度(四分之一周期)。 我们可以使用这两个相移信号来递增或递减向上/向下计数器指令,具体取决于哪个脉冲超前和哪个脉冲滞后。 此处显示了设计用于解释正交脉冲信号的梯形图 PLC 程序,该程序利用了负过渡触点以及标准触点: 仅当传感器 A 已处于断电状态(即光束 A 在 B 之前中断)时,计数器才会在传感器 B 断电时递增(向上计数)。 仅当传感器 B 已处于断电状态(即光束 B 在 A 之前中断)时,计数器才会在传感器 A 断电时递减(递减计数)。 请注意,向上/向下计数器有一个“复位”(R) 输入和一个“加载”输入(“LD”) 以强制当前值。 激活复位输入会强制计数器的当前值 (CV) 为零,就像我们在“向上”计数器指令中看到的那样。 然后激活负载输入将计数器的当前值强制为预设值(PV),就像我们在“向下”计数器指令中看到的那样。 对于向上/向下计数器,有两个 Q 输出:QU(输出向上)指示当前值何时等于或大于预设值,QD(输出向下)指示当前值何时 值等于或小于零。 请注意显示的每个计数器的当前值 (CV) 如何与其自己的标签名称相关联,在本例中是计数的部件。 计数器当前值 (CV) 的整数是 PLC 内存中的一个变量,就像 IN 传感器 A 和 IN 开关复位等布尔值一样,并且可以与标签名称或符号地址相关联。 这允许 PLC 程序中的其他指令从该内存位置读取(有时还写入!)值。
  22. leigehong

    PLC 定时器指令

    定时器是一条 PLC 指令,用于测量事件发生后经过的时间量。 定时器指令有两种基本类型:接通延迟定时器和断开延迟定时器。 “接通延迟”和“断开延迟”定时器指令都有触发定时功能的单个输入。 仅当输入已激活最短时间时,“接通延迟”定时器才会激活输出。 PLC定时器指令 以这个 PLC 程序为例,该程序旨在在启动传送带之前发出声音警报。 要启动传送带电机,操作员必须按住“启动”按钮10秒钟,在此期间警报器响起,警告人们离开即将启动的传送带。 只有在 10 秒启动延迟之后,电机才会真正启动(并锁定“开启”): 与“向上”计数器类似,接通延迟定时器的经过时间 (ET) 值每秒递增一次,直到达到预设时间 (PT),此时其输出 (Q) 激活。 在此程序中,预设时间值为 10 秒,这意味着按下“Start”开关 10 秒后,Q 输出才会激活。 警报器输出不是由定时器激活的,当按下“启动”按钮时,警报器输出立即通电。 关于这个特定定时器操作的一个重要细节是它是非保持性的。 这意味着当输入停用时,定时器指令不应保留其经过的时间值。 相反,每次输入停用时,经过的时间值应重置为零。 这确保了当操作员松开“开始”按钮时计时器会自行重置。 相比之下,即使输入被停用,保持性接通延迟定时器也会保持其经过的时间值。 这对于保持某些事件的“运行总”时间非常有用。 大多数 PLC 提供保持和非保持版本的接通延迟定时器指令,以便程序员可以为任何特定应用选择正确形式的接通延迟定时器。 然而,IEC 61131-3 编程标准解决保持定时器与非保持定时器问题的方式略有不同。 根据 IEC 61131-3 标准,定时器指令可通过附加使能输入 (EN) 来指定,这会导致定时器指令在激活时以非保持性方式运行,在取消激活时以保持性方式运行。 使能 (EN) 输入的一般概念是,只要使能输入处于活动状态,指令就会“正常”运行(在这种情况下,根据 IEC 61131-3 标准,非保持性定时操作被视为“正常”) ,但只要使能输入停用,指令就会“冻结”所有执行。 即使输入信号停用,这种操作“冻结”也会保留当前时间 (CT) 值。 例如,如果我们希望在输送机控制系统中添加一个保持定时器来记录输送机电机的总运行时间,我们可以使用“启用”的 IEC 61131-3 定时器指令来实现,如下所示: 当电机的接触器位(OUT 接触器)处于活动状态时,定时器将启用并允许计时。 然而,当该位停用(变为“假”)时,定时器指令作为一个整体被禁用,导致其“冻结”并保留其当前时间(CT)值(注1)。 这使得电机能够启动和停止,并且计时器保持电机总运行时间的计数。 注 1:定时器指令上的“使能输出”(ENO) 信号用于指示指令的状态:当使能输入 (EN) 激活时,该信号激活;当使能输入去激活或指令生成一个 错误条件(由 PLC 制造商的内部编程确定)。 ENO 输出信号在此特定程序中没有任何用处,但如果程序的其他梯级需要“了解”运行时计时器的状态,则可以使用该信号。 如果我们希望让操作员能够手动将总运行时间值重置为零,我们可以将一个附加开关硬连线到 PLC 的离散输入卡,并向程序添加“重置”触点,如下所示: 每当按下“复位”开关时,定时器就会启用 (EN),但定时输入 (IN) 会被禁用,从而强制定时器(非保持性)将其当前时间 (CT) 值复位为零。 PLC 定时器指令的另一种主要类型是断开延迟定时器。 该定时器指令与接通延迟类型的不同之处在于,定时器功能在指令被停用时立即开始,而不是在指令被激活时开始。 关闭延迟定时器的一个应用是大型工业发动机的冷却风扇电机控制。 在该系统中,一旦检测到发动机正在旋转,PLC就会启动电动冷却风扇,并在发动机关闭后保持该风扇运行两分钟以散发余热: 当该定时器指令的输入(IN)被激活时,输出(Q)立即激活(完全没有时间延迟)以打开冷却风扇电机接触器。 一旦发动机开始旋转(由连接到 PLC 离散输入的速度开关检测到),就会为发动机提供冷却。 当发动机停止旋转时,速度开关返回其常开位置,停用计时器的输入信号,从而启动时序。 当定时器从 0 秒计数到 120 秒时,Q 输出保持活动状态。 一旦达到 120 秒,输出就会停用(关闭冷却风扇电机),并且经过的时间值将保持在 120 秒,直到输入重新激活,此时它会重置为零。 以下时序图对接通延迟和断开延迟定时器进行了比较和对比: 虽然在几乎每个 PLC 制造商和型号的指令集中都可以找到以保持性和非保持性形式提供的接通延迟 PLC 指令,但发现保持性断开延迟定时器指令几乎是闻所未闻的。 通常,断开延迟定时器只是非保持性的(注 2)。 注 2:IEC 61131-3 编程标准中规定的使能 (EN) 输入信号使保持性断开延迟定时器成为可能(通过停用使能输入,同时保持“IN”输入处于非活动状态),但请注意 请注意,大多数定时器的 PLC 实现没有单独的 EN 和 IN 输入。 这意味着(对于大多数 PLC 定时器指令)可用于激活定时器的唯一输入是“IN”输入,在这种情况下,不可能创建保持性关闭延迟定时器(因为此类定时器的经过时间值将立即重新设置)。 -每次输入重新激活时设置为零)。
  23. leigehong

    PLC 编程语言的五种类型

    尽管似乎每种 PLC 型号都有其独特的编程标准,但确实存在大多数 PLC 制造商至少尝试遵守的控制器编程国际标准。 这是 IEC 61131-3 标准,它将成为标准 令人欣慰的是,尽管不同制造商以及不同型号的 PLC 编程细节有所不同,但基本原理基本相同。 不同通用编程语言(例如 C/C++、BASIC、FORTRAN、Pascal、Java、Ada 等)之间存在的差异远大于不同 PLC 支持的编程语言之间的差异,这一事实并不妨碍计算机程序员 “多语言”。 我亲自为超过六家不同的 PLC 制造商(Allen-Bradley、Siemens、Square D、Koyo、Fanuc、Moore Products APACS 和 QUADLOG 以及 Modicon)编写和/或分析过程序,其中大部分都有多种 PLC 型号 这些品牌,我可以告诉你,编程约定的差异在很大程度上是微不足道的。 在学习了如何对一种型号的 PLC 进行编程之后,就很容易适应对其他品牌和型号的 PLC 进行编程。 PLC 编程语言 IEC 61131-3 标准为工业控制器指定了五种不同形式的编程语言: 梯形图 (LD) 结构化文本 (ST) 指令表(IL) 功能框图 (FBD) 顺序功能图 (SFC) 并非所有可编程逻辑控制器都支持所有五种语言类型,但几乎所有可编程逻辑控制器都支持梯形图(LD),这将是本书的主要重点。 许多工业设备的编程语言都受到设计的限制。 原因之一是简单性:任何结构足够简单,对于没有正式计算机编程知识的人来说都可以理解的编程语言,其功能都会受到限制。 编程限制的另一个原因是安全性:编程语言越灵活和无限制,编程时就越有可能无意中产生复杂的“运行时”错误。 ISA 安全标准 84 将工业编程语言分类为固定编程语言 (FPL)、有限可变语言 (LVL) 或完全可变语言 (FVL)。 梯形图和功能块图编程都被认为是“有限可变性”语言,而指令表(以及传统计算机编程语言,如 C/C++、FORTRAN、BASIC 等)被认为是“完全可变性”语言,具有所有 随之而来的复杂错误的可能性。
  24. leigehong

    PLC 梯形图逻辑的误区

    也许学习 PLC 编程时需要掌握的最重要但又难以捉摸的概念是 PLC I/O 点的电气状态与编程中变量和其他“元素”的状态之间的关系。 对于梯形图 (LD) 编程尤其如此,其中程序本身类似于电气图。 在连接到 PLC 的开关、接触器和其他电气设备的“真实”世界与由虚拟触点和继电器“线圈”组成的 PLC 程序的“想象”世界之间建立心理联系是最基本的。 检查梯形图 PLC 程序时应记住的第一个基本规则是,程序中显示的每个虚拟触点在其各自位中读取“1”状态时都会启动,而在读取“0”状态时将处于静止状态 状态在其各自的位(在 PLC 的存储器中)。 如果该触点是常开(NO)型,则该位为 0 时打开,该位为 1 时闭合。如果该触点是常闭(NC)型,则该位为 0 时闭合 当该位为 1 时打开。 0 位状态使触点处于“正常”(静止)状态,而 1 位状态则驱动触点,迫使其进入非正常(驱动)状态。 检查梯形图 PLC 程序时要记住的另一条规则是,编程软件提供颜色突出显示(注 1)来显示每个程序元素的虚拟状态:彩色触点闭合,而无色触点打开。 虽然“斜线”符号的存在或不存在标志着触点的正常状态,但 PLC 编程软件显示的实时颜色突出显示实时显示元件的“导电”状态。 注 1:应该注意的是,在某些情况下,编程软件将无法正确为触点着色,特别是如果它们的状态变化太快而软件通信链路无法跟上,和/或如果位的状态变化多次 程序一次扫描内的次数。 然而,对于简单的程序和情况,这条规则是正确的,并且对初学者有很大帮助,因为他们了解现实世界条件与 PLC“虚拟”世界中条件之间的关系。 PLC 梯形图逻辑的误区 下表显示了 PLC 梯形图程序中的两种类型的触点如何响应位状态,并使用红色表示每个触点的虚拟导电性: 正如压力开关的触点在高压条件下动作,液位开关的触点在高液位条件下动作,温度开关的触点在高温条件下动作一样,PLC 的虚拟触点在高电平条件下动作。 位条件 (1)。 在任何开关的情况下,启动状态与其正常(静止)状态相反。 下面的简化图(该图中所示的电气接线不完整,为了简单起见,“公共”端子未连接。)显示了一个小型 PLC,其两个离散输入通道通电,导致这两个位具有“1 ” 状态。 编程编辑器软件显示屏中以颜色突出显示的触点显示了在各种状态下寻址到这些输入位的触点集合(彩色 = 闭合;无色 = 打开)。 如您所见,寻址到“设置”位 (1) 的每个触点都处于激活状态,而寻址到“清除”位 (0) 的每个触点都处于正常状态: 请记住,彩色触点是闭合触点。 显示为彩色的触点要么是具有“0”位状态的常闭触点,要么是具有“1”位状态的常开触点。 位状态和触点类型(NO 与 NC)的组合决定虚拟触点在任何给定时间是打开(未着色)还是关闭(着色)。 相应地,它是彩色突出显示和虚拟触点类型的组合,可指示特定 PLC 输入在任何给定时间的真实通电状态。 学生/工程师理解 PLC 梯形图程序的主要问题是他们过于简化并试图直接将连接到 PLC 的现实世界开关与 PLC 程序内各自的触点指令相关联。 学生/工程师错误地认为连接到 PLC 的真实开关和 PLC 程序内相应的虚拟开关触点是同一个,但事实并非如此。 相反,现实世界的开关将电力发送到 PLC 输入,进而控制编程到 PLC 中的虚拟触点的状态。 具体来说,我发现学生/工程师经常陷入以下误解: 错误地认为触点指令类型(NO 与 NC)需要与其关联的实际开关相匹配 错误地认为触点指令的颜色突出显示相当于其关联的真实 PLC 输入的电气状态 错误地认为闭合的现实世界开关一定会导致实时 PLC 程序中的闭合触点指令 为了澄清这一点,在解释梯形图 PLC 程序中的触点指令时,应牢记以下基本规则: 当输入通道上电时,PLC 存储器中的每个输入位将为“1”;当输入通道未上电时,PLC 存储器中的每个输入位将为“0” 程序中显示的每个虚拟触点在其各自的位中读取“1”状态时启动,在其各自的位中读取“0”状态时处于静止状态 彩色触点闭合(传递 PLC 程序中的虚拟电源),而非彩色触点打开(阻止 PLC 程序中的虚拟电源) 在尝试理解 PLC 梯形图程序时,这些规则的重要性怎么强调都不为过。 事实真相是现实世界的开关和接触指令状态之间存在因果链,而不是直接等价。 现实世界中的开关控制电力是否到达 PLC 输入通道,进而控制输入寄存器位是“1”还是“0”,进而控制触点指令是否动作或处于闭合状态。 休息。 因此,PLC 程序内的虚拟触点由相应的现实世界开关控制,而不是像新手通常认为的那样简单地与现实世界的对应开关相同。 遵循这些规则,我们看到常开(NO)触点指令将模仿现实世界开关的作用,而常闭(NC)触点指令将与现实世界对应的指令相反。 梯形图 PLC 程序中线圈指令的颜色突出显示遵循类似的规则。 当线圈之前的所有触点指令都闭合(彩色)时,线圈将“接通”(彩色)。 彩色线圈将“1”写入存储器中的相应位,而无色线圈指令将“0”写入存储器中的相应位。 如果这些位与 PLC 上的实际离散输出通道相关联,则它们的状态将控制与这些通道电气连接的设备的实际通电。 为了进一步阐明这些基本概念,我们将检查一个简单的 PLC 系统的运行情况,该系统旨在在过程容器遇到高流体压力时为警告灯通电。 PLC 的任务是,如果过程容器压力超过 270 PSI,则使警告灯通电;即使压力低于 270 PSI 的跳闸点,也使警告灯保持通电状态。 这样,操作员就会收到过去和当前工艺容器超压事件的警报。 120 伏交流“线路”电源(L1 和 L2)为 PLC 运行提供电能,以及输入开关的信号电位和警告灯的电源。 两个开关连接到该 PLC 的输入:一个常开按钮开关充当警报复位(按下该开关“解锁”警报灯),以及一个常开压力开关充当高过程容器压力的传感元件: 复位按钮连接到 PLC 的离散输入 X1,而压力开关连接到离散输入 X4。 警告灯连接至离散量输出 Y5。 每个 I/O 端子旁边的红色指示灯 LED 直观地指示 I/O 点的电气状态,而红色阴影突出显示 PLC 程序中“触点”和“线圈”的虚拟电源(注2)状态, 显示在通过编程电缆连接到 PLC 的个人计算机的屏幕上。 如果没有人按下复位按钮,该开关将处于正常状态,对于“常开”开关来说,该状态是打开的。 压力开关也是如此:当过程压力低于 270 PSI 的跳变点时,压力开关也将处于正常状态,对于“常开”开关来说,该状态是打开的。 由于此时两个开关均未导电,因此离散输入 X1 和 X4 都不会通电。 这意味着 PLC 程序内的“虚拟”触点同样会处于其自身的正常状态。 因此,绘制为常开的任何虚拟触点都将打开(不传递虚拟电源),绘制为常闭的任何虚拟触点(穿过触点符号的对角线标记)将闭合。 这就是为什么两个常开虚拟触点 X4 和 Y5 没有突出显示,而常闭虚拟触点 X1 有突出显示 – 彩色突出显示代表传递虚拟电源的能力。 注 2:对于 PLC 程序触点,阴影代表虚拟“电导率”。 对于 PLC 程序线圈,阴影表示设置 (1) 位。 如果过程容器承受高压 (> 270 PSI),压力开关将启动,关闭其常开触点。 这将为 PLC 上的输入 X4 通电,从而“闭合”梯形图程序中的虚拟触点 X4。 这会将虚拟电源发送到虚拟“线圈”Y5,虚拟“线圈”Y5 又通过虚拟触点 Y5 锁定自身(注 3),并为实际离散输出 Y5 供电,从而为警告灯供电: 注 3:值得注意的是,引用虚拟触点到输出位(例如触点 Y5)的合法性,而不仅仅是输入位。 PLC 程序中的“虚拟触点”只不过是向 PLC 处理器发出的一条指令,用于读取内存中某个位的状态。 该位是否与物理输入通道、物理输出通道或 PLC 内存中的某个抽象位相关联并不重要。 然而,将虚拟线圈与输入位相关联是错误的,因为线圈指令将位值写入存储器,并且输入位应该仅由其物理输入通道的通电状态控制。 如果现在过程压力降至 270 PSI 以下,压力开关将返回到正常状态(打开),从而使 PLC 上的离散输入 X4 断电。 然而,由于 PLC 程序中的闭锁触点 Y5,输出 Y5 保持打开状态,以使警告灯保持在通电状态: 因此,Y5 触点执行密封功能,即使在高压条件清除后也能保持 Y5 位设置 (1)。 这与硬接线电机启动器电路上的“密封”辅助触点完全相同,其中机电接触器在释放“启动”按钮开关后保持自身通电。 操作员重置警告灯的唯一方法是按下按钮。 这将使 PLC 上的输入 X1 通电,从而打开程序中的虚拟触点 X1(常闭),从而中断虚拟线圈 Y5 的虚拟电源,从而关闭警告灯并解锁虚拟电源。 程序:
  25. leigehong

    初学者多电机控制 PLC 编程实例

    适合初学者使用施耐德电气 EcoStruxure Machine Expert 基本 PLC 软件进行多电机控制的 PLC 编程示例。 请注意,此 PLC 示例适用于有兴趣学习和练习 PLC 练习的工程专业学生。实时工业PLC程序将设计出更多的安全和保护功能。 多电机 PLC 编程实例 为以下应用设计PLC 梯形逻辑。 我们使用三个拨动开关来控制三个电机。 如果开关 1 打开,则电机 I、电机 II 和电机 III 将打开。 如果开关 2 打开,则电机 I 和电机 II 将打开。 如果开关 3 打开,则电机 I、电机 II 和电机 III 将关闭。 数字输入 本示例程序需要以下数字输入 (DI) 。还提到了分配的 PLC DI 地址。 开关1:I0.0 开关2:I0.1 开关3:I0.2 数字输出 本示例程序需要以下数字输出 (DO)。还提到了分配的PLC DO 地址。 电机1:Q0.0 电机2:Q0.1 电机3:Q0.2 多电机控制梯形图 计划说明 对于此应用,我们使用 Ecostruxure Machine Expert Basic v1.2 软件进行编程。 在上面的程序中,我们对开关 1 (I0.0) 使用常开触点,对开关 2 (I0.1) 和开关 3 (I0.2) 使用常闭触点 电机1和电机2的开关1和开关3串联,从而实现与逻辑门。 对于电机3,开关1、开关2和开关3串联,从而实现与逻辑门。 要打开电机 1 和电机 2,开关 1 应打开,开关 3 应关闭。 当开关 1 为 ON,开关 2 和开关 3 为 OFF 时,电机 3 为 ON。 打开开关 3 将关闭所有电机,即电机 1、电机 2 和电机 3 将关闭。 当开关 2 打开时,电机 3 将关闭。 当开关 1 接通时,所有电机都将接通,因为电流也会通过开关 2 和开关 3,因为它们是常闭触点。 如果不关闭开关 1,电机 1 和电机 2 仍将保持开启状态,但当开关 2 开启时,电机 3 将关闭。打开开关 2 时,它不会将电流传递到电机 3。 当开关 3 打开时,即使其他开关打开,所有电机也会关闭。 当开关 1 为 ON 时 当开关 1 处于真实状态时,电流流过它。在错误状态下,开关 3 和开关 4 还将电流传递至输出。 当开关 2 为 ON 时 当开关2接通时,电流不流过。在真实状态下,常闭触点会断开电路。 当开关 3 打开时 开关 3 是常闭触点。当打开时,它不会允许电流通过。结果,没有一个输出会打开。
Apply for friendship links:WhatsApp or E-mail: admin@plchmis.com
×
×
  • Create New...