Jump to content

caixiaofeng

Staff group
  • Content Count

    56
  • Joined

  • Last visited

Everything posted by caixiaofeng

  1. PLC 之间可以通过多种方式进行通信和对话,在本文中我们将讨论其中一种方法,即如何使用 i-device 功能在 PLC 之间建立西门子通信,以进行 PLC 到 PLC 的数据传输。 什么是智能设备功能? I-Device 功能可用于非常轻松地在两个 PLC 之间交换数据。 智能设备就是用作 IO 设备的 PLC。 这意味着 PLC 将充当 IO 模块,为其他 PLC 提供输入并接收输出。 智能设备功能使 PROFINET 不仅可以与 IO 控制器等下级设备进行通信,还可以作为 IO 设备与其他上级或中央控制器进行 IO 通信。 西门子 PLC 之间的通信 大多数 S7 系列 PLC 支持 I-Device 功能,但某些控制器不支持,具体取决于固件版本,例如: S7-300(固件版本 V3.2 及以上) S7-1200(固件版本 V4 及以上) 您可以通过进入 PLC PROFINET 接口属性并检查 “操作模式” 选项来简单地了解您的控制器是否具有智能设备功能。 见图 1a 和 1b。 图 1a. PLC 不支持智能设备 从图中我们看不到 “运行模式” 选项,因此我们知道 PLC 不支持智能设备功能。 图 1b. PLC 支持智能设备功能 从图中可以看出,该 PLC 支持智能设备功能。 具有 “智能 IO 设备” 配置的 PLC 称为智能设备。 I-Device 就像标准 IO 设备一样,需要像标准 IO 设备一样进行处理。 这意味着智能设备还连接到更高级别的 IO 控制器。 因此,智能设备将充当 IO 模块,但它仍然是 PLC,因此如果您愿意,它仍然充当控制器。 数据交换概念 I-Device 方法的指导原则是使用 CPU 中已知的过程映像。 从更高级别的 IO 控制器的角度来看,与智能设备的通信类似于与分布式 IO 的通信,在输入和输出处进行通常的读写过程。 从智能设备的角度来看,到更高级别 IO 控制器的数据传输也类似于通过输入和输出到本地或分配的分布式 IO 的数据传输。 智能设备配置选项 配置有两种可能性: 在项目中配置智能设备。 配置在另一个项目中使用的智能设备 为另一个项目组态智能设备时,STEP 7 允许您通过将已组态的智能设备导出到 GSD 文件中来完成此操作。 GSD 文件可以像其他 GSD 文件一样导入到其他项目或其他工程系统中。 这不仅可以实现项目内部的通信,还可以通过经过验证的方式实现跨项目的通信以及不同制造商之间的数据交换。 我们将在另一篇文章中展示这一点。 在本文中,我们将展示同一西门子 PLC 项目中智能设备的配置。 同一 PLC 项目中的智能设备配置 我们假设项目中有两个 PLC,CPU 1516-3 PN/DP 将充当此配置中的控制器,CPU 1214C 将充当智能设备。 首先将两个 PLC 添加到 TIA Portal 项目中,并在它们之间设置 Profinet 连接。 见图2。 图 2. 两台 PLC 之间建立连接。 现在,我们需要将 CPU 1214C PLC 配置为智能设备。 您可以通过转到 Profinet 接口属性并在操作模式选项中单击 IO 设备选项来完成此操作。 见图3。 图 3. 选择 IO 设备。 之后,您需要将智能设备分配给更高级别的控制器,即我们项目中的 CPU 1516-3 PN/DP PLC。 为此,只需从分配的 IO 控制器下拉列表中选择该 PLC。 见图4。 图 4. 将智能设备分配给控制器。 此后,智能设备现已连接并分配给控制器 PLC。 见图5。 图 5. 智能设备被分配给控制器 PLC。 下一步是在智能设备和控制器之间通过所谓的传输区域交换数据。 创建传输区域 传输区域是用于在智能设备和更高级别 IO 控制器之间交换数据的 IO 区域。 转到 “智能设备通信” 部分。 单击 “传输区域” 列的第一个字段。 TIA Portal 将创建一个您可以更改的预定义名称。 从图 6 可以看出。 图 6. 创建传输区域 选择通讯关系类型:目前只能选择 CD。 见图7。 图 7. 选择 CD 通讯选项。 选择 CD 选项后,将创建一个传输区域,并自动创建 IO 控制器和智能设备的地址。 见图 8。 图 8. 创建传输区域。 地址是自动预先分配的,如果需要,您可以根据您的环境调整地址并指定要传输的传输区域的长度一致。 要像以前一样创建另一个传输区域,只需按 “添加新” 即可,见图 9。 图 9.添加新的传输区域。 正如我们之前所说,数据交换基于简单的处理图像概念,这意味着您始终发送输出并接收输入。 另请注意,您在上图中看到的箭头表示智能设备和控制器之间的信息流。 因此,如果我将数据从控制器发送到智能设备,则箭头将从控制器到智能设备,并且将输出控制器的地址,并且将输入智能设备的地址,反之亦然,如您所见 上一张图片。 另请记住,最好将传输区域重命名为正确的指示名称。 见图 10。 图 10. 重命名您的传输区域。 加载 PLC 项目 要加载 PLC 项目数据,请在项目导航中依次选择两个控制器,并将项目加载到相应的模块中。 请注意,由于我们没有实际的硬件设备,因此无法模拟此功能。
  2. 在本文中,我们将讨论两个 PLC 之间通信的另一种方式,无论它们位于同一项目还是两个不同的 PLC 项目中。 在本文中,我们将讨论西门子 PLC 中的 PUT 命令,该命令可用于将数据从一个 PLC 发送或放入第二个 PLC。 什么是 PUT 命令? 一般来说,PUT 命令是 TIA Portal 内置功能块 FB,专门用于 S7 系列 CPU,用于将数据从本地 PLC 传送到远程伙伴 PLC。 使用 PUT 命令时,我将有两个 PLC,我需要将数据从一个称为本地的 PLC 发送到另一个称为伙伴的 PLC。 必须对伙伴 PLC 进行一些配置,以使其能够被其他 PLC 访问。 除了 PLC 之间的 Profinet 连接之外。 我们将创建一个示例项目来展示如何使用 PUT 命令。 西门子 PLC 中的 PUT 命令 我们将假设一个示例项目,其中同一项目中有两个 PLC,PLC_1 将充当本地 PLC,PLC_2 将充当合作伙伴 PLC。 我们想要将一个整数从本地写入伙伴 PLC。 PLC 项目示例 首先,我们创建一个新项目并添加两个 PLC。 见图1。 图1.添加本地和伙伴 PLC。 我现在需要的是配置 PLC_2,即接收数据的 PLC_2,以便能够接收该数据。 PLC_1 将与 PUT 命令一起使用。 我需要做的第一件事是允许 PUT 命令访问将接收数据的 PLC_2。 见图2。 图 2. 允许 PUT 命令访问。 如图所示,我们允许 PUT 命令从 PLC_2 的属性中访问 PLC_2,在保护和安全选项中,单击 “允许远程伙伴通过 PUT/GET 通信进行访问” 现在,我可以使用 PUT 命令将来自任何远程伙伴的数据放入 PLC_2。 第二件事是在 PLC_2 中为要放入其中的数据准备一个空间或内存。 我们假设我们想要将一个整数值放入该 PLC 中,因此我将根据该值准备一个内存。 见图3。 图3. 准备接收数据的区域。 就是这样; 这是您需要从 PLC_2 侧准备的完整配置,以便能够通过 PUT 命令接收数据。 接下来,我们设置从 PLC_1 发送的数据。 我们将创建一个数据块来保存发送到 PLC_2 的数据,在该数据块内,我们将定义一个要放入 PLC_2 的整数标签。 见图4。 图4. 创建数据块来保存发送的数据。 我们定义了一个要发送到 PLC_2 的整数标签 “SendMeToPLC_2”。 见图5。 图5.定义要发送的数据。 请注意,对于 PLC_1,我们不需要允许使用 PUT 命令选项进行访问。 我们在将接收数据的 PLC 中激活此功能,而不是在将发送数据的 PLC 中激活此功能。 现在,让我们在编程中使用 PUT 命令,在主 OB1 中我们将拖放 PUT 命令 FB。 见图6。 图6. 将PUT命令添加到OB1中。 需要注意的是,PUT命令是在S7通讯文件夹中找到的,因为它是S7系列PLC的专有功能,因为它涉及到安全问题。 请记住,在图 2 中,当我们允许使用 PUT 命令时,它位于 PLC 属性的安全和保护属性中,因为它与 PLC 安全和保护相关。 PUT 命令本质上是一个功能块,因此当将其添加到我的逻辑中时,我将被要求创建一个数据实例。 见图7。 图 7. 为 PUT 命令创建数据实例。 按“确定”后,PUT 命令现已添加到您的 PLC 逻辑中。 见图8。 图 8. PUT 命令 添加 PUT 命令后,现在我们需要对其进行配置,我们为 PUT 命令配置两个参数。 PLC 之间的连接 将从 PLC_1 PUT 到 PLC_2 的块 要转到 PUT 命令的配置视图,请按最后一张图片中显示的蓝色小图标。 在连接参数中,您将设置本地 (PLC_1) 和伙伴 (PLC_2) PLC 之间的通信。 见图9。 图9. 连接参数。 如您所见,本地 PLC 设置为 PLC_1,这是使用 PUT 命令的 PLC。 伙伴端仍然是空的,这就是我们应该分配 PLC_2 的地方。 如果您单击下拉列表,您将有两个合作伙伴选项。 见图10。 图10. 合作伙伴连接 伙伴是接收数据的 PLC; 您会发现有两个选项可供选择: PLC_2 [CPU 1516-3 PN/DP] 未指定 因为两个 PLC 都在同一个项目中,所以当我选择 PLC_2 选项时,所有连接参数都会自动填写。见图11。 图 11. PLC_2 作为伙伴 另一方面,如果合作伙伴PLC来自不同的项目,那么我将选择“未指定”选项,在这种情况下,我将必须填写一些数据,例如合作伙伴PLC的IP地址。 见图12。 图12. 未指定的合作伙伴 如您所见,在这种情况下,我需要填写一些数据,例如 IP 地址,还需要为 PLC_1 添加子网。 要为 PLC_1 添加子网,我们将转到 PLC_1 的 Profinet 属性并选择添加子网选项。 见图13。 图 13. 添加子网。 完成后,连接参数配置就完成了。 见图 14。 对于您发出的每个 PUT 命令,连接名称应该是唯一的,TIA Portal 将自动为其指定一个新名称,但您最好为项目中的连接分配一个更合适的名称。 我们这里保持原样。 图14.连接参数完成 PUT 命令配置的下一步是块参数设置。 在这些参数中,我们指定 PUT 命令的触发器,这意味着什么信号将启动 PUT 命令操作。 以及将从 PLC_1 放入哪些数据以及将其存储在 PLC_2 中的何处。 见图15。 图 15. 模块参数设置 对于开始请求 (REQ) 信号,我们定义了一个输入标签 (SendData %I0.0)。 正如我们之前提到的,我们已经定义了将发送到 PLC_2 的标签以及它将在 PLC 内存储的位置。 完成块参数配置后,PUT 命令的配置也就结束了。 见图16。 图 16. 调用 PUT 命令 所以,综上所述,当 REQ 信号被触发时,SD_1 中的数据将被发送到 ADDR_1。
  3. 在上一篇文章中,我们讨论了 PUT 命令以及如何使用它在同一项目或两个不同项目中的两个 PLC 之间进行通信。 在本文中,我们将讨论用于西门子 PLC 到 PLC 通信项目中用于数据交换的 GET 命令。 GET 命令是什么? 就像 put 命令一样,GET 命令是 TIA Portal 内置功能块 FB,专门用于 S7 系列 CPU,用于将数据从远程伙伴 PLC 获取到本地 PLC。 与 PUT 命令相反,GET 命令不是将数据从 PLC_1 放入 PLC_2,而是将数据从 PLC_2 获取到 PLC_1。 当使用 GET 命令时,我有两个 PLC,我需要从一个称为“伙伴”的 PLC 到另一个称为“本地”的 PLC 获取数据。 本地 PLC 是对 GET 命令进行编程的地方。 除了两个 PLC 之间的 Profinet 连接之外。 必须对伙伴 PLC 进行一些配置,以使其能够被其他 PLC 访问。 我们将创建一个示例项目来展示如何使用 GET 命令。 西门子 PLC 到 PLC 通信项目 我们将假设一个示例项目,其中同一项目中有两个 PLC,PLC_1 将充当本地 PLC,PLC_2 将充当合作伙伴 PLC。 为了创建需要使用 GET 命令的情况,我们假设我们想要从伙伴 PLC_2 读取/获取整数到本地 PLC_1。 首先,我们创建一个新项目并添加两个 PLC。 见图1。 图1.新建一个工程,添加两台PLC。 现在,我们需要配置伙伴 PLC_2 以启用来自 PLC_1 的 GET 访问。 我们还需要准备将从 PLC_2 移至 PLC_1 的数据。 首先,我们需要允许 GET 命令访问将提供数据的 PLC_2。 见图2。 图 2. 允许 GET 命令访问。 从图中可以看到,我们允许GET命令从PLC_2的属性中访问PLC_2,在保护和安全选项中,单击 “允许远程合作伙伴通过 PUT/GET 通信进行访问” 现在,我可以使用 GET 命令从伙伴 PLC_2 读取/获取数据。 接下来,我们要创建将移动到 PLC_1 的数据,我们假设 PLC_1 要从 PLC_2 获取整数。 我们将定义一个名为 “SendDataToPLC_1” 的整数标签,该整数标签将从 PLC_2 读取到 PLC_1。 见图3。 图3. 定义要移动到 PLC_1 的数据 就是这样; 这是您需要从 PLC_2 侧准备的完整配置,以便能够通过 GET 命令接收数据。 现在,我们转到 PLC_1,在 PLC_1 中,我们要创建使用 GET 命令从 PLC_2 读取数据的逻辑。 正如我们在上一篇文章中所做的那样,我们只需将 GET 命令拖放到主 OB1 中即可。 见图4。 图4.拖放GET命令 需要注意的是,GET命令位于S7通讯文件夹中,因为它是S7系列PLC的专有功能,因为它涉及到安全问题。 请记住,在图 2 中,当我们允许使用 GET 命令时,它位于 PLC 属性的安全和保护属性中,因为它与 PLC 安全和保护相关。 当您将 GET 命令拖放到您的系统中时,您将被要求创建一个数据块实例,因为 GET 命令本质上是一个功能块 FB。 见图5。 图 5. 为 GET 命令创建数据实例。 现在,我们将 GET 命令添加到逻辑中,我们需要开始配置 GET 块,就像之前使用 put 命令所做的那样。 要打开 GET 命令的配置视图,请按块顶部的蓝色小图标。 见图6。 图 6. 打开配置视图。 我们有两个主要参数需要配置,连接参数和块参数。 见图7。 图 7. GET 块配置。 从图中可以看到,Local PLC就是调用GET命令的PLC。 虽然合作伙伴 PLC 是提供数据的 PLC,但它也是我们允许 GET 访问的同一 PLC。 在我们的项目中,合作伙伴 PLC 是 PLC_2。 从图中还可以看到,伙伴是空的,我们必须选择 PLC。 见图8。 图8. 合作伙伴列表中的不同选项 正如您所看到的,我们为合作伙伴 PLC 有两种不同的选项可供选择。 未指定是指当 PLC 属于不同的 TIA Portal 项目时,如果 PLC 属于同一 TIA Portal 项目,则您将在列表中找到其他 PLC。 当您选择PLC_2选项时,因为我们的PLC在同一个项目中,连接配置将自动填写。见图9。 图 9. PLC_2 作为伙伴 因为两个PLC都在同一个项目中,所以当我选择PLC_2选项时,所有连接参数都会自动填写。 另一方面,如果合作伙伴PLC来自不同的项目,那么我将选择“未指定”选项,在这种情况下,我将必须填写一些数据,例如合作伙伴PLC IP地址。 见图10。 图 10. 未指定的合作伙伴 PLC。 如您所见,当伙伴为“Unspecified”时,您将需要手动添加一些信息,例如伙伴PLC IP地址。 还可以看到我们需要给本地PLC_1添加一个子网。 为此,您只需转到 PLC_1 的 Profinet 属性并选择添加新子网。 见图11。 图 11. 为 PLC_1 添加子网 在PLC_1中添加新的子网后,连接参数配置就完成了。 见图12。 图12.连接参数完成。 我们需要处理的下一个配置是块参数。 在块参数中,我们定义将在两个 PLC 之间移动的数据以及允许开始执行 GET 块的触发信号。 见图13。 图 13. 块参数。 如您所见,我们需要定义 GET 块的触发信号,还需要定义将从 PLC_2(读取区域 ADDR_1)移动哪些数据以及这些数据将移至何处(存储区域 RD_1)。 我们已经定义了 ADDR_1,其前面是我们在 PLC_2 中定义的 SendDataToPLC_1 整数标记。 现在,我们将为该整数标签和触发信号定义存储区域。 见图 14。 图 14. 定义触发信号和存储区域 定义触发信号 ADDR_1 和 RD_1 后,我们将这些参数填充到块配置中。 见图15。 图15.填写区块参数 现在,GET 块的配置已完成,您可以看到该块现在已准备好下载和运行。 见图16。 图 16. GET 块 GET 块现已配置完毕,一旦触发信号激活,该块将从 PLC_2 读取 ADDR_1 并将其写入 PLC_1 中的 RD_1。
  4. 在之前的文章中,我们开始讨论两个或多个 PLC 之间通信的不同方式,到目前为止,我们讨论了智能设备功能以及西门子 PLC 专用的 PUT 和 GET 命令。 西门子 PLC 与其他 PLC 通讯 在本文中,我们将讨论另一种将两个 PLC 连接在一起的方法,这种方法比我们之前讨论的 PUT 和 GET 命令更具优势,因为与 S7 系列独有的 PUT/GET 命令相反。 这种新方法是一种开放的用户通信,这意味着我们可以使用它在西门子 PLC 和任何其他品牌的 PLC 之间进行通信,甚至不需要是两个 PLC,这种方法可以在 PLC 和任何其他可以理解的设备之间进行通信 TCP 网络协议如 PC、服务器、打印机等 在本文中,我们将展示如何使用 TCON 和 TDISCON 块在两个 PLC 之间建立通信,在下一篇文章中,我们将展示如何在建立连接后在 PLC 之间移动数据。 开放用户通信块 TCON 和 TDISCON 我们使用 TCON 块在两个 PLC 之间建立通信连接。 连接建立后,PLC 将自动维护。 通信双方都调用 TCON 指令来建立通信连接。 这意味着我必须在两个 PLC 中调用 TCON 块,并且我们必须在两个 PLC 中配置该块,正如我们将在示例项目中看到的那样。 在块配置期间,我们将指定哪个伙伴是主动通信端点,哪个是被动通信端点。 这意味着哪个 PLC 将尝试连接,哪个 PLC 将打开通信端口并等待另一个 PLC。 当执行 TDISCON 块或当 CPU 更改为 STOP 模式时,现有连接将终止并删除建立的连接。 要再次建立连接,您需要再次执行 TCON。 使用 TCON 的示例 PLC 项目 正如我们在之前的文章中所解释的,要在两个 PLC 之间建立通信,我们必须建立两件事: PLC 之间的通信。 两个 PLC 之间的数据传输。 在本文中,我们将使用 TCON 块在两个 PLC 之间建立采用 TCP 协议的开放用户通信。 在下一篇文章中,我们将展示如何在连接完成后移动数据。 首先,我们创建一个新项目并添加两个 PLC。 我们将添加 CPU1516-3PN/DP PLC,并将它们命名为 PLC_1 和 PLC_2,目的是在它们之间建立连接。 见图1。 图1.添加 PLC_1 和 PLC_2。 现在,我们只需将 TCON 块添加到 PLC 逻辑中,正如我们之前提到的,我们需要为两个 PLC 调用 TCON,让我们从 PLC_1 开始。 只需拖放 TCON 块即可在打开的用户通信文件夹中找到该块。 见图2。 图2.拖放 TCON 指令 TCON 块本质上是一个功能块,因此当将其添加到我的主 OB1 时,我们将被要求为该块创建一个数据块实例。 创建数据实例并为其指定适当的名称。 见图3。 图3.创建数据实例。 现在,TCON 块已添加到您的逻辑中,我们需要配置该块的连接参数。 只需按块上方的蓝色小配置图标即可。 见图4。 图 4. 打开配置视图 当您按下蓝色图标时,您将打开 TCON 块的配置视图,我们可以在其中设置连接参数。 您会发现它与 PUT 和 GET 命令的连接参数非常相似。 见图5。 图5. TCON 连接参数。 由于我们使用开放式用户通信,TCON 块中的合作伙伴 PLC 选项比 PUT/GET 命令有更多选项。 见图6。 图 6. 合作伙伴 PLC 选项 从图中可以看出,我们有 4 种不同的选择,它们是: PLC_2:如果两个 PLC 位于同一项目中,则此处将显示 PLC_2 广播:这将使网络上的任何设备都可以使用连接 多播:这将与选定的设备(多个设备但不是所有设备)建立连接 未指定:如果 PLC 位于另一个 TIA Portal 项目中。 当选择未指定的选项时,我们会被要求添加 PLC 的 IP 地址,并且还需要添加新的连接数据。 见图7。 图7. 添加新的连接数据 如图所示,要创建新的连接数据,只需单击下拉箭头并按新建即可。 这将创建一个新的连接数据块,并将自动分配给 TCON 块,见图 8。 图8. 连接数据块已创建。 正如您所看到的,连接数据块已创建,现在我需要添加合作伙伴 PLC 的 IP 地址。 我们需要做的另一件事是选择哪个 PLC 将主动建立连接。 这将决定哪个 PLC 将负责建立连接,而另一个 PLC 将仅负责打开连接端口。 见图9。 图 9. 将 PLC_1 指定为主动连接建立。 当我们选择 PLC_1 作为主动连接建立时,PLC_2 将负责打开连接端口,我必须为该端口选择一个值。 它可以是任何值,但在 TIA Portal 中自动分配为 2000,因此我们将保持原样。 见图10。 图 10. 合作伙伴端口。 在上图中可以看到连接参数已经变成绿色,表示所有配置都已完成并接受。 当使用 TCON 在两个 PLC 之间建立连接时,两个 PLC 都必须调用 TCON 指令来建立连接,因此我们现在需要对另一个 PLC_2 执行相同的操作。 将 TCON 块添加到 PLC_2 的主 OB1 中,见图11。 图11. 在 PLC_2 中调用 TCON。 添加 TCON 块后,我们需要像配置 PLC_1 一样配置连接参数。 见图12。 图 12 PLC_2 连接参数 从图中可以看到,我们仍然选择 PLC_1 作为主动建立连接,而 PLC_2 的端口仍然保留为 2000。 两个 PLC 配置的活动连接建立和端口必须相同,否则连接将失败。 至此,两台 PLC 的连接配置完成,见图13。 图 13. 两个 PLC 中的 TCON 块。 从图中我们可以看出,我们还需要一件事,那就是为两个 PLC 定义 REQ。 我们为 PLC_2 创建了AllowConnection,为 PLC_1 创建了 StartConnection。 见图 14。 图 14. 定义 REQ 信号。 现在两个 PLC 之间的连接已经完成,如下: 当 REQ 信号有效时,PLC_1 将尝试与 PLC_2 建立连接,但直到 PLC_2 启用连接功能后才能这样做,并且当 PLC_1 的 TCON 块收到 REQ 信号时才会完成。 PLC_2 的 TCON 的 REQ 信号有效以启用连接(这意味着 PLC_2 将打开端口 2000 等待连接) REQ 信号有效,PLC_1 的 TCON 开始连接(这将允许 PLC_1 通过端口 2000 与 PLC_2 建立连接) 项目模拟 让我们编译我们的项目并开始模拟,看看如何建立连接。 要查看任何 PLC 以及 PLC 之间的连接,可以打开网络视图并打开连接选项卡以查看所有活动的和已建立的连接。 见图15。 图 15.PLC_2 正在等待连接。 当 REQ 为 True 时,PLC_2 将打开连接,您可以看到 STATUS 值为 7002 _ 如果您检查 TCON 块的帮助,状态 7002 表示正在等待连接_。 您还可以从网络视图的图片中看到 PLC_2 正在等待连接。 当 PLC_1 TCON 块的 REQ 为真时,PLC_1 将尝试与 PLC_2 建立连接,并且由于 PLC_2 已打开并等待连接,因此 PLC_1 将能够找到并与 PLC_2 建立连接。 见图16。 图 16. PLC_1 建立连接。 请注意,网络视图中的所有连接现在均呈绿色,表示 PLC_1 和 PLC_2 之间的连接正常且正在进行。 正如我们之前提到的,一旦连接建立并建立,它就会自动维护。 因此,即使 REQ 信号变为假,两个 PLC 之间的连接也将保持。 见图17。 图 17。连接仍在进行中。 但是,如果转动 REQ 信号并不能断开连接,如果我想断开连接,该如何断开呢? 断路块 TDISCON 要断开两个 PLC 之间的连接,我们可以将 PLC 置于 STOP 模式,但这在运行过程中是不实用的。 我们还可以使用断开块或 TDISCON。 要添加 TDISCON 模块,只需将其拖放到您的逻辑中,见图 18。 图 18. 添加 TDISCON 块 正如您所看到的,添加 TDISCON 块将需要一个数据块实例,一旦将该块添加到您的逻辑中,您所需要做的就是分配您需要断开连接的连接 ID,并且您还需要为其分配一个 REQ 信号 启动连接终止。 见图19。 图 19. TDISCON 块。 现在,让我们在另一个 PLC 中添加一个 TDISCON 块,这样我们就能够断开连接。 参见图 20。对于 PLC_1 的 TDISCON 块。 图 20. PLC_1 中的 TDISCON 让我们回到仿真,看看如何使用 TDISCON 模块,见图 21。 图 21. 连接仍处于活动状态。 从图中可以看出,PLC 之间的连接仍然有效,TDISCON 的 REQ 信号仍然为假。 如果 PLC_1 的 REQ 变为 TRUE,连接将被终止,但您会注意到 PLC_2 仍在等待连接,见图 22。 图 22. PLC_1 的 REQ 为真。 当 PLC_2 TDISCON 块的 REQ 为真时,PLC_2 将不再等待连接。 见图23。 图 23. 连接终止。 我们在本文中展示了如何使用 TCON 和 TDISCON 块在两个 PLC 之间建立连接。
  5. 在上一篇文章中,我们讲了如何使用开放用户通信在两个 PLC 之间建立连接,我们使用 TCP 协议在两个 PLC 之间进行连接。 我们在文章中展示了如何使用 TCON 和 TDISCON 等指令来建立此连接。 在 PLC 之间移动数据 在本文中,我们将展示如何开始在上一篇文章连接的 PLC 之间移动数据。 为此,我们将使用 TSEND 和 TRCV 块。 发送数据至 PLC_2 我们将在上一篇文章中创建的项目的基础上进行构建,这意味着我们的项目中已经安装了 TCON 和 TDISCON 块。 我们将通过添加 TSEND 和 TRCV 块来继续我们的项目,以开始在两个 PLC 之间移动数据。 要将数据从 PLC_1 发送到 PLC_2,我们首先创建一个数据块,该数据块将保存我们需要发送到 PLC_2 的所有信息。 见图1。 图 1. 新建一个数据块。 正如我们之前讨论的,更好的做法是为块提供正确的命名,这样就可以轻松直观地弄清楚每个块的用途。 其次,让我们在数据块中添加一些要发送到 PLC_2 的数据。 我们假设我们需要发送三个不同的数据标签。 见图 2。 图 2. 定义一些数据发送到 PLC_2。 为了能够将刚刚创建的数据块发送到 PLC_2,我们还需要做一件事,即确保未选择数据块的优化块访问。 为此,我们需要转到数据块的属性并取消选择该选项。 见图 3 和 4。 图 3. 进入数据块属性。 图 4. 取消选中 “优化块访问” 选项。 确保在使用 TSEND 块之前取消选中此选项,否则它将不起作用。 现在我们已经准备好了要发送到 PLC_2 的数据,让我们实际尝试发送它。 我们将通过使用 TSEND 块来做到这一点。 只需将指令拖放到主 OB1 中即可将其添加到您的逻辑中。 见图 5。 图 5. 添加 TSEND 块。 添加 TSEND 块时,系统会要求您创建一个实例数据块,因为它本质上是一个功能块,再次给它一个适当的名称。见图 6。 图 6. 为 TSEND 创建数据实例。 当 TSEND 块添加到您的逻辑中时,您会发现我们需要进行一些重要的配置。 见图 7。 图 7. TSEND 块。 正如你所看到的,我们需要进行一些配置: REQ 信号允许发送数据。 对于 REQ 信号,我们将定义一个标签 SendData,用于启用数据发送。 我将用来发送数据的连接的 ID,因为我可以有多个连接,所以我需要指定将使用哪个连接。 在上一篇文章中,我们为 PLC_1 和 PLC_2 之间的连接定义了 ID 1,因此我们将ID设置为 1。 我需要发送的数据。 我们已经创建了一个数据块,其中包含我需要发送的所有信息,我们只需将数据块拖放到 TSEND 块中即可。 见图 8。 图 8. 配置 TSEND 块。 从 PLC_1 接收数据 当我们设置 TSEND 将数据发送到 PLC_2 后,我们需要在 PLC_2 内部接收这些数据。为此,我们将使用 TRCV 块。见图9。 图 9. 添加 TRCV 块。 如您所见,只需拖放 TRCV 块即可将其添加到您的逻辑中。 您知道接下来我们需要为该块创建一个数据实例。 见图 10。 图 10. 将数据实例添加到 TRCV 块。 将 TRCV 块调用到您的逻辑中后,我们需要像配置 TSEND 一样配置一些参数。 见图 11。 图 11. TRCV 模块。 如您所见,EN-R 是一个使能信号,必须为真才能允许 TRCV 模块开始接收数据。 ID 是将要使用的连接,DATA 是将存储接收到的数据的位置。 因此,我们需要创建一个数据块来接收其中的数据。 请记住给它一个合适的名称。 见图 12。 图 12. 创建数据块接收数据。 接下来,定义将从 PLC_1 接收的信息标签,最佳实践是确保数据块具有与将接收的数据相同的数据结构。 见图 13。 图 13. 定义数据标签。 对于 EN-R,我们将定义一个 RecieveData 标签来启用数据接收。 对于连接 ID,它是我们之前设置的 1。 见图 14。 图 14. EN-R 信号。 接下来,将我们创建的数据块拖放到 TRCV 块中以完成所有配置。 见图 15。 图 15. 将数据块添加到 TRCV 块中。 当您拖放我们创建的 DB 时,您会注意到 TIA Portal 发出警告,并且它不接受我们刚刚添加的数据块。 这是因为我们没有像对 TSEND 那样取消选中数据块的“优化块访问”。 见图 16。 图 16. 优化的块访问。 正如我们之前所说,我们必须取消选中此选项,否则 TSEND 和 TRCV 将无法工作。 见图 17。 图 17. 取消选中优化块访问选项。 您可以看到,一旦我们取消选中 “优化块访问”,TRCV 指令就会接受数据块。 现在 TSEND 和 TRCV 块的调用和配置已完成。 让我们模拟一下我们的项目,看看数据将如何发送和接收。 首先,我们将创建一个简单的逻辑,确保我们定义的标签有数据值。 自动创建数据值的简单逻辑 我们将创建一个简单的逻辑来自动创建和更新数据值,以便更容易查看两个 PLC 之间的数据传输。 见图 18。 图 18. 简单的逻辑。 这个简单的逻辑将使用时钟位 %M50.5 自动更改 SendToPLC_2 数据块内存储的数据值。 PLC 项目仿真 让我们编译我们的项目并开始模拟。 我们需要做的第一件事是使用我们上一篇文章配置的 TCON 块在两个 PLC 之间建立连接。 请记住,我们需要启用 PLC_2 的连接功能并建立与 PLC_1 的连接。 见图 19、20 和 21。 图 19. PLC 之间无连接 图 20. 启用连接。 图 21. 建立连接。 现在,我们在两个 PLC 之间建立了连接,让我们按照设置将数据从 PLC_1 移动到 PLC_2。 首先,将 SendData 标记设置为 TRUE。 见图 22。 图 22. REQ 信号为真。 您可以看到,即使 SendData 为 TRUE,PLC_1 也没有向 PLC_2 发送数据。 这是因为 TRCV 模块尚未启用以接收任何数据。 见图 23。 图 23. EN-R 信号错误。 如您所见,由于 RecieveData 尚未为 TRUE,因此未启用 TRCV 模块来接收任何数据。 一旦 EN-R 为真,数据将从 PLC_1 的数据块发送到 PLC_2 的数据块。 见图 24。 图 24. EN-R 信号为 True。 一旦 EN-R 为真,您可以看到数据从 PLC_1 移至 PLC_2。 如果你打开工程自己模拟一下,你会发现 PLC_1 中的数据不断更新,并传输到 PLC_2 中。 这就是我们如何在两个 PLC 之间建立通信并使用 TSEND、TRCV 块。
  6. PLC 改造项目涉及用更新、更先进的版本更新或替换旧的 PLC(可编程逻辑控制器)系统。 这样做是为了提高性能、添加新功能或保持与现代技术的兼容性,同时最大限度地减少完全更换现有设备的需要。 PLC 改造项目 当您在任何系统中工作时,无论是工业自动化还是其他任何系统,您并不总是需要调试全新的工厂。 有时,旧工厂无法按照预期结果正常运行。 这意味着不是整个系统,而是某些部分。 它可能是 PLC 系统或电气系统或机械系统。 与其改变整个系统,不如只用新系统替换该部分。 其余系统将保持原样。 这称为改造。 这是工程师需要学习的一个非常重要的方面。 在这篇文章中,我们将看到与改造 PLC 系统相关的步骤。 为什么需要 PLC 改造? 当您拥有 PLC 系统时,您必然会遇到有时会出现故障的情况。 对于任何系统(不仅是 PLC)来说,这是一个自然的考虑因素,并不意味着 PLC 系统每次都会出现故障。 这是考虑到的最坏情况。 目前,除 PLC外,其余电气、机械系统均工作正常。 PLC 系统更换需求的常见原因是 – 逻辑中反复出现错误、过时的 PLC 已发生故障且在市场上不再可用、PLC 中反复出现的固件或硬件故障以及无可用服务。 在这些情况下,最好的选择是仅更换 PLC 系统,而不是更换整个系统。 这称为 PLC 改造工作。 基本上,您要么将 PLC 升级到新的,要么完全用新品牌替换它。 这降低了成本,不影响原来的工作工厂,节省时间并提高可靠性。 基本上,工厂的工作逻辑将保持不变; 您只需用新硬件替换它并运行工厂即可。 PLC 改造项目流程 第一步是研究 PLC 的控制面板图。 每个 PLC 都有自己不同的接线版本以及汇源概念。 所以,有必要先了解一下原来的接线。 这将帮助您根据当前的 PLC 准备新的 IO 列表。 因为如果一味地使用相同的 IP 列表,那么当您安装新的 PLC 时,您大多会遇到现场接线问题 如果可能的话,获取旧程序。 如果不可能,则在前往现场之前在办公室制定新的逻辑。 另外,与客户或最好的情况(最终客户端)一起测试逻辑。 最终客户将提供最大的帮助,因为他们已经操作了旧的 PLC 系统,并且可以帮助快速解决问题。 客户可以帮助深入检查流程。 如果在前往现场之前对程序进行测试,那么它将大大减少您在现场的时间。 尝试匹配屏幕并开发图形,就像旧的运行屏幕一样。 这将帮助操作员按照习惯更轻松地运行工厂。 一旦逻辑和图形准备就绪,就可以与接线员一起规划现场。 接线员首先将新的 PLC 替换为旧的 PLC,然后用万用表交叉检查所有点。 这是为了确保所有点是否已按照新接线连接。 需要注意的一件重要事情是,改造需要适当的关闭,因此在计划现场访问之前请务必确保。 在断电情况下对接线进行环路检查后,启动系统并下载 PLC 和图形中的最新程序。 现在,首先,您必须检查 IO。 这是非常关键的一步,因为您要用新线路替换旧线路。 现场的所有信息办公室必须以与之前相同的方式做出响应。 如果没有这个,您就无法以自动或手动模式运行设备。 现在,检查编写的逻辑,看看它是否按照早期系统执行。 所有安全联锁、许可条件、顺序和其他逻辑必须以与旧系统相同的方式工作。 如果工作正常,必须得到客户和最终客户的批准以进行验证并在报告中提及。 制作所有最终报告,存储最终备份,并拍摄正在运行的系统的照片和视频。 这可以确保您完成的改造 PLC 项目有一份完成报告。 PLC 项目概要 评估现有的 PLC 系统,确定改造需求,并确定项目目标、范围和限制。 设计详细的新系统计划,确保与现有机械和网络的集成,并制定迁移策略。 备份当前系统中的所有程序、数据和文档并准备恢复计划。 采购新的 PLC 和任何附加硬件,确保兼容性和可用性。 为安装场地准备必要的安全措施,并根据需要安排停机时间。 退役旧的 PLC 系统并安装新的 PLC 和相关硬件。 将程序逻辑传输或重写到新的 PLC,测试所有功能和通信。 对新系统进行全面测试,验证性能并进行必要的调整。 对人员进行新系统操作和维护方面的培训,并更新或创建系统文档。 正式切换到新的 PLC 系统,密切监控问题,并提供必要的支持。 进行实施后审查,以评估成功情况、记录经验教训并规划未来的维护或升级。
  7. 在上一篇文章中,我们讨论了如何使用 TCON 和 TDISCON 块在两个 PLC 之间建立连接,以及如何使用 TSEND 和 TRCV 块在它们之间移动数据。 跨 PLC 系统传输数据 在本文中,我们将学习一条新指令,可用于使用 TSEND_C 和 TRCV_C 块跨 PLC 系统进行通信和传输数据。 TSEND_C TSEND_C 指令是 TIA Portal 指令,用于在两个 PLC 之间建立连接。 连接建立后,PLC 将自动维护和监控。 TSEND_C 指令是异步执行的,具有以下功能: 与 TCON 块类似,建立通信连接。 通过类似于 TSEND 块的现有通信连接发送数据。 与 TDISCON 类似,终止或重置通信连接。 因此,TSEND_C 被称为“紧凑”,因为它同时充当 3 个以上的块。 TRCV_C TRCV_C 指令也是一条 TIA Portal 指令,用于在两个 PLC 之间建立连接。 连接建立后,PLC 将自动维护和监控。 “TRCV_C” 指令异步执行,依次实现以下功能: 建立和建立类似于 TCON 的通信连接。 通过类似于 TRCV 的现有通信连接接收数据。 与 TDISCON 类似,终止或重置通信连接。 因此,TRCV_C 被命名为“紧凑”,因为它同时充当 3 个以上的块。 在我们的 PLC 项目中使用 TSEND_C 和 TRCV_C 在上一篇文章中,当我们需要建立并将数据从 PLC_1 发送到 PLC_2 时,我们必须在每个 PLC 中使用三个不同的块。 见图1。 图 1. PLC_1内部逻辑 如您所见,我们使用 TCON 和 TDISCON 块来建立和重置连接,并使用 TSEND 从 PLC_1 发送数据。 PLC_2 也是如此。 见图 2。 图 2 PLC_2 逻辑 我们再次使用 TCON 和 TDISCON 块来建立和重置连接,并使用 TRCV 接收来自 PLC_1 的数据。 现在,我们想要替换所有这些块并尝试使用 TSEND_C 和 TRCV_C 来实现相同的功能。 首先,在需要发送数据的 PLC_1 中,我们将使用 TSEND_C 块,只需将该块拖放到主 OB1 内即可。 见图 3。 图 3. 添加 TSEND_C 块。 由于 TSEND_C 本质上是一个功能块,因此系统会要求您创建一个数据实例。 见图 4。 图 4. 为 TSEND_C 创建实例 TSEND_C 看起来与 TSEND 块类似,因为您需要进行一些配置并添加一些信号。 见图 5。 图 5. TSEND_C 块 现在,我们需要一个信号来发送 REQ 和数据并配置连接。 对于 REQ 信号,我们创建了一个 SendData 标签。 另外,我们可以拖放上一篇文章创建的数据块,我们需要将其发送到 PLC_2,我们可以将其拖放到块的 DATA 输入处。 见图 6。 图 6. TSEND_C 块的配置。 要配置块的连接参数,我们可以按块顶部的小配置图标打开配置视图。 配置视图看起来与 TCON 块的配置视图非常相似。 见图 7。 图 7. TSEND_C 的连接参数 我们已经在之前的文章中展示了如何配置连接参数,因此我们可以像使用 TCON 块一样进行操作,见图 8。 图 8 连接参数配置 通过这个连接配置,我们就完成了 TSEND_C 的所有配置。 请注意,与配置 TCON、TDISCON 和 TSEND 块相比,它快了多少。 现在,我们需要将 TRCV_C 添加到 PLC_2,以便它可以接收从 PLC_1 发送的数据。 在 PLC_1 的主 OB1 中,只需将 TRCV_C 拖放到您的逻辑中即可。 请参见图 9。请记住为 TRCV_C 块创建一个数据实例。 图 9. 添加 TRCV_C 将 TRCV_C 添加到您的逻辑后,我们需要对其进行配置。 正如我们对 TSEND_C 所做的那样,我们需要添加一个信号来启用数据接收,并且我们还需要添加将在其中保存数据的数据块。 见图 10。 图 10.TRCV_C 我们将 RecieveData 标签定义为 EN_R 信号。 见图 11。 图 11.定义 EN_R 标签 请记住取消选中数据块的 “优化块访问” 选项,否则该块将无法像我们在上一篇文章中展示的那样工作。 接下来,我们需要配置 TRCV_C 块的连接参数,就像我们对 TSEND_C 所做的那样,请记住,未指定的伙伴 PLC 现在是 PLC_1,见图 12。 图 12 TRCV_C 连接参数 PLC 项目模拟 现在我们已经配置了 TSEND_C 和 TRCV_ C 块,我们想要模拟我们的项目并看看它们将如何工作,但首先,我们将创建一个简单的逻辑来自动更新将发送到 PLC_2 的 PLC_1 的数据。 见图 13。 图 13. 自动更新数据的简单逻辑。 现在让我们编译并开始我们的项目的模拟。 您会注意到的第一件事是 PLC_1 和 PLC_2 将立即尝试建立连接,因为我们设置了 TSEND_C 和 TRCV_C,它们会自动尝试建立连接。 这就是两个 PLC 之间存在连接的原因。 见图 14。 图14. 直接建立连接。 可以看到,PLC 之间的连接是直接建立的,因为 TSEND_C 和 TRCV_C 中的 CONT 参数设置为 TRUE,这意味着该块将自动尝试与伙伴 PLC 建立连接。 我们可以在这里放置任何控制信号来控制连接的建立。 您可以看到的另一件事是 TSEND_C 的 REQ 和 TRCV_C 的 EN_R 设置为 FALSE,这就是为什么 PLC 之间不会有任何数据移动。 见图 15。 图 15. PLC 之间无数据传输。 如果 TSEND_C 的 REQ 信号设置为 true,则 PLC_1 将尝试发送数据,但会等待其他 PLC 允许接收数据,见图 16。 图 16. REQ 为真。 正如您所看到的,SendData 为 TRUE,但没有发送任何数据,因为 RecieveData 仍然为 false。 仅当 ReceiveData 设置为 true 时,PLC_2 才会从 PLC_1 接收数据。 见图 17。 图 17. 数据发送至 PLC_2 正如您所看到的,RecieveData 何时为 true。 数据将从 PLC_1 发送到 PLC_2,但是,您可以看到两个 PLC 内部的数据是不同的,因为 PLC_1 的数据按照我们之前所做的简单逻辑自动变化。 这意味着 EN_R 信号允许传输数据一次,当我需要再次传输数据时,该信号必须变为 false,然后再次变为 true。 查看随附的 TIA Portal 项目并查看 PLC 之间的数据传输。
  8. 在本文中,您将学习通过开关控制 LED 的 PLC 示例并了解梯形图逻辑解释。 此 PLC 示例专为工科学生学习和练习梯形图逻辑而设计。 相同的 PLC 程序在工业用途上的实现会有所不同。 PLC 示例 为以下应用设计 PLC 梯形逻辑。 我们使用三个开关来控制三个 LED。 如果任意 1 个开关打开,则 LED I 将亮起。 如果任意 2 个开关打开,则 LED II 将亮起。 如果 3 个开关全部打开,则 LED III 将亮起。 在上一篇文章中,我们讨论了使用拨动开关的相同 PLC 示例,了解逻辑。 输入 下面列出了所需的数字输入。 开关 1:I0.0 开关 2:I0.1 开关 3:I0.2 输出 下面列出了所需的数字输出。 电机 1:Q0.0 电机 2:Q0.1 电机 3:Q0.2 通过开关控制 LED 的梯形图 梯形图逻辑解释 对于此应用,我们使用 EcoStruxure Machine Expert Basic v1.2 软件进行 PLC 编程。 在上面的程序中,我们为开关 1 (I0.0)、开关 2 (I0.1) 和开关 3 (I0.2) 使用常开触点和常闭触点 在 Rung0 中,当任意 1 个开关(常开触点)打开且其他 2 个开关(常闭触点)关闭时,LED 1 将打开。 要打开 LED 2 Rung1,任何 2 个作为常开触点的开关应打开,其余 1 个作为常闭触点的开关应关闭。 为了使 LED 3 点亮,Rung2 中的开关 1、开关 2 和开关 3 串联,从而实现 AND 逻辑门。 当所有三个开关都打开时,LED 3 将打开。 当任意 1 个开关打开时 信号在真实状态下流过开关 1。 在假状态下,开关 2 和开关 3 还将信号传递到输出。 因此,LED 1 将亮起。 当开关 2 打开且开关 1 和开关 3 处于常闭触点状态且关闭时,LED I 将打开。 当开关 3 接通且其他 2 个常闭触点开关断开时,LED 1 将亮起。 打开多个开关将会断开电路。 常闭触点在真实状态时不允许发出信号。 结果,LED 1 将关闭。 当任意 2 个开关打开时 当开关 1、开关 2 打开并且开关 3 关闭时,LED 2 将打开。 开关 3 作为常闭触点,处于假状态时,将允许信号通过。 当开关 1 和开关 3 打开并且开关 2 关闭时,LED 2 将打开。 开关 2 在错误状态时将允许信号。 信号流经开关 2 和开关 3,因为它们处于真实状态。 在假状态下,开关 1 还将信号传递到输出。 因此,LED 2 将亮起。 当两个以上输入打开时,用于第三个开关的常闭触点在真实状态下不会闭合电路。 因此,LED 2 将熄灭。 当 3 个开关全部打开时 当三个开关 SWITCH 1 (I0.0)、SWITCH 2 (I0.1)、SWITCH 3 (I0.2) 全部打开时,LED 3 将亮起并关闭其他两个输出。
  9. 通过梯形图了解多个开关和电机上的 PLC 逻辑示例。 该 PLC 逻辑示例是为工科学生学习和练习梯形图逻辑而准备的。 相同的 PLC 程序在工业用途上的设计会有所不同。 PLC 逻辑示例 问题陈述: 为以下应用设计 PLC 梯形逻辑。 使用四个拨动开关来控制四个电机。 如果开关 1 打开,则电机 I 将打开。 如果开关 2 打开,则电机 I 和电机 II 将打开。 如果开关 3 打开,则电机 I、电机 II 和电机 III 将打开。 如果开关 4 打开,则电机 I、电机 II、电机 III 和电机 IV 将打开。 PLC 输入 下面提到了该 PLC 逻辑的数字输入列表。 开关1:I0.0 开关2:I0.1 开关3:I0.2 开关4:I0.3 PLC输出 下面列出了所需的数字输出。 电机1:Q0.0 电机2:Q0.1 电机3:Q0.2 电机4:Q0.3 多个开关和电机梯形逻辑 这是给定问题陈述的 PLC 逻辑。 程序解释 本例中,我们使用施耐德 PLC 软件进行编程。 在上面的 PLC 程序中,我们使用了常开触点作为开关 1 (I0.0)、开关 2 (I0.1)、开关 3 (I0.2) 和开关 4 (I0.3) 电机1的开关 1、开关 2、开关 3 和开关 4 并联,从而实现或逻辑门。 对于电机 2,输入开关 2、开关 3 和开关 4 并联,从而实现或逻辑门。 开关 3 和开关 4 正在实现 “或” 逻辑门,即与电机 3 并联连接。 仅开关 4 连接到电机 4。 要使电机 1 打开,开关 1 或开关 2、开关 3 或开关 4 应打开。 要打开电机 2,开关 2、开关 3 或开关 4 应打开。 当开关 3 或开关 4 打开时,电机 3 将打开。 当开关 4 打开时,电机 4 将打开。 PLC 仿真结果 接下来,我们将看到不同输入开关ON和OFF组合的PLC仿真结果。 当开关 1 为 ON 时 当拨动开关1打开时,电流流过它(这里我们在电路的情况下使用术语“电流”,所以这里你可以将其假设为“电流”或简称为“信号”) 。 结果,电机 1 启动。 其他电机将保持关闭状态,因为开关 1 未连接到它们。 当开关 2 为 ON 时 当开关 2 打开时,电流将流过开关 2,从而打开电机 1 和电机 2。这是因为开关 2 仅连接到电机 1 和电机 2。 当开关 3 打开时 当开关 3 接通时,电流流过它,这将打开三个电机,即电机 1、电机 2 和电机 3。输入开关 3 仅连接到这些输出。 由于开关 3 未连接到电机 4,因此电机 4 将保持关闭状态。 当开关 4 为 ON 时 开关 4 打开时将打开所有电机。 开关 4 连接到所有电机,打开时,电机 1、电机 2、电机 3 和电机 4 将打开。
  10. 这是一个 PLC 程序,用于从两个罐中排出相同的产品。 通过这个简单的例子来学习 PLC 编程。 从两个罐中排出相同的产品 问题描述 两个罐装满相同的产品。 这两个罐的排水量取决于储罐的要求。 使用梯形图在 PLC 中实现该系统的逻辑。 问题图 PLC 示例解决方案 这里系统使用两个水箱。 对于液位测量,使用两个传感器(液位低传感器)。 如图所示,我们使用两个泵将物料从储罐(储罐 1 和储罐 2)转移到储罐。 这里我们将使用液位计来测量储罐的液位。 PUMP 1 和 PUMP 2 将由液位变送器反馈控制。 在这里,我们使用两个泵来平稳运行。 当检测到储罐液位低于其极限时,两个泵都会运行。 注意:-这里我们考虑该系统的简单自动化。 本系统中使用液位计来测量储罐的液位。 为简单起见,储罐高度为 500cm,液位变送器反馈为 4 至 20mA。 我们将在此应用中使用 PLC S7-300。 我们将使用缩放来进行编程。 I/O 列表 输入列表 循环启动:- I0.0 循环停止:- I0.1 水箱 1 的低液位:- I0.2 水箱 2 液位:- I0.3 输出列表 泵 1:- Q0.0 泵 2:- Q0.1 M 内存 循环 ON 位:- M0.0 来自发射器的模拟值:- MW10 (INT) 来自发射器的模拟值:- MD100 (DINT) 乘法值:- MD104 实际水位(cm):-MD108 用于从两个罐中排出相同产品的 PLC 梯形图 程序说明 对于该应用,我们使用 S7-300 PLC 和 TIA Portal 软件进行编程。 网络 1: 我们使用锁存电路进行周期 ON(M0.0)输出。可以通过按 START PB(I0.0)启动它,并通过按 STOP PB(I0.1)停止。 网络 2: 这里来自发射器的实际计数或值是电流(4至20mA),因此通过使用 PLC 中的模拟输入通道,我们可以将其转换为数字计数。 该数字为 INT (MW10) 格式,因此我们需要将其转换为 DINT (MD100) 进行计算或乘法。 网络 3: DINT 值 (MD100) 乘以水箱的最大高度 (500cm) 进行计算。 网络 4: 乘法值(MD104)除以模拟模块的最大计数(27648)。最终的实际高度存储在 MD108 中。 网络 5: 这里我们使用泵 1 (Q0.0) 的比较器。在需要材料期间,操作员将操作泵 3,水位高度将会降低。 因此,根据我们的自动化或系统,我们需要填充储水箱,如果水位低于其限制(此处我们采用 480 厘米),泵 1 将启动。 注意:- 如果检测到水箱 1 的液位低 (I0.2),则应停止泵 1。 网络 6: 这里我们使用泵 2 (Q0.1) 的比较器。 在需要材料期间,操作员将操作泵 3,水位高度将降低。 因此,根据我们的自动化或系统,我们需要填充储水箱,如果水位低于其限制(此处我们采用 480 厘米),泵 2 将启动。 注意:- 如果检测到水箱 2 液位低 (I0.3),则应停止泵 2。 在所有功能循环期间应处于开启状态。 注意:- 以上应用可能与实际应用有所不同。 该示例仅用于解释目的。 我们也可以在其他 PLC 中实现这个逻辑。 这是排水系统的简单概念,我们也可以在其他例子中使用这个概念。 示例中考虑的所有参数仅供说明之用,实际应用中参数可能有所不同。 此外,应用中并未考虑所有联锁。 结果
  11. 这是在 PLC 中实现SR触发器的 PLC 程序。 通过此示例逻辑学习 PLC 编程。 使用 PLC 梯形逻辑的 SR 触发器 问题描述 使用梯形图语言在 PLC 中实现 SR 触发器逻辑的程序。 问题图 PLC 解决方案 众所周知,更复杂的系统不能仅用组合逻辑来控制。 主要原因是我们无法或选择不添加传感器来检测所有情况。 在这些情况下,我们可以使用事件来估计系统的状况。 SR 触发器用于锁定或解锁——锁定某项或将其关闭。 大多数 PLC 都有专门的 SR 触发器功能指令。 因此此类 PLC 不需要自定义逻辑。 SR 触发器首先执行 SET 功能,然后执行RESET 功能。 注意:- 这里我们考虑 SR 触发器指令的简单功能,而不使用特殊指令或使用锁存功能。 这里我们使用简单的锁存电路来实现 SR 触发器功能。 如图所示,采用两个按钮或两个输入来执行程序。 当用户按下 SET 按钮或在 S 输入处接收到 1 时,Q 输出将打开,如果按下 RESET 按钮或在 R 输入处接收到 1,Q^ 将打开。 输入/输出列表 数字输入 设置输入:- I0.0 复位输入:- I0.1 数字输出 Q 输出:- Q0.0 Q^ 输出:- Q0.1 M 内存 继电器线圈 1 :- M0.0 继电器线圈 2 :- M0.1 PLC 梯形图实现 SR 触发器 程序解释 本 PLC 程序我们使用 S7-300 PLC 和 TIA Portal 软件进行编程。 我们也可以使用其他 PLC 来实现这个逻辑。 网络 1: 这里我们使用继电器线圈 1(M0.0) 的 NC 触点,因此当按下复位按钮时,Q 输出 (Q0.0) 关闭。 网络 2: 这里我们使用继电器线圈 2 (M0.1) 的 NC 触点,因此当按下设置按钮时,Q^ 输出 (Q0.1) 关闭。 网络 3: 这里,当我们按下RESET按钮(I0.0)时,继电器线圈 1(M0.0)将被锁存。 网络 4: 这里,当我们按下 SET 按钮(I0.1)时,继电器线圈 2(M0.1)将被锁存。 如果上电期间两个输入都为低电平,则 Q^ 输出 (Q0.1) 将因其顺序而变高。 如果两个输入都是 注意:- 以上应用可能与实际应用有所不同。 该示例仅用于解释目的。 我们也可以在其他 PLC 中实现这个逻辑。 这就是无需指令实现 SR 翻转功能的简单概念。 我们也可以在其他例子中使用这个概念。 示例中考虑的所有参数仅供说明之用,实际应用中参数可能有所不同。 结果
  12. 这是一个读取 PLC 温度的 PLC 程序。 使用示例问题和解决方案学习 PLC 编程。 读取 PLC 中的温度 问题描述 编写一个 PLC 程序,在其中我们可以监控实际温度。 这里我们使用外部温度控制器,其输出也连接到 PLC 以监控罐内物料的温度。 问题图 问题方案 RTD 电阻随温度变化呈线性变化的器件。 该电阻值将随着温度的变化而变化,通过提供恒定电流,测量到的电阻器两端的电压降可用于确定新的电阻,从而确定温度。 RTD 有多种类型,最常见的类型是 PT100。 它由铂制成,在 0 摄氏度时已校准为 100 欧姆。 在上述应用中,我们想要测量罐体的材料温度,因此我们使用 RTD 传感器来测量罐体的温度并向温度控制器发出信号。 温度控制器以电压(0-10V DC)的形式发送信号。如果 RTD 检测到 0 度温度,它将发送 0V DC,如果检测到最高温度,它将发送 10V DC 到 PLC。 温度控制器直接连接到 PLC,因此 PLC 将读取电压。 注意: – 这里我们考虑简单的应用来进行解释。 我们需要使用 RTD 传感器来测量罐体的物料温度。 并考虑其他用于控制目的的组件。 假设温度控制器的缩放范围为 0-100°C=0 至 10V DC,并根据该信号 PLC 考虑 0 至 27648。 输入/输出列表 M 内存 来自温度控制器的模拟值:- MW100 温度控制器的实际值:- MD104 乘法:- MD108 实际温度(°C):- MD112 PLC 梯形图读取温度 PLC 逻辑解释 对于该应用,我们使用 S7-300 PLC 和 TIA Portal 软件进行编程。 我们也可以使用其他 PLC 来实现此逻辑。 网络 1: 在这个网络中,我们实现了价值转换的逻辑。 为了乘法或计算,需要将值从 INT 转换为 DINT。 因此,通过使用转换指令,将来自 RTD (MW100) 的模拟值转换为实际模拟值 (MD104)。 注意:- 温度控制器向 PLC 提供 0-10V DC 信号。 ADC 转换器或模拟输入模块会将该模拟信号转换为数字形式,该数字信号的范围是 0 到 27648。该数字范围可能因一个 PLC 而异。 网络 2: 我们的 RTD 温度范围为 0 至 100 摄氏度,输出电压范围为 0 至 10V DC。 因此,我们需要根据温度读数来缩放该电压输出。 这里按照公式乘以该值,最终值将存储在 MD108 中。 注意:-此处温度控制器和温度测量范围为 0-100°C。 网络 3: 现在将最终结果乘以 27648,结果将存储在 MD112 中(实际温度以 °C 为单位)。 注意:- 以上应用可能与实际应用有所不同。 该示例仅用于解释目的。 我们也可以在其他 PLC 中实现这个逻辑。 这是 S7-300 PLC 中温度读取的简单概念,我们也可以在其他示例中使用这个概念。 示例中考虑的所有参数仅供说明之用,实际应用中参数可能有所不同。
  13. 这是一个在 S7-300 PLC 中实现模拟量缩放的 PLC 程序。 控制阀结垢 问题描述 在 S7-300 中实现 PLC 程序进行模拟量缩放。 问题图 问题方案 模拟输入来自不同的传感器或发射器。 发射器将物理量转换为电信号。 我们可以使用模拟传感器来测量许多物理量,例如温度、压力、液位、距离、流量等。 当然,我们可以使用模拟传感器来测量所有物理量,但为了举例和说明目的,这里我们以控制阀为例。 如图所示,这里我们考虑一个控制阀,它有 4-20mA 输出(阀门反馈)和 4-20mA 输入(阀门命令)用于操作。 因此,当 PLC 向流量控制阀提供 20mA 电流时,阀门将打开 100%,而对于 4mA 电流,阀门将打开 0%(关闭)。 以其他方式,流量控制阀还提供可用于闭环系统/阀门百分比指示的输出信号。 如果阀门 100% 打开,PLC 将获得 20mA 信号,如果阀门打开 0%,则将获得 4mA。 注意:- 为了简单说明,我们在这里考虑闭环系统,因此操作员将控制阀打开命令参数设置在 0% 到 100% 的范围内。 现在,按照闭环系统,控制阀将提供输出信号(阀门反馈),通过使用 SCALE 指令,操作员可以在图形上看到实际的阀门打开参数。 输入/输出列表 M 内存 启用命令缩放:- M0.0 双极选择-缩放:- M0.1 来自传感器或发射器的实际值:- MW10 错误字 – 缩放:- MW12 缩放输出:- MD20 启用命令取消缩放:- M1.0 双极选择 - 取消缩放:- M0.2 显示屏上的给定值:- MD24 错误字-取消缩放:- MW16 非缩放输出:- MW26 用于阀门标定的 PLC 梯形图 梯形图逻辑解释 对于该应用,我们使用 S7-300 PLC 和 TIA Portal 软件进行编程。 我们也可以使用其他 PLC 来实现这个逻辑。 网络 1: 在该网络中,当使能命令(M0.0)为ON 时,执行缩放逻辑。 “Scale” 指令是将 IN 参数处的整数(这里是来自控制阀或 MW10 的 4-20mA 信号)进行转换,可以在下限(0% 输出)和上限(100% 输出)之间以物理单位进行缩放。 输出)。 指令的结果或缩放输出 (MD20) 在 OUT 参数处输出。 如果双极性选择(M0.1)为 ON,则假定 IN 参数的值为双极性(范围在 -27648 至 +27648 之间)。 如果双极性选择(M0.1)为 OFF,则假定 IN 参数的值为单极性(范围在 0 到 27648 之间)。 网络 2: “Unscale” 指令用于将 IN 参数上的浮点数(来自显示屏或 MD24 的给定值)取消缩放为下限和上限之间的物理单位。 指令的结果在 OUT 参数处输出(未缩放输出 MW26)。 如果双极性选择(M0.2)为 ON,则假定 IN 参数的值为双极性(范围在 -27648 至 +27648 之间)。 如果双极性选择(M0.2)为 OFF,则假定 IN 参数的值为单极性(范围在 0 到 27648 之间)。 错误代码表: 注:以上应用可能与实际应用有所不同。 该示例仅用于解释目的。 我们也可以在其他 PLC 中实现这个逻辑。 这是 SCALE 和 UNSCALE 指令的简单概念,我们也可以在其他示例中使用这个概念。 示例中考虑的所有参数仅供说明之用,实际应用中参数可能有所不同。 结果
  14. 这是一个用于控制并联储罐液位的 PLC 程序。 通过此示例学习 PLC 编程。 并联储罐液位控制 问题描述 两个罐并联连接。 我们需要加热和冷却进入储罐的物料,同时控制储罐的液位。 为此应用实施 PLC 程序。 问题图 问题方案 加热工艺用于加热罐内物料,冷却工艺用于冷却物料。 这里考虑两种材料相同,如图所示,入口阀将材料输送到两个罐中。 在这里,我们可以使用液位开关来检测两个水箱的低液位和高液位。 使用两个温度传感器测量两个水箱的温度。 罐底部使用出口阀排出材料以进行进一步处理。 我们将为此应用编写 PLC 程序。 输入和输出列表 数字输入 循环启动:- I0.0 循环停止:- I0.1 低液位罐 1(LL1) :- I0.3 低液位罐 2(LL2) :- I0.4 高位水箱 1(LH1) :- I0.5 高位罐 2(LH2) :- I0.6 数字输出 加热罐入口阀 V2 :- Q0.0 冷却罐入口阀 V3 :- Q0.1 加热罐出口阀 V4 :- Q0.2 冷却罐出口阀 V5 :- Q0.3 M 内存 循环ON位:- M0.0 加热罐温度寄存器:- MD10 冷却槽温度寄存器:- MD14 冷却罐出口阀 V5 :- Q0.3 用于并联罐液位控制的 PLC 程序 程序说明 对于此应用,我们使用 S7-300 PLC 和 TIA Portal 软件进行编程。 我们也可以使用其他PLC来实现这个逻辑。 网络1: 该网络用于锁存电路。 每当按下 START 按钮 (I0.0) 时,Cycle ON (M0.0) 位就会打开。 按 STOP PB (I0.1) 可停止循环。 网络2: 当检测到加热罐液位低(I0.3)时,进水阀 V2(Q0.0)将打开。 如果未检测到水箱 1(I0.5) 的高液位并按下启动 (I0.0) 按钮,入口阀 V2 (Q0.0) 将打开。 网络3: 如果检测到罐 2 (I0.4) 液位低,入口阀 V3 (Q0.1) 将打开。 如果按下启动按钮并且未检测到罐 2 (I0.6) 的高液位,则入口阀 V3 (Q0.1) 将打开。 网络4: 如果循环开启且加热罐实际温度(MD10)大于或等于设定温度(70°C),则出口阀V4(Q0.2)将开启 网络5: 如果循环打开并且冷却罐的实际温度(MD14)小于或等于设定温度(20°C),则出口阀V5(Q0.3)将打开。 注意:- 此示例仅用于说明目的。 我们可以在任何 PLC 中或使用继电器逻辑来实现此逻辑。 上述应用可能与实际应用不同,也可能是工厂逻辑的一部分。 结果
  15. 这是一个用于自动加热和混合产品的 PLC 程序。 通过此示例,供工科学生学习 PLC 编程。 产品的加热和混合 问题描述 制作一个自动系统,将两种材料收集在一个罐中。 所有材料均应混合直至达到预定的设定温度。 在 S7-1200 PLC 中为此应用编写一个梯形图程序。 问题图 问题方案 我们可以用简单的逻辑来解决这个问题。 对于该系统,考虑两个单独的液位开关来检测两种不同材料的液位(假设材料 A 和材料 B)。 还可以考虑使用一个液位开关来检测空液位。 为了控制液位,我们可以使用单作用阀门(全开和全闭型)。 混合时使用搅拌器,搅拌器与电机轴连接。 加热器和温度传感器安装在罐内。 在这里,材料被混合直至达到设定温度,混合后,出口阀(Q0.4)将被操作以排出混合产品。 输入和输出列表 输入列表 循环启动:- I0.0 循环停止:- I0.1 材料等级 B :- I0.2 材料等级 A :- I0.3 空液位开关:- I0.4 温度传感器:- I0.5 输出列表 入口阀 1 :- Q0.0 入口阀 2 :- Q0.1 搅拌器电机:- Q0.2 加热器:- Q0.3 出口阀:- Q0.4 M 内存 M0.0:- 循环开启 用于产品加热和混合的 PLC 程序 程序解释 本题中,我们将考虑 S7-1200 PLC 和 TIA Portal 软件进行编程。 网络1: 该网络显示了用于周期 ON 和周期 OFF 的简单锁存电路。 循环启动按钮 (I0.0) 的常开 (NO) 触点和循环停止按钮 (I0.1) 的常开 (NO) 触点用于激活循环。 网络2: 该网络用于操作入口阀 1(Q0.0)。 当检测到水箱低液位 (I0.4) 时,该功能将运行。 当地址(I0.3)的开关检测到料位A时闭合。 START PB (I0.0) 也并联连接,因此如果未检测到低电平,可通过按 START PB (I0.0) 启动入口阀。 网络3: 该网络用于操作入口阀 2 (Q0.2)。当材料 A 填充到所需液位时,该网络将运行。 当循环运行并且检测到材料 A 的液位时,入口阀 2 (Q0.1) 将打开。 网络4: 该网络用于操作搅拌器电机和加热器。 当罐内装满材料 A 和材料 B 时,加热器(Q0.3)和搅拌器电机(Q0.2)将打开。 网络5: 当整个混合过程和加热完成时,出口阀(Q0.4)将打开。 空液位开关(I0.4)的常闭触点用于在罐空时关闭出口阀。 注意:- 以上逻辑仅用于解释某些应用。 该图仅用于表示目的,实际系统可能与该系统不同。 结果
  16. 这是用于报警安全系统的 PLC 程序。 通过此示例问题学习 PLC 编程。 报警安全系统 问题描述 在 S7-1200 PLC 中为房屋制作防盗报警系统程序。 考虑一栋房子,我们要在其中布置自动防盗报警安全系统。 当运动传感器检测到任何人时,警报应打开。 问题图 问题方案 我们可以用简单的逻辑来解决这个问题。 在这里我们可以使用两个传感器,一个运动传感器和第二个窗口传感器。 窗户传感器是一圈电线。 运动传感器的设计使得当在房屋或房间中检测到有人时,传感器将被激活(将其状态更改为 1 或 true) 窗户传感器的重要一点是电流始终通过,直到玻璃发生破裂。 因此输出始终为真,当有人试图打破窗玻璃时,电流不会在电路中流动。 输入和输出列表 输入列表 系统启动:- I0.0 系统停止:- I0.1 运动探测器:- I0.2 车窗传感器:- I0.3 报警停止按钮:- I0.4 输出列表 警报:- Q0.0 M 内存 M0.0:- 主线圈。 M0.1:- 报警条件。 报警安防系统 PLC 梯形图 计划说明 本题我们将考虑使用 S7-1200 PLC 和 TIA Portal 软件进行编程。 网络 1: 该网络显示了用于系统开启和系统关闭的简单锁存电路。 我们使用系统启动按钮(I0.0)的常开(NO)触点和系统停止按钮(I0.1)的常开触点(I0.1)来激活系统。 网络 2: 当系统启动且运动传感器 (I0.2) 检测到人员进入时,警报开启 (M0.1) 条件将开启,并将激活警报 (Q0.0)。 通常车窗传感器(I0.3)的常闭触点是并联使用的,因此在正常情况下这是正确的。 如果检测到玻璃破裂或窗户状况,窗户传感器 (I0.3) 输入将变为假,并将激活警报状况 (M0.1)。 网络 3: 在此网络中,锁存电路用于报警(Q0.0)。 如果检测到报警条件 (M0.1),报警将打开,并且可以通过按报警 STOP PB (I0.4) 来停止报警。 注意:- 以上逻辑仅用于解释目的。 我们也可以使用硬连线继电器逻辑来实现这个示例。 对于这个简单的系统来说,S7-1200 PLC 系统的成本是如此之高。 结果
  17. 编写一个 PLC 程序来实现流量计的累加器。 流量计具有 4-20mA 输出,代表管道中 0 至 100 升/小时的燃油流量。 流量积算仪 PLC 程序 通过使用这个逻辑,我们可以计算从管道通过的总燃料量。 当累加器值达到 5000 升时,应自动重置,或者我们可以使用 RESET 按钮重置该值。 问题方案 我们可以通过简单的逻辑来解决这个问题。 这里我们考虑使用流量计来测量最大流量为 100 升/小时的燃料。 这里我们使用 DIV 指令将这个流量从 L/H 转换为 L/Sec 进行计算。 之后,通过使用 1 秒时钟脉冲,我们将把这个值存储在另一个存储位置,并且每隔一秒就会添加和更新新值。 例如,我们认为累加器的最大值为 5000 升,因此在此值之后累加器应重置。 因此,我们会将此值与实际值进行比较并自动重置它,或者我们将提供一个 RESET 按钮来重置累加器值。 输入/输出列表 输入列表 复位:- I0.0 M 内存 M0.5:- 1秒(1s)时钟脉冲 M1.2:- 时钟脉冲的上升沿 MD10:- 流量计最终输出(L/H)的存储字 MD18:- 流量计最终输出(L/Sec)的存储字 MD22:-总升添加量 MD26: - 总燃油量(升) 累加器梯形图 程序解释 本题中,我们将考虑 S7-300 PLC 和 TIA Portal 软件进行编程。 网络 1: 这里我们采用了流量计的最终输出值,单位为 L/H (MD10)。 通过使用 DIV 指令,我们将 L/H 流量转换为 L/sec,并将最终值存储在 MD18 中。 网络 2: 这里 1s 的时钟脉冲(M0.5)每秒都会加值,并将结果存储在存储器字 MD22 中。 网络 3: 此处,出于显示目的,我们将 MD22 的值移至 MD26(以升为单位的总燃油量)中。 网络 4: 在这个网络中,我们需要重置累加器。 如果总燃油量大于 5000(5000 值是为了示例目的,它取决于流量计配置及其范围),则累加器计数应自动为零,或者我们可以通过按 RESET 按钮 (I0.0) 进行重置。 注:以上逻辑仅用于解释目的。 这里我们只考虑了缩放的最终输出,因此我们在逻辑中没有提到 4-20mA 缩放。 结果
  18. 讨论 PLC 定时器编程示例:不同的 PLC 定时器有 TON、TOF、TP 和 TONR。 PLC 定时器指令和 PLC 定时器逻辑示例。 PLC 定时器编程 使用 TIA Portal 在 S7-1200 PLC 中实施 IEC 定时器(TON、TOF、TP 和TONR)。 在许多应用中,需要控制时间或信号流。 例如,可能需要控制阀门或电机在特定的时间间隔内运行,在一段时间间隔或一段延迟后打开。 问题图 问题方案 对于这个问题,我们将通过示例在 S7-1200 PLC 中使用 IEC 定时器(TON、TOF、TP 和 TONR)。 PLC 中有多种不同形式的定时器。 如上图所示, ON 延迟定时器,在特定时间延迟后变为 ON。 关闭延迟定时器在关闭输入后一段固定时间内开启。 脉冲定时器在固定的时间内打开或关闭。 累加器定时器是记录时间间隔的。 这里考虑四个电机和四个开关的示例来解释定时器。 我们需要以不同的方式启动三个电机。 第一个电机将在 10 秒延迟后启动, 第二个电机将立即启动并在 10 秒延迟后关闭 第三个电机将以脉冲启动,并延迟 10 秒关闭。 第四个电机将运行总共 10 秒。 输入/输出列表 输入列表 开关 1:I0.0 开关 2:I0.1 开关 3:I0.2 开关 4:I0.3 复位:I0.4 输出列表 电机 1:Q0.0 电机 2:Q0.1 电机 3:Q0.2 电机 4:Q0.3 定时器的 PLC 梯形图 我们可以使用 Generate-ON-delay 或 ON 延迟定时器指令将 Q 输出的设置延迟编程的持续时间 PT。 当输入 IN 的结果从 0 变为 1(上升沿)时启动该指令。 您可以在 Timer 模块的 ET 输出处监视当前时间值。 计时器值从 T#0s 开始,并在达到持续时间 PT 的值时结束。 一旦 IN 输入处的信号状态变为 0,ET 输出就会复位。 我们可以使用生成关闭延迟或关闭延迟定时器指令来将 Q 输出的复位延迟编程的持续时间 PT。 当输入 IN 处的逻辑运算 (RLO) 结果从 0 变为 1(正信号边沿)时,Q 输出被置位。 我们可以在 ET 输出处监视当前时间值。 我们可以使用生成脉冲指令来设置编程持续时间的输出 Q。 当输入 IN 的结果从 0 变为 1(上升沿)时启动该指令。 编程时间 (PT) 从指令开始时开始。 在此定时器中,即使检测到新的上升沿,只要 PT 持续时间仍在运行,输出 Q 处的信号状态就不会受到影响。 时间累加器指令或累加器定时器用于在编程时间 (PT) 参数设置的周期内累加时间值。 当输入 IN 的信号状态从 0 变为 1(上升沿)时,执行指令,并且持续时间 PT 开始。 在这种情况下,即使 IN 参数处的信号状态从 1 变为 0”(下降沿),Q 参数仍保持设置为 1。 R 输入复位输出 Q。 计划说明 本题我们将考虑使用 S7-1200 PLC 和 TIA Portal 软件进行编程。 网络1: 在此网络中,我们为 MOTOR 1(Q0.0) 使用 ON 延迟计时器(生成延迟)。 当 SWITCH 1(I0.0) 的状态从 0 变为 1 时,定时器指令将被执行,并在 10 秒延迟后激活 MOTOR 1(Q0.0)。 网络2: 在此网络中,我们为电机 2(Q0.1) 使用了关闭延迟定时器(生成关闭延迟)。 当 SWITCH 2(I0.1) 的状态从 0 变为 1 时,定时器指令将被执行,并立即激活 MOTOR 2(Q0.1)。 此外,当开关 2(I0.1) 状态变回 0 时,编程时间 (PT) 将开始,时间过后电机 2(Q0.1) 将关闭。 网络3: 在此网络中,我们为电机 3(Q0.2) 使用了脉冲定时器(生成脉冲)。 当开关 3(I0.2) 的状态从 0 变为 1 时,定时器指令将被执行,并立即激活电机 3(Q0.2)。 在这种情况下,即使检测到新的上升沿,只要编程时间 (PT) 正在运行,电机 3(Q0.2) 的状态就不会受到影响。 网络4: 在该网络中,我们为 MOTOR 4(Q0.3) 使用了累加器定时器(累加器时间)。当 SWITCH 4(I0.3) 的状态从 0 变为 1 时,定时器指令将被执行,并且 MOTOR 4(Q0.3) 将被执行。 3) 10秒后开始。 即使输入状态变回 0,电机 4(Q0.2) 也将保持打开状态。需要复位 (I0.4) 来复位定时器或累计时间。 运行时测试用例
  19. 这是一个以 5 秒间隔闪烁(开/关)灯的 PLC 程序。 闪烁灯 问题描述 使指示灯或灯在五秒后亮起,并在五秒后关闭。 制作一个程序,将灯打开 5 秒,然后关闭 5 秒,然后打开 5 秒,再次关闭 5 秒,依此类推。 问题图 问题方案 这个问题可以通过使用定时器来解决。 在这种情况下,我们将使用 TON(ON 延迟定时器)。 为了便于说明,我们考虑一个用于启用开/关循环的开关和一个用于输出的灯。 当用户按下开关时,灯将通电并保持亮起 5 秒,然后熄灭 5 秒。 这个循环将会重演。 输入和输出列表 输入列表 开关:I0.0 输出列表 灯:Q0.0 M 内存 M0.0:灯关闭状态的位存储器。 闪烁灯 PLC 梯形图 程序说明 本题中,我们将考虑 S7-1200 PLC 和 TIA Portal 软件进行编程。 网络 1: 在此网络中,当按下开关 (I0.0) 时,如果不存在灯关闭条件,则灯 (Q0.0) 将打开。 所以这里我们使用开关的常开触点(I0.0)和灯关闭状态的常闭触点(M0.0)。 网络 2: 在该网络中,当灯(Q0.0)打开时,将执行 TON(ON 延迟定时器)指令,并设置灯关闭条件。 因此,我们在这里采用灯无触点(Q0.0)、TON 定时器,编程时间为 5 秒。 网络 3: 根据我们的条件,灯关闭条件(M0.0)应在延迟 5 秒后关闭,因此我们再次使用 TON。 因此我们使用灯关闭状态(M0.0)的常开触点和具有 5s 编程时间的 TON。 结果
  20. 为具有锁存功能的备用输出电路设计一个 PLC 程序,并用解决方案解释梯形逻辑。 备用输出电路 问题描述 通过按开关第一次、第三次、第五次等将灯设置为开,并通过按开关第二次、第四次、第六次等将同一灯设置为关。 当系统或循环上电时,将输出状态恢复为 “0”。 按奇数次按钮可以启动输出,按偶数次相同按钮可以停止输出。 问题图 问题方案 我们可以使用简单的梯形图逻辑来解决这个问题。 在此,我们考虑交替 LED 操作的一个简单示例。 这里我们考虑一个 LED 和一个按钮。 交替按下按钮,输出应交替打开/关闭,在按钮按下奇数次期间,输出应打开,在按钮按下偶数次期间,输出应关闭。 PLC 输入和输出列表 输入列表 开关:I0.0 输出列表 LED:Q0.0 M 内存 M 0.0 用于 LED 复位条件 M 0.1 计数器复位 M 11.0 和 M11.1 – 上升沿 交替输出电路梯形图(带锁存功能) PLC 程序说明 在本应用中,我们使用了西门子 S7-300 PLC 和 TIA Portal 软件进行编程。 网络 1: 在网络 1 中,我们使用 SET 指令来设置 LED(Q0.0)。 这里我们采用了 BUTTON 的 NO 接触(I0.0) 因此按下 BUTTON (I0.0) 即可激活 LED (Q0.0)。 网络 2: 这里我们使用了一个计数器,它会计算 BUTTON (I0.0) 的切换次数。 这个计数器会告诉我们按钮被按下的次数、它的值或者该值是偶数还是奇数。 网络 3: 当计数器达到其预设值(2)或偶数次时,计数器的常开触点将设置 M0.0(LED 复位条件)。 网络 4: 在此网络中,M0.0 的无触点将重置 LED 和计数器。 这里 M0.1(计数器复位存储器)将复位计数器。 网络5: 如果 M0.0 为 ON,并且按钮(I0.0)的负跳变(从 1 到 0)将被触发,则 LED 的 RESET 条件将关闭。 注意:提供此示例是为了了解备用输出电路的基本概念,它不是完整的应用,但我们可以在任何自动化应用或任何系统中使用这个概念。 测试用例
  21. 创建用于过程控制行业报警指示的 PLC 程序。 通过这个工业示例学习 PLC 编程。 过程控制中的报警指示 在许多行业中,有许多机器自动执行许多任务。 系统或过程中使用了许多传感器和组件。 有时操作员可能无法通过目视观察来识别机器或系统的问题。 有时,机器可能会由于某些问题而停止工作。 问题图 PLC 解决方案 我们可以通过在系统或流程中添加报警来解决这个问题。 添加警报以提醒操作员监控即将超过其极限值或已经超过极限值的机器/过程。 通过信号器或喇叭以及面板上不同颜色的指示灯向操作员指示警报。 (例如,绿灯表示 OK,黄灯表示不好,红灯表示不好。) 警报的目的是利用自动化来帮助操作员监视和控制过程,并就工厂的异常情况向他们发出警报。 持续监控传入/输入过程信号,如果给定信号的值进入异常状态,则视觉和/或音频警报会通知操作员有关情况。 我们可以通过不同的方式为系统配置报警,如 MIMIC、面板指示灯、SCADA、HMI 等。 对于我们的问题讨论,我们考虑了一个简单的系统并为该系统配置警报。 例如,考虑一个填充和排放过程,在该系统中我们要考虑一些警报,我们将通过使用面板上的灯来显示警报。 例如,考虑我们系统的以下警报, 紧急停止按钮被按下 进料阀打开错误 进料阀关闭错误 排出阀打开错误 排放阀关闭错误 这里都是错误的,所以我们全部采用红色指示,如上图所示。 PLC 中的输入和输出列表 输入列表 周期开始:I0.0 循环停止:I0.1 低电平开关,LL:I0.2 高电平开关,左侧:I0.3 进给 VLV 打开 LS:I0.4 进给 VLV 关闭 LS:I0.5 光盘。 VLV 开放 LS:I0.6 光盘。 VLV 关闭 LS:I0.7 紧急停止:I1.0 复位:I1.1 输出列表 循环开启:Q0.0 进料阀:Q0.1 碟阀:Q0.2 蜂鸣器:Q0.3 紧急停止按下:Q0.4(指示灯) 进给 VLV 打开错误:Q0.5(指示灯) 进给 VLV 关闭错误:Q0.6(指示灯) 光盘 VLV 打开错误:Q0.7(指示灯) 盘 VLV 关闭错误:Q1.0(指示灯) 过程控制中报警指示的 PLC 程序 逻辑解释 在本应用中,我们使用了西门子 S7-300 PLC 和 TIA Portal 软件进行编程。 网络 1: 在网络 1 中,我们使用锁存电路来实现周期 ON(Q0.0)输出。 可以通过按循环 START PB (I0.0) 启动,按 STOP PB (I0.1) 停止。 当循环开始时,系统检查水箱的液位。 如果罐液位较低,则进料过程将开始,如果罐液位达到高,则排放周期将开始。 网络 2: 当水箱达到低液位时,LL (I0.2) 将被激活,喂食周期将开启。 这里我们采用 LH(I0.3)的常闭触点,因此当 PLC 检测到高电平时,它将停止进给循环。 网络 3: 当水箱达到高液位时,LH(I0.3)将被激活,放电周期将开启。 这里我们采用了 LL (I0.2) 的常闭触点,因此当 PLC 检测到低电平时,它将停止放电周期。 网络 4: 当系统接收到紧急停止(I1.0)输入时,它将激活紧急停止按下输出(Q0.4),并向操作员提供警报指示。 网络 5: 在此网络中,我们配置了进料 VLV 打开错误警报 (Q0.5),当进料阀打开且未检测到进料 VLV 打开 LS (I0.4) 时,计时器将启动,5 秒后进料 VLV 打开错误警报打开( Q0.5)。 网络 6: 在此网络中,我们配置了进料 VLV CLOSE 错误警报 (Q0.6),当进料阀关闭且未检测到进料 VLV CLOSE LS (I0.5) 时,计时器将启动,5 秒后进料 VLV CLOSE 错误警报开启( Q0.6)。 网络 7: 在此网络中,我们配置了圆盘 VLV OPEN 错误警报 (Q0.7),当圆盘阀打开且未检测到圆盘 VLV OPEN LS (I0.6) 时,计时器将启动,5 秒后圆盘 VLV OPEN 错误警报打开( Q0.7)。 网络 8: 在此网络中,我们配置了圆盘 VLV CLOSE 错误警报 (Q1.0),当圆盘阀关闭且未检测到圆盘 VLV CLOSE LS (I0.7) 时,计时器将启动,5 秒后圆盘 VLV 关闭错误警报开启( Q1.0)。 网络 9: 在这个网络中,我们为所有警报配置了蜂鸣器,当检测到警报时,蜂鸣器(Q0.3)将被激活,并且可以通过按重置(I1.1)来重置它。 网络 10: 操作员可以通过按 RESET (I1.0) 来重置蜂鸣器 测试用例 注:上述 PLC 逻辑提供了 PLC 在过程报警指示中应用的基本思路。 逻辑是有限的,不完整的应用。
  22. 这是一个用于一个扫描周期输出正沿脉冲的 PLC 程序。 通过解决方案学习梯形图逻辑。 正边沿脉冲输出 问题描述 在某些应用中,我们需要根据外部输入信号运行操作/功能。 我们可以使用数字输入作为触发命令来激活所需的功能。 有时我们使用数字输入信号的正跳变来触发命令,而不是连续/全脉冲数字输入信号。 这里我们考虑一个简单逻辑的例子,其中两个寄存器的值在接收到触发命令后将递增。 每个寄存器都有一个预设值,例如值 “1”。 因此,对于每个触发命令,加法器寄存器值都会增加值 “1”。 对于加法器 1 寄存器,我们使用上升沿(0 到 1)触发输入,对于加法器 2 寄存器,我们使用简单的数字输入(0 到 1 和 1 到 0)信号。 我们看到使用触发命令和不使用上升沿的优点和缺点。 我们可以在其他应用中使用相同的逻辑,例如将寄存器值清零、强制寄存器值具有定义的值且几乎不进行逻辑修改等。 问题 解决方案 我们可以通过数字输入的正沿或上升沿来解决这些类型的问题。 这里我们将考虑 S7-300 PLC 进行编程,这样我们就可以监视该值并进行模拟。 我们可以使用 PLC SIM 进行模拟。 这里我们考虑了一个简单的例子。 在本例中,我们将考虑 “Adder 1” 寄存器,当触发命令从 0 到 1 的转换发生时,该寄存器将添加值 “1”。 每次触发后寄存器值都会加 1。 对于 “Adder 2” 寄存器,接收到数字输入后,该值将递增。 这里,我们不使用上升沿触发。 输入/输出列表 输入列表 触发命令:I0.0 记忆线圈 触发命令的上升沿:M0.0 总价值:MW2 总价值 2:MW4 PLC 梯形图逻辑 网络 1: “Adder 1” 寄存器的初始值为零。 给出 18 次上升沿触发命令后,输出将变为值 18,并增加值 “1”。 上升沿触发命令的仿真 (PLCSIM-300)。 网络2: “Adder 2” 寄存器的初始值为零。 在发出触发命令(无正/负沿)18 次后,输出将是一些随机数(例如 7506),而不是直接接收到的触发命令的值18。 无上升沿触发命令的仿真 (PLCSIM-300)。 PLC 逻辑说明 在本应用中,我们使用了西门子 S7-300 PLC 和 TIA Portal 软件进行编程。 这里我们考虑了两个例子来解释正边缘。 任何人都可以轻松理解这个概念。 在网络 1 中,当触发命令(I0.0)被触发时,会发生从 0 到 1 的转变,并执行正脉冲指令。 假设 “Adder 1” 寄存器将在 MW0 中存储值 “1”,如果触发命令(I0.0)被触发,则该值将增加 “1”。 例如,当加法器 1 为零时,我们触发了 18 次,因此加法器在总 Value (MW0) 中添加了 18 我们在网络 2 中举了另一个例子,没有使用正脉冲。 所以在这里你可以看到结果。 比如说,我们按下或触发了 18 次,但它在总值 2 (MW4) 中添加了 7506(这是随机值,在模拟过程中可能会有所不同),因此它不是正确的相加。 因为 1 个脉冲有上升沿或下降沿/正脉冲或负脉冲(o到1 和 1到0)。 这里我们也使用 PLC SIM 进行模拟,因此我们可以模拟总加法。 在第一个网络中,我们添加了正边沿,因此模拟器显示 18。在第二个网络中,我们添加了没有正边沿的触发命令,因此它显示了一些随机值。 这就是上升沿的概念,我们可以在任何编程应用中使用这个上升沿。 以上程序和仿真仅用于说明目的,仿真时的仿真值可能会有所不同。 结果 注:上述 PLC 逻辑提供了正沿触发命令在 PLC 逻辑中应用的基本思路。 逻辑是有限的,不完整的应用。
  23. 这是自动剔瓶系统的PLC程序。 通过此 PLC 练习和解决方案学习梯形逻辑。 自动剔除瓶子 问题描述 如今,工业自动化对于准确、快速的生产是必要的。 让我们以汽水瓶公司为例,其中皮带输送机用于将瓶子从一个工位转移到另一个工位。 但在瓶子到达苏打水灌装站之前,必须使所有瓶子处于直立位置以进行进一步处理 掉落在传送带上的瓶子可能会在下一工序中产生问题。 所以在这里我们讨论一个简单的 PLC 逻辑来处理掉落的瓶子。 PLC 问题图 PLC 问题解决方案 为此,我们在灌装站使用 PLC 系统,将掉落的瓶子从传送带上剔除,并为下一工序清理路径。 这个过程是通过使用传感器和执行器来完成的。 我们使用气动活塞缸组件将掉落的瓶子从传送带上推出。 当输送机运行时,所有瓶子从一个工位转移到另一个工位进行下一道工序。 使用两个传感器,用于检测站立和掉落的瓶子,一个气缸用于将掉落的瓶子从传送带上推出。 输入/输出列表 输入列表 起始 PB:I0.1 停止 PB:I0.0 传感器 X1:I0.2 传感器 X2:I0.3 输出列表 循环开启:Q0.0 输送机:Q0.1 气缸:Q0.2 自动剔瓶系统的 PLC 程序 PLC 程序说明 在本应用中,我们使用了西门子 S7-1200 PLC 和 TIA Portal 软件进行编程。 我们也可以用继电器电路来设计这个逻辑。 网络 1: 在网络 1 中,我们为机器采取循环 ON 条件。 这里我们采用 START PB (I0.1) 来启动循环,并采用 STOP PB (I0.1) 来停止循环。 我们采用循环 ON (Q0.0) 的传送带 (Q.1) 并行输出,因此我们可以在循环 ON 条件下操作传送带。 网络 2: 在网络 2 中,我们将传感器 X1(I0.2) 和 X2(I0.3) 作为输入。 我们对 X2 (I0.3) 传感器使用常开触点,对 X1 (I0.2) 传感器使用常闭触点。 当瓶子在传送带上传输时,这些传感器会感知瓶子的位置,无论它们是直立还是倒下。 传感器 X2(I0.3) 感测瓶子的下部位置,传感器 X1(I0.2) 感测瓶子的顶部位置。 在 PLC 中,我们设计了遵循命令的电路,如果传感器 X2(I0.3) 感测到瓶子并且传感器 X1(I0.2) 没有感测到瓶子,则气动执行器 (Q0.2) 将开始动作并且它 将从传送带上剔除瓶子。 之后,完美的瓶子将进入苏打水灌装站,整个循环将完成。 结果 注:上述 PLC 逻辑提供了 PLC 在自动剔瓶处理系统中应用的基本思路。 逻辑是有限的,不完整的应用。
  24. 用于每日生产记录的 PLC 程序。 通过梯形图逻辑的详细解释来了解问题描述。 每日生产记录 问题描述 在许多行业中,都需要统计一天内生产的产品数量,这对于销售产品或跟踪每天的生产数量是非常有必要的。 在过去,人类操作员被分配对最终产品进行计数,但由于一些人为错误,精确计数是不可能的。 因此我们无法对所有产品进行正确计数,也无法有效跟踪生产数量。 这些类型的问题大多发生在食品和饮料行业、盒子包装行业、瓶子灌装应用等。因此我们可以使用一个简单的基于 PLC 的逻辑来跟踪日常生产并以电子方式记录。 问题图 PLC 解决方案 这里我们将利用传感器和 PLC 编程来解决最终产品的计数问题。 首先传感器感应产品并计算数量,数值将显示在数字显示屏上(如上图所示)。 为了便于解释,我们将考虑一个空箱计数系统的简单示例。 在该系统中,空盒子从第一个过程传送到第二个过程(例如一个地方到另一个地方)。 传感器用于对空箱进行计数。 因此,当传感器检测到空盒子时,就会开始显示,也就是说从 1 开始计数,这是通过简单的逻辑完成的。 每 24 小时/一天后,我们可以使用 RESET 按钮重置计数器值。 为了便于解释,这里我们将考虑两批生产。 我们还考虑了为每个批次的操作员提供两个批次的完成指示,这些指示将显示在本地面板上。 通过 PLC 逻辑我们将实现所需的逻辑。 因此,当任何批次完成时,指示灯将根据 PLC 程序亮起。 一旦生产目标完成,可以使用 RESET 按钮重置显示计数器。 输入/输出列表 输入列表 盒子探测器传感器:I0.0 复位:I0.1 主开关:I0.2 输出列表 完成目标:Q0.0 第 1 批已完成:Q0.1 第 2 批已完成:Q0.2 每日生产记录梯形图 PLC 程序说明 在本应用中,我们使用了西门子 S7-1200 PLC 和 TIA Portal 软件进行编程。 网络1: 在网络 1 中,我们使用主开关 (I0.2) 来启动系统/批次,并串联使用盒子探测器传感器 (I0.0) 的常开触点。 这里我们考虑了一个 UP 计数器,因此当盒子检测器传感器 (I0.0) 检测到盒子时,计数器将开始计数。 这里我们还采用目标完成输出(Q0.0)作为面板上操作员指示的目标完成指示。 通过按重置按钮(I0.1)操作员可以重置旧的生产记录。 计数器操作用于对产品进行计数,其中 RESET(I0.1)用于重置生产记录。 预设值(PV)为 20 个产品。 计数器值(CV)为 MW2,表示传感器检测到的实际产品数量,该值将在后续梯级中用于跟踪批次状态。 网络2: 在网络 2 中,我们使用来自计数器块输出 CV 的批次 1 逻辑。 在这里,我们使用比较器对第 1 批的 10 个盒子进行计数,当完成时,第 1 批完成的灯 (Q0.1) 将亮起。 在此添加等于比较器,其中输入为 (MW2) 且适用于 10 个产品。 网络3: 在网络 3 中,我们使用来自计数器块输出 CV 的批次 1 逻辑。 在这里,我们使用比较器对第 2 批的 20 个盒子进行计数,当完成时,第 2 批完成的灯 (Q0.2) 将亮起 这样我们就可以决定生产多少产品和批次。 运行时测试用例 注:以上 PLC 逻辑提供了 PLC 在工业生产记录中应用的基本思路。 逻辑是有限的,不完整的应用。
  25. 这是使用 S7-1200 PLC 的注水和排水过程的 PLC 程序。 充水及排水过程 问题描述 在许多行业或工厂中,有大量的手动注水系统用于储水。 手动系统存在准确性、延时问题、液体损失、耗时等诸多缺点。 而且由于是手动系统,我们必须安排一名操作员来进行机器操作。 手动系统造成水浪费 这里我们讨论的是半自动系统。 图表 PLC 解决方案 为了解决这个问题,我们将使用 S7-1200 PLC 进行编程。 这里我们使用两个传感器进行液位测量,一个用于高液位,第二个用于低液位。 我们使用进料阀(MV1)进行罐体的填充循环,使用排出阀(MV2)进行罐体的排出循环。 两者都将根据传感器逻辑进行控制。 因此,当水位低于低水位时,进水阀将自动打开,当水位达到高位且高水位传感器感应到时,排水过程将自动打开。 当检测到高电平时,蜂鸣器将打开以发出警报。 如果用户按下控制面板上的停止按钮,循环将停止。 PLC 输入和输出 数字输入 启动 PB:I0.0 停止 PB:I0.1 TLB 1:I0.3 TLB 2:I0.2 数字输出 循环开启:Q0.0 阀门 MV1(进料):Q0.1 阀门 MV2(排放):Q0.2 搅拌器/混合器 M:Q0.3 蜂鸣器:Q0.4 PLC 充水、放水过程 PLC 程序说明 对于该应用,我们使用 S7-1200 PLC 和 TIA Portal 软件进行编程。 在网络 1 中,我们使用锁存电路来实现周期 ON (Q0.0) 输出。 可通过按 START PB (I0.0) 启动,按 STOP PB (I0.1) 停止。 当循环开始时,系统将检查水箱的液位。 如果罐液位低,则进料过程将开始,罐液位高,则排放循环将开始。 为了简单起见,我们在程序中对两个传感器都采取了无接触方式。 它可以通过现场继电器逻辑来完成,或者您可以使用此类类型的传感器。 当罐检测到低液位时,TLB 2 (I0.2) 将被激活,然后喂食周期将开启。 这里我们采用了TLB1(I0.3)的常闭触点,因此当PLC 检测到高电平时,它将停止进给循环。 当水箱检测到高液位时,TLB 1 (I0.3) 将被激活,放电周期将开启。 这里我们采用 TLB2(I0.2)的常闭触点,因此当 PLC检测到低电平时,它将停止放电循环。 出于混合目的,混合器 M (Q0.3) 在卸料周期期间应处于开启状态。 这里我们还考虑了向高层发出警报以通知操作员。 当检测到 TLB 1(I0.3) 时,蜂鸣器 (Q0.4) 将被激活。 在所有功能期间,循环应为 ON。 运行时测试用例 注:以上 PLC 逻辑提供了 PLC 在注水和放水过程中应用的基本思路。 逻辑是有限的,不完整的应用。
×
×
  • Create New...