Search the Community
Showing results for tags '西门子'.
Found 22 results
-
西门子 跨 PLC 系统传输数据 – TSEND_C 和 TRCV_C
caixiaofeng posted A PLC and HMI Simplified Chinese article in PLC programming learning
在上一篇文章中,我们讨论了如何使用 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 之间的数据传输。 -
西门子 西门子 S7-1200 PLC 硬件配置
leizuofa posted A PLC and HMI Simplified Chinese article in PLC programming learning
S7-1200 PLC 是一种紧凑、模块化且经济高效的解决方案,为中小型自动化应用提供广泛的功能和灵活性。这些功能包括通信选项、内存、CPU 性能和 IO 配置。当您有需要控制的过程时,您应该选择 PLC 并对其进行配置,以最适合您的过程要求。 在本文中,我们将讨论 S7-1200 PLC 的硬件配置,并举例说明如何在西门子 Tia portal 中对其进行配置。 内容: PLC 的硬件配置是怎样的? 硬件配置的重要性。 简单的项目示例。 如何使用给定的示例配置我们的 PLC? CPU 的硬件配置。 IO 硬件配置。 人机界面配置。 结论。 PLC 的硬件配置是怎样的? 硬件配置是指 PLC 的特定组件,例如 CPU、内存、输入/输出 (I/O) 模块、通信端口、电源以及系统可能需要并添加的任何附加模块或附件 。 PLC 的硬件配置还包括启用或禁用某些 CPU 功能,具体取决于设备、其功能以及过程的要求。 PLC 的硬件配置步骤通常涉及以下内容: 根据应用需求选择合适的 PLC 型号。 确定系统的输入/输出要求,包括传感器、执行器以及将连接到 PLC 的其他设备的类型和数量。 选择将用于将 PLC 连接到其他设备和系统的通信协议和网络拓扑。 确定 PLC 及其外围设备的电源要求。 将 PLC 安装在适当的位置并连接所有必要的电缆和电线。 配置 PLC 软件以与硬件组件进行通信并设置适当的逻辑和控制功能。 硬件配置的具体步骤可能会根据 PLC 型号和应用要求而有所不同,但这些是该过程中通常涉及的基本步骤。 在本文中,我们将讨论在 TIA Portal 平台中完成的硬件配置。这意味着我们将假设您了解您的应用程序,并且您已经选择了 PLC 型号和为其供电的电源。您可以参考之前的文章,其中我们讨论了如何选择最适合您的应用的 PLC 和电源。 PLC 中硬件配置的重要性 正确的硬件配置可确保系统可靠且稳健。如果硬件组件配置不正确,它们可能无法按预期工作,从而导致系统故障或错误 硬件配置影响系统的性能。通过选择正确的硬件组件并进行适当的配置,系统可以以最高的效率和速度运行,并可以处理大量的输入和输出。 硬件配置影响系统的可扩展性和灵活性。硬件组件及其配置的选择应考虑到系统未来的扩展或修改,以确保系统能够轻松适应更改或升级。 硬件配置影响系统的成本。通过选择合适的硬件组件和配置,可以避免不必要的成本,并使系统的总体成本最小化。 S7-1200 硬件配置 我们将假设一个简单的 PLC 项目,并在开始编写代码之前了解如何将 PLC 配置到我们的项目中。 使用 PLC 的反应器温度控制系统 该项目涉及使用 PLC 控制反应器的温度。该系统应测量反应器的温度并通过控制冷却液的流量来调节温度。 该项目使用四个热电偶来测量温度,两个电磁阀来控制冷却液的流量,以及一个电机来驱动反应器的叶轮。 输入/输出配置 输入: 热电偶 1 – 4:这些是 4 个模拟输入,用于测量反应器内不同位置的温度。 紧急停止按钮:这是一个数字输入,用于在紧急情况下停止系统。 温度设定点电位计:这是一个模拟输入,允许操作员设置所需的温度设定点。 输出: 电磁阀 1 和 2:这是 2 个数字输出,用于控制冷却液通过反应器管道的流量。 电机控制:这是一个数字输出,用于控制驱动叶轮的电机的速度和方向。 加热器控制:这是控制反应器加热系统的数字输出。 系统操作: 系统等待操作员使用电位计设置温度设定点。 PLC 读取温度设定值并将其与反应器的当前温度(由四个热电偶测量)进行比较。 如果反应器温度低于设定点,PLC 会激活加热器控制输出以升高温度。 如果反应器温度高于设定点,PLC 会激活电磁阀输出之一,以增加冷却液的流量并降低温度。 PLC 持续监控温度并调整加热器和冷却系统以维持所需的设定值。 PLC 还控制驱动叶轮的电机以混合反应器中的内容物。 如果按下紧急停止按钮,PLC 将禁用所有输出并停止系统。 PLC 项目可以进一步扩展和修改,以包含附加功能,例如报警、数据记录或远程监控,具体取决于项目的具体要求。但是,我们不会关心该系统的 PLC 逻辑编码,而是使用此示例来解释如何对 PLC 进行硬件配置以适合我们的项目。 这包括: 选择 PLC CPU。 选择 IO 模块。 将输入和输出标签分配给硬件模块。 为 PLC 分配 IP 以进行通信。 分配保护密码。 配置 PLC 的本地时间。 配置 HMI 并设置与 PLC 的连接。 如何根据给定的示例配置 PLC? 下面我们将讨论使用所需硬件创建基本的 PLC 项目。 CPU 的硬件配置: 选择 CPU: 在 TIA Portal 中启动新项目时,应配置新设备并将其添加到项目中。见图1。 图 1. 为您的项目配置设备 从上图中可以看出,TIA Portal 已经向您显示第一步应该是配置新设备。 在上一篇文章中,我们讨论了如何选择适合您工艺的 PLC,所以这里不再提及,对于我们的项目,因为它是一个简单的项目,我们将选择 CPU 1214C AC/DC/RLY。见图2。 图 2. 将新控制器添加到项目中 中央处理器特性: 根据您为项目选择的 CPU,将提供不同的 CPU 功能和属性。 您可以根据需要启用或禁用这些功能。某些功能需要进行额外的配置。见图3。 图 3 – CPU 特性 正如您在上图中看到的,您可以在项目中为 CPU 设置许多属性。 我们将提到您需要在创建的每个项目中配置的一些属性,其他一些属性仅在特殊情况下使用。 沟通: 这对于任何 PLC 项目来说都是非常重要的配置;您的项目很可能有不同的模块和设备需要相互通信。设置 PLC 和这些设备之间的通信对于您的项目非常重要。 通过选择 CPU,您已经定义了通信方式。有些 CPU 仅适用于 Profinet,有些仅适用于 Profibus,有些则能够同时使用两者。本例中所选的 PLC 仅适用于 Profinet。 从 Profinet 界面,您将为 PLC 设置 IP 地址,该 IP 在项目中应该是唯一的;您不能为两个不同的模块使用相同的 IP。见图4。 图 4 – Profinet 接口 周期: 如您所知,这是 PLC 的另一个重要属性;程序的循环时间取决于您编写了多少代码以及 PLC 执行该代码需要多长时间。 在循环时间属性中,可以设置循环监控时间,如果 PLC 执行程序的时间超过这个设置的时间,那么PLC 就会报错。见图5。 通过此属性,您还可以确定 CPU 的最小循环时间,如果触发了 “启用循环 OB 的最小循环时间”,则可以执行此操作。 然后,您可以写入所需的最小循环时间,PLC 将调整其性能以匹配该时间。当然这个时间受到 CPU 性能的限制,所以你不能把这个时间降低到一定的限制以下。 图 5 – 周期时间属性 系统和时钟存储器位: 系统内存位和时钟内存位是 CPU 内部的内置位,操作系统用于指示 PLC 中的某些事件。 例如,有一个内存位仅在第一次扫描时变为 TRUE,或者如果诊断状态发生变化,则内存位将变为 TRUE,还有一些专用时钟内存位,例如代表 10Hz 时钟的位或代表 10Hz 时钟的位。2Hz的时钟。 这些位在某些应用中非常有用,并且可以节省大量编程代码以获得相同的功能。见图6。 图 6 – 启用系统和时钟存储器位 您可以启用一个或两个内存字节的使用;您还可以确定这些字节的地址,如图所示。 一天中的时间: PLC 的另一个非常重要的属性是设置 PLC 内部的时间。在您制作的几乎所有项目中,您都需要了解实时情况,以便能够分配不同日期的某些操作。 在上一篇文章中,我们讨论了 PLC 内部的本地时间和系统时间以及如何使用它们。CPU 的此属性允许您将本地时间设置为所需的时区。见图7。 图 7 – 当地时间属性 保护和安全: 通过该属性,您可以确定 PLC 的访问级别和密码保护。见图8。 图 8——保护和安全财产 前面提到的属性是您要做的几乎所有 PLC 项目中最常配置的属性。还有一些其他属性不太可能与简单程序(例如 Web 服务器和 OPC UA)一起使用。 项目硬件配置的下一步是配置 IO。 IO 硬件配置: 项目的另一个重要步骤是 IO 的配置,这意味着确定您需要多少个 IO 模块以及需要什么类型的 IO 模块。 在决定 IO 时,您应该考虑一些关键点,例如拥有一些备用 IO 点以及选择适合项目内输入传感器和输出执行器的 IO 模块。见图9。 图 9 – 添加模拟输入模块 正如我们在示例项目中提到的,我们有 4 个热电偶用作 PLC 的模拟输入,因此我需要添加一个至少具有 4 个输入通道的模拟输入模块,因为所选的 PLC 只有 2 个模拟输入通道。 另外,热电偶是一种特殊类型的模拟输入,需要专用的输入模块。这就是为什么我们选择 AI 8xTC 模块,它有 8 个输入通道,专用于与热电偶一起使用;我们选择 8 通道模块,4 通道模块有备用通道供将来需要扩展项目时使用。 如果您转到 AI 8xTC 模块的属性,您将看到您可以单独配置每个输入通道,您可以选择热电偶类型、测量范围和其他属性。见图10。 图 10 – 配置输入模块 接下来,您需要定义 IO 标签,并将每个输入或输出分配给 PLC 或 IO 模块中的正确 IO 点。见图11。 图 11 – 分配输入标签 然后继续分配其余的输入和输出标签,见图 12 和 13。 图 12 – 为 PLC 分配输入标签 图 13 – 将输出标签分配给您的项目 人机界面配置 您的 PLC 项目可能需要 HMI,选择 HMI 后,您可以进行不同的配置。 本文仅介绍如何配置 HMI 与 PLC 之间的通讯。从上图可以看出,您通过添加新设备来选择 HMI,然后选择 HMI。见图 14。 图 14 – 选择 HMI 设置 HMI 和 PLC 之间的通讯有多种方法,但最简单的方法是通过网络视图页面。见图 15。 图 15 – 设置 HMI 连接 在网络视图页面中,您只需从 HMI 上单击代表 Profinet 的绿色小方块并将其拖至 PLC 即可设置 HMI 和 PLC 之间的连接。 然后,TIA Portal 将在两个模块之间绘制一条绿线,并自动为 HMI 提供 IP 地址以设置它们之间的通信。 结论 硬件配置是任何 PLC 项目中非常关键的一步。 PLC 的正确硬件配置将确保满足项目所需的功能。 硬件配置包括选择 IO 模块、启用或禁用某些 CPU 属性以及使用 PLC 配置不同的设备(例如 HMI)。 -
西门子 西门子如何从物理 PLC 进行程序备份?
caixiaofeng posted A PLC and HMI Simplified Chinese article in PLC programming learning
在本文中,我们将展示如何使用西门子 Tia Portal 软件将程序从物理 PLC 备份到您的计算机。 内容: 为什么需要备份? 如何从 PLC 进行备份? 关于从 PLC 备份的注意事项 结论 为什么需要备份? 想象一下,如果您在使用软件时不小心从 PC 中删除了软件。或者您可能需要对已运行 10 年的某些流程软件进行更新,并且您不再拥有软件代码。 与其从头开始重写整个代码,不如直接上传当前代码并对其进行更改,这样会更容易。 在本文中,我们将展示如何轻松地将 PLC 中包含的软件上传到您的 PC。 如何从 PLC 进行备份? 与使用 S7-300 或 S7-400 等旧控制器相比,使用新型西门子控制器 S7-1200 和 S7-1500 的 TIA Portal 在备份时具有更多优势,使用旧控制器时,您可以进行备份,但不会显示任何注释或寻址详细信息,软件可以正常工作,但难以阅读或理解。 使用较新的 PLC 控制器,您现在可以上传代码以及所有相关的寻址和注释,这将使阅读代码变得非常简单,并可以对其进行任何更新。 从 PLC 上传软件的步骤 创建一个新项目,但与我们通常所做的不同,我们不会添加新设备,而是按 “在线” 并选择 “将设备上传为新站”。见图 1。 图片 1 – 将设备上传为新站。 这将带您将设备上传到 PG/PC 窗口。参见图片 2。 图片 2 – 上传设备窗口。 您需要选择上一张图片中所示的 PG/PC 接口类型,然后按“开始搜索”。 搜索完成后,您将看到软件找到的所有设备。请注意,不必只查找 PLC;您还可以找到 HMI、IO 模块以及软件可以检测到的所有其他通信模块。参见图片 3。 图片 3 – 扫描完成并找到设备。 扫描完成后,您可以选择需要上传的 PLC,然后按“上传”。这将开始将软件从 PLC 上传到您的 TIA Portal。参见图片 4。 图片 4 – 从 PLC 上传完成。 从上一张图片中可以看到,保存在 PLC 上的完整项目将上传到您的 TIA Portal。甚至包括所有注释和地址。参见图片 5。 图片 5 – PLC 项目已上传 如您所见,整个 PLC 项目已从 PLC 上传到您的 PC。包括所有块、注释和项目配置。 关于从 PLC 备份的注意事项 如果您的 PC 和 PLC 具有不同的 IP 地址,TIA Portal 将要求您为 PC 分配一个与 PLC 寻址相匹配的新 IP,如果您允许,它甚至会自动执行此操作。 如果 PLC 上的项目受密码保护,则在上传步骤开始之前会要求您输入此密码,如果您无法提供正确的密码,则上传将无法启动。请确保您知道该密码(如果有)。 有时,TIA Portal 会找到您的 PLC,但由于各种原因无法上传项目,例如,PLC 上的项目是用与您当前使用的 TIA Portal 版本不同的版本编写的。无论哪种情况,都会向您显示上传失败的原因,一旦这些原因被清除,您就可以上传。 结论 您可以使用 TIA Portal 将 PLC 上的项目上传到您的 PC。 如果 PLC 是 s7-1200 或 s7-1500,则将上传项目以及所有相关寻址和注释。 如果有任何原因阻止 TIA Portal 上传项目,TIA Portal 会向您显示此原因,一旦您解决问题,您就可以上传。 -
西门子 西门子 PLC 在 TIA Portal 中使用时钟存储器位
caixiaofeng posted A PLC and HMI Simplified Chinese article in PLC programming learning
在本文中,我们将介绍 TIA Portal 和西门子 PLC 中的时钟存储器位。我们将展示如何启用内存位的使用,以及它如何帮助您避免编码大量逻辑线以获得 PLC 内部已完成的简单功能。 内容: 什么是时钟存储器位? 需要时钟存储器位。 在我的项目中启用时钟内存。 简单的程序示例。 程序模拟。 结论。 什么是时钟存储器位? 时钟存储器是一种以 1:1 的比率周期性地改变其二进制状态的位存储器。这仅仅意味着它以预定义的频率定期在 true 和 false 之间更改其状态。 CPU 中预定义了 8 个时钟存储器位,这就是它们也称为时钟存储器字节的原因。 当您启用内存字节并分配时钟内存参数时,您可以决定 CPU 的哪个内存字节将成为时钟内存字节。 对时钟存储器位的需求 您不一定需要时钟存储器,因为您可以创建自己的逻辑并实现相同的功能。然而,当您需要此类功能时,将其放在口袋里是一件好事。因为为 8 个时钟存储器位创建 8 个独立的逻辑将花费您的一些时间和精力,并且可能会使您的程序变得不必要的大。 例如,您可以使用时钟存储器来激活闪烁的指示灯或启动定期重复的操作,例如记录实际值。 时钟位存储器字节的每一位都被分配一个频率。参见下表。 时钟存储器字节的位 7 6 5 4 3 2 1 0 周期(秒) 2.0 1.6 1.0 0.8 0.5 0.4 0.2 0.1 频率(赫兹) 0.5 0.625 1 1.25 2 2.5 5 10 表 1. 根据 TIA Portal 帮助手册的时钟存储器位频率。 在西门子 PLC 中启用时钟存储器 要在逻辑中使用时钟存储器位,您需要从 CPU 的属性中启用时钟存储器字节的使用。见图1。 图 1 – 启用时钟存储器字节 您可以选择要分配给时钟存储器的字节地址,只需确保它不与 PLC 逻辑中的任何其他存储器字节冲突即可。 从图中可以看出,我们选择了地址 0,因此如果您需要使用 2Hz 时钟位,您将使用位 %M0.3 Tia Portal 传送带示例程序 在上一篇文章中,我们使用了一个简单的示例,即传送带在传送带的起点和末端之间移动产品。当皮带运行时,LED 指示灯会亮起。见图2。 图 2 – 简单的传送带系统 我们将使用相同的示例,但这次我们将使用时钟内存位使 LED 更加直观。这次我们将使用带有 LED 的时钟存储器位来指示过程的不同情况。 流程说明 在由 PLC 控制的传送带系统中,传送带的两端有两个存在传感器来检测产品的存在,当在传送带的起始处检测到产品时,可以通过启动来启动传送带 按钮,当产品到达末端时,皮带将自动停止,并且不会再次运行,直到在开始时再次检测到新产品并按下“开始”按钮。 根据系统的当前情况,指示 LED 应该具有多种行为。 这些情况如下: 如果传送带起始处有产品,但尚未按下 START,则 LED 应以 0.5Hz 的频率闪烁。 如果传送带正在移动产品,LED 应以 2Hz 的频率闪烁。 当产品到达传送带末端时,LED 应亮起 当产品从末端取出时,LED 将熄灭。 项目 IO 我们有 4 个数字输入,如下所示: 启动:启动按钮以运行输送机。 停止:停止按钮可随时停止输送机。 P1:皮带起始处的存在传感器。 P2:皮带末端的存在传感器。 我们还有 2 个数字输出,如下所示: 电机:启动后,传送带将开始运行。 LED:将按照前面提到的顺序激活。 程序代码 首先,我们选择 PLC 并分配 IO 标签。见图3 图 3 – 分配输入和输出标签 不要忘记启用时钟存储器字节的使用,如图 1 所示。 我们将有两个代码网络,一个用于控制传送带,另一个用于 LED 逻辑。逻辑见图4和图5。 图 4 - 传送带的控制逻辑 图 5 - LED 的控制逻辑 正如您所看到的,使用时钟存储器位使逻辑变得简单且易于阅读。想象一下,如果您在不使用这些位的情况下创建相同的逻辑,您将使用大量计时器,并且您的逻辑将相当复杂。 程序模拟 我们之前解释过如何使用 PLCSim 来模拟我们的代码。在此示例中,我们将使用模拟序列来创建与实际过程相同的序列,并查看 LED 行为是否与预期功能匹配。 首先编译我们的代码并开始新的模拟。见图6。 图 6 – 程序模拟 如您所见,LED 现在已关闭;传送带的起点或终点没有产品。 我们创建了一个模拟序列,并观察 LED 对不同工艺条件的反应。请看下面的动画。 看看您是否能注意到 LED 行为如何随不同过程条件而变化。 结论 时钟存储器位以预定义的频率打开和关闭。 当您需要激活闪烁的指示灯或启动定期重复操作时,它们非常有用。 使用时钟存储器位可以节省您通过自己的逻辑获得相同功能所需的时间和精力。 -
西门子 西门子 PLC 固件版本是什么?
caixiaofeng posted A PLC and HMI Simplified Chinese article in PLC programming learning
在这篇文章中,我们将讨论当您开始对 PLC 进行编程时经常出现的一个主要问题,即固件版本的常见错误以及如何处理它们。 内容: PLC 的固件版本是多少? 为什么固件版本会引起问题? 如何知道硬件 PLC 的固件版本? 如何处理固件版本错误? 结论。 PLC 的固件版本是多少? PLC 或 PLC 模块(IO、通信模块等)的固件只是安装在 PLC 中的内部软件,负责硬件的实际功能。 固件版本将决定您的 PLC 具有哪些内部功能,例如安全协议、内部优化功能、更好的时间处理以及其他不同的特性和功能。 具有旧固件版本的 PLC 将比新固件版本的 PLC 具有更少的功能和内部功能。 图 1 和图 2 向您展示了相同的硬件 PLC 在安装不同固件版本时如何具有不同的功能和性能。 图 1 – 固件版本 V4.0 图 2 – 固件版本 V4.4 您是否注意到,现在只需更新到更高的固件版本,同一 CPU 就可以添加更多功能?借助更高版本的固件 V4.4,CPU 现在在其性能能力中添加了 OPC UA 等功能。 为什么固件版本会引起问题? 看,您通常通过选择 PLC 来启动 PLC 项目,然后开始编程。 您将根据以下两点之一在 TIA Portal 中选择 PLC: 您已经购买了硬件 PLC,因此您将选择与 TIA Portal 项目中实际拥有的相同的 PLC。 您还没有购买 PLC,因此您将在 TIA Portal 中选择符合您要求的 PLC,然后再购买。 在这两种情况下,如果 TIA Portal 项目中选择的 PLC 固件版本与实际硬件的固件版本不同,则会出现问题。而且您的程序甚至不会下载到硬件 PLC 中。 因此,您应始终确保实际 PLC 的固件版本与 TIA Portal 中选择的 PLC 相匹配。 值得一提的是,如果 TIA Portal 中选择的固件版本比实际 PLC 旧,您的程序不会遇到任何问题,您将失去一些 PLC 特性和功能,但您的程序将正常工作 。 如果相反,就会出现问题,如果 TIA Portal 中选择的固件版本比实际 PLC 更新,那么就会出现问题。 因此,如果您不知道硬件的固件版本,则应在 TIA Portal 项目中选择旧版本。 如何知道硬件 PLC 的固件版本? 我们可以通过以下两种方法之一了解我们拥有的硬件 PLC 的固件版本: 从 PLC 本身 任何 PLC 模块的固件版本始终写入硬件设备上的某个位置。请参阅接下来的图片。 图 3 – 固件版本 FS:04 图 4 – 固件版本为 V7.0.5 从 TIA Portal 软件 使用 TIA Portal 软件,您可以将 PLC 连接到 TIA Portal 并搜索设备,然后您可以找到硬件设备的固件版本,请参阅以下步骤。 您甚至不必创建一个新项目;只需 TIA Portal 的项目视图就足够了,见图 5。 图 5 – 未创建项目的 TIA Portal 的项目视图。 通过在线访问搜索您的 PLC。由于 TIA Portal 和 PLC 之间是通过以太网电缆连接的,因此我们将使用以太网连接选项。双击更新可访问设备开始搜索您的 PLC。见图6。 图 6 – 更新可访问设备以搜索您的 PLC。 如果 PLC 和 TIA Portal 之间存在连接,则软件应找到您的 PLC。见图7。 图 7 – 软件已找到您的 PLC。 现在,双击在线和诊断以显示 PLC 的信息。见图8。 图 8 - PLC 在线信息。 从常规属性中,您可以找到 PLC 的固件版本,如上图所示。 您还可以从“功能”属性中找到固件版本。见图9。 图 9 – 功能属性中的固件版本。 如何处理固件版本错误? 首先,让我们创建一个固件版本错误场景,然后我们将了解如何处理和修复此错误。 我们将首先创建一个新项目,然后添加一个新设备,在此 PLC 示例中,我们将有意选择比实际硬件 PLC 更新的固件版本。我们知道我们的 plc 固件是 V4.0,但是在 TIA Portal 中我们将选择 V4.4 固件版本。见图10。 图 10 – 添加具有更高固件版本的新 PLC。 按“确定”添加您的设备,就这样,您已经创建了一个会导致固件错误的情况。为了看到这一点,让我们尝试将项目下载到我们的 PLC 中。 请注意,我们甚至还没有编写任何代码。只需下载到 PLC 即可。见图11。 图 11 – 下载到 PLC 失败,固件不兼容。 从上图可以看出,一旦尝试将项目下载到PLC,就会出现错误,指出 PLC 和 TIA Portal 的固件版本不匹配。 如果您尝试上网,甚至可以看到它。见图12。 图 12 – PLC 处于错误状态。 要解决此错误,我们只需将 TIA Portal 项目中选择的 PLC 的固件版本更改为旧版本或与实际硬件 PLC 相同的固件即可。 为此,我们转到 PLC 的属性页面,然后从常规属性中选择更改固件版本。见图13。 图 13 – 更改固件版本选项。 按下更改固件版本按钮后,将出现更改设备窗口;在此窗口中,您将能够更改固件版本。见图 14。 图 14 – 更改设备窗口。 在更改设备窗口中,您将看到您之前选择的当前设备以及您需要将其固件与您实际拥有的设备进行匹配的新设备。 请注意,当选择较低的固件(例如 V4.3)时,窗口底部的信息将向您显示在降级到较低固件时丢失的功能,如上图所示。 现在,将新设备的固件更改为 V4.0 版本的硬件 PLC。请注意,仅仅选择较低的固件,PLC 就失去了多少特性和功能。见图 15。 图 15 – 匹配硬件 PLC 和软件之间的固件。 按“确定”确认更改,然后尝试再次将项目下载到 PLC。您会注意到,现在项目将被加载到 PLC,没有任何错误。见图16。 图 16 – 项目被加载到 PLC 中。 将项目成功加载到 PLC 表明固件版本错误现已修复。您还可以在线查看 PLC 项目的在线视图。见图17。 图 17 – 该项目的在线视图。 您在上图中看到的绿色勾号和圆圈表示软件和硬件的所有配置都匹配并且彼此兼容。 结论 在 TIA Portal 中创建新项目时,固件版本错误是非常常见的问题。 最佳实践是了解您所拥有的硬件设备的固件版本,并将其固件与 TIA Portal 中选定的设备进行匹配。 如果您不知道硬件设备的固件,则应选择 TIA Portal 中所选模块的最旧版本。避免您的项目出现任何固件问题。 -
西门子 西门子 S7-1500、S7-1200、S7-400、S7-300 PLC 概述
leizuofa posted A PLC and HMI Simplified Chinese article in PLC programming learning
西门子是一家著名的跨国公司,业务涉及能源、医疗保健、交通和工业自动化等多个行业。西门子成立于 1847 年,现已发展成为一家在多个国家开展业务的全球性公司。西门子以其创新产品和服务而闻名,并被公认为世界上最具可持续发展能力的公司之一。 在本文中,我们将概述西门子 PLC,它只是西门子在工业自动化领域各种产品中的一小部分。 内容: 西门子在工业自动化领域。 西门子不同的 PLC 系列。 西门子 S7 PLC 概述。 西门子 S7-1200。 西门子 S7-1500。 西门子 S7-300。 西门子 S7-400。 西门子 S7-ET 200 CPU 为什么有很多不同的型号? 如何确定哪种类型的 S7 PLC 最适合我的应用? 结论。 西门子在工业自动化领域 西门子是工业自动化领域的领导者,以其高品质的产品和解决方案而闻名。该公司提供广泛的工业自动化产品,包括可编程逻辑控制器(PLC)、人机界面(HMI)、变频驱动器(VFD)和工业通信网络。 西门子还提供工业自动化软件解决方案,例如全集成自动化 TIA Portal,它是一种将所有自动化软件工具集成在一个平台中的工程框架。此外,西门子还开发了自己的工业物联网 (IIoT) 平台,称为 MindSphere,该平台能够收集和分析工业环境中连接设备的数据。 西门子不同的 PLC 系列 西门子开发了两个主要的 PLC 系列,它们是: Simatic S5 系列 PLC Simatic S7 系列 PLC Simatic S5 系列是西门子的上一代 PLC,目前仍在一些较旧的工业系统中使用。但已不再生产。 Simatic S7 系列是目前的西门子 PLC。它提供各种具有不同性能和功能级别的 CPU,以满足不同的自动化需求。S7系列以其可靠性、坚固性和灵活性而闻名,广泛应用于汽车、食品饮料、制药等行业。 西门子 S7 PLC 概述 西门子 S7 系列 PLC 提供了各种具有不同性能和功能级别的 CPU,以满足不同工业自动化过程的需求,这些 CPU 将属于以下子系列之一: 西门子 S7-1200 Simatic S7-1200 是一款紧凑型 PLC,专为中小型应用而设计。它以其紧凑的设计、集成的通信和编程选项提供了灵活且经济高效的自动化解决方案。 西门子S7-1500 Simatic S7-1500 是一款高性能 PLC,专为中型到大型应用而设计。 它提供运动控制、安全和安保等高级功能,使其适合复杂的自动化任务。 西门子 S7-300 Simatic S7-300 是一款模块化 PLC,可轻松适应各种应用。它提供高处理能力、广泛的通信选项和广泛的 I/O 模块,使其成为许多行业的热门选择。 西门子 S7-400 Simatic S7-400 是一款高性能 PLC,专为需要高处理能力和广泛通信功能的苛刻应用而设计。它提供大量 I/O 模块、冗余选项和高级诊断功能,使其适合复杂的自动化任务。 西门子 S7-ET 200SP Simatic S7-ET 200SP 是一款紧凑型远程 I/O 系统,可轻松与其他 Simatic S7 PLC 集成。它提供高度的灵活性、可扩展性和模块化,使其适合各种自动化应用。 当您在 TIA Portal 中创建新项目并尝试添加新设备时,您可以找到不同 S7 系列的所有可用且受支持的 CPU。见图1。 图 1 – Simatic S7 系列中提供了不同的 PLC S7-1200 PLC Simatic S7-1200 是一款多功能且经济高效的 PLC,提供多种型号以满足不同的自动化需求,使其成为中小型应用的热门选择。 以下是 S7-1200 系列不同型号的概述: Simatic S7-1200 CPU: 这些是 S7-1200 系列中的标准 CPU,有不同的版本,包括 CPU 1211C、CPU 1212C、CPU 1214C、CPU 1215C 和 CPU 1217C。它们提供比基本控制器更高级的功能,包括内置通信接口和附加 I/O 选项。它们还有不同的版本,包括 DC/DC/DC、DC/DC/RLY、AC/DC/RLY 和 AC/DC/TC。它们的功能有限,但非常适合简单的控制任务。 Simatic S7-1200 安全集成: 这是 S7-1200 的安全认证版本,包含安全相关功能,例如安全输入、安全输出和安全通信,以增强自动化系统的安全性。 Simatic S7-1200 SIPLUS: 这是 S7-1200 的加固版本,设计用于在极端温度、湿度和振动的恶劣环境中运行。 S7-1200 的不同型号见图2。 图 2 – 不同型号的 S7-1200 CPU S7-1500 PLC Simatic S7-1500 是一款功能强大的 PLC,提供一系列型号来满足不同的自动化需求,使其成为要求苛刻的应用的热门选择。 以下是 S7-1500 系列不同型号的概述: Simatic S7-1500 标准 CPU: 这些是 S7-1500 系列中的标准 CPU,有不同的版本,包括 CPU 1511-1 PN、CPU 1513-1 PN、CPU 1515-2 PN 和 CPU 1518-4 PN。它们提供高速处理和先进的通信选项,例如 Profinet、Profibus 和工业以太网。 Simatic S7-1500 安全集成: 这是 S7-1500 的安全认证版本,包含安全相关功能,例如安全输入、安全输出和安全通信,以增强自动化系统的安全性。 Simatic S7-1500 高级控制器: 这些是 S7-1500 的高级版本,提供附加功能,例如运动控制、高速计数和高级通信选项。 Simatic S7-1500 T-CPU: 这是 S7-1500 CPU 的高级版本,具有扩展的运动控制功能,例如运动功能以及齿轮传动和凸轮功能。 Simatic S7-1500 TM NPU: 这是一个神经处理单元 (NPU),专为机器学习和人工智能 (AI) 应用而设计,例如预测性维护、质量控制和流程优化。 S7-1500 的不同型号见图3。 图 3 – S7-1500 的不同型号 S7-300 PLC Simatic S7-300 CPU: 这些是 S7-300 系列中的标准 CPU,有不同的版本,包括 CPU 312C、CPU 313C、CPU 314C、CPU 315-2DP、CPU 317-2DP 和 CPU 319-3PN/DP。它们提供高处理能力、先进的通信选项和广泛的 I/O 选项。 Simatic S7-300 故障安全 CPU: 这些是经过安全认证的 S7-300 CPU 版本,包含安全相关功能,例如安全输入、安全输出和安全通信,以增强自动化系统的安全性。 Simatic S7-300 紧凑型 CPU: 这些是 S7-300 CPU 的紧凑版本,尺寸更小,功耗更低,非常适合空间和电源有限的应用。 Simatic S7-300 技术 CPU: 这些是专门为特定自动化应用(例如运动控制、温度控制和过程控制)而设计的专用 CPU。 Simatic S7-300 分布式控制器: 这些模块化控制器提供分布式 I/O 和通信选项,非常适合需要分布式自动化的应用。 S7-300 的不同型号见图4。 图 4 – S7-300 的不同型号 S7-400 PLC Simatic S7-400 CPU: 这些是 S7-400 系列中的标准 CPU,有不同的版本,包括 CPU 412-1、CPU 414-1、CPU 414-2、CPU 416-2 和 CPU 417-4。它们提供高处理能力、先进的通信选项和广泛的 I/O 选项。 Simatic S7-400H CPU: 这些是高可用性 CPU,提供冗余选项以增强自动化系统的可用性和可靠性。 Simatic S7-400F/FH CPU: 这些是经过安全认证的CPU,包含安全相关功能,例如安全输入、安全输出和安全通信,以增强自动化系统的安全性。 Simatic S7-400 分布式控制器: 这些模块化控制器提供分布式 I/O 和通信选项,非常适合需要分布式自动化的应用。 S7-400 的不同型号见图5。 图 5 – S7-400 的不同型号 西门子 S7-ET 200 PLC Simatic S7-ET 200 CPU: 这些是 S7-ET 200 系列中的标准 CPU,有不同的版本,包括 CPU 1511C-1 PN、CPU 1513-1 PN 和 CPU 1515-2 PN。它们提供高处理能力、先进的通信选项和广泛的 I/O 选项。 Simatic S7-ET 200F CPU: 这些是经过安全认证的 CPU,包含安全相关功能,例如安全输入、安全输出和安全通信,以增强自动化系统的安全性。 Simatic S7-ET 200SP CPU: 这些是紧凑型 CPU,尺寸更小,功耗更低,非常适合空间和电源有限的应用。 S7-ET200 的不同型号见图6。 图 6 – S7-ET200 不同型号 为什么有很多不同的型号? 西门子 S7 PLC 有许多不同的型号,为客户提供了广泛的选项和功能可供选择,使他们能够选择最适合其特定自动化需求的 PLC。 不同的型号提供不同的功能、处理能力、内存、通信选项和 I/O 功能。一些模型是为特定应用而设计的,例如运动控制、温度控制和过程控制,其他模型是为通用自动化系统而设计的。 此外,随着技术的进步和新的自动化需求的出现,西门子不断开发和发布具有增强特性和功能的新型号和版本的 S7 PLC,为客户提供最新的自动化技术,帮助他们提高生产力、降低成本、增强生产力。他们的系统的性能。 如何确定哪种类型的 S7 PLC 最适合我的应用? 为您的应用选择正确的 S7 PLC 类型需要仔细考虑几个因素。以下是一些常规步骤,可帮助您确定哪种类型的 S7 PLC 最适合您的应用: 确定自动化系统的规模和复杂性: 如果您拥有大型且复杂的自动化系统,则可能需要高性能 PLC,例如可以处理大量 I/O 点和高级通信选项的 S7-400 或 S7-1500。如果您的系统较小且不太复杂,则较小的 PLC(例如 S7-1200 或 S7-300)可能就足够了。 确定所需的 I/O 类型并计数: 每个 S7 PLC 都有不同范围的 I/O 选项和容量。您需要确定应用程序所需的 I/O 点的类型和数量,并选择可以支持它们的 PLC。 考虑所需的处理速度和性能: 不同的 S7 PLC 具有不同的处理速度和性能能力。您需要确定所需的处理速度并选择能够满足您的性能要求的 PLC。 评估所需的通信选项: 不同的 S7 PLC 提供不同的通信选项,例如以太网、Profibus、Profinet 和 AS-i。您需要确定应用程序所需的通信协议,并选择可以支持它们的 PLC。 考虑所需的安全功能: 如果您的应用需要安全功能,例如安全输入、安全输出和安全通信,您可能需要经过安全认证的 PLC,例如 S7-1500F 或 S7-400F。 结论 西门子提供广泛的工业自动化产品,包括具有不同功能和性能的各种型号的 PLC,包括 S7-1200、S7-1500、S7-300 和 S7-400 CPU。 西门子 S7 PLC 有多种不同型号,为客户提供了广泛的选项和功能可供选择。 选择最适合您流程的 PLC 型号需要在选择 PLC 之前考虑一些要点,其中一些要点是 IO 数量、安全要求和通信选项。 -
西门子 西门子 Tia Portal – OB121 编程错误中断组织块
leigehong posted A PLC and HMI Simplified Chinese article in PLC programming learning
在本文中,我们将继续讨论西门子 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 来识别错误并解决它。 -
西门子 西门子 Tia Portal – OB100 启动组织块
leigehong posted A PLC and HMI Simplified Chinese article in PLC programming learning
在之前的文章中,我们开始讨论 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 来初始化参数、校准传感器,甚至在允许流程运行之前检查安全条件。 -
西门子 西门子 Tia Portal – OB30 循环中断组织块
leigehong posted A PLC and HMI Simplified Chinese article in PLC programming learning
在之前的文章中,我们讨论了不同类型的组织块,例如主 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 的偏移设置 结论 循环中断对于不应该面临任何延迟的时间关键任务非常有用。 您的逻辑中可以有多个循环中断。 使用循环中断的偏移设置来避免同时启动时间。 使用优先级设置来控制不同循环中断的执行顺序。 -
西门子 西门子 Tia Portal – OB20 延时中断组织块
leigehong posted A PLC and HMI Simplified Chinese article in PLC programming learning
在之前的文章中,我们讨论了什么是组织块,并讨论了主循环中断 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。 -
西门子 西门子 Tia Portal – OB10 时钟中断组织块
leigehong posted A PLC and HMI Simplified Chinese article in PLC programming learning
在上一篇文章中,我们讨论了什么是组织块,并且谈到了一个非常重要的组织块,它就是主 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,因为这取决于您的流程和逻辑。是的,您可以使用您的个人代码实现相同的功能,但它是一个可用且易于使用的内置函数。而且你知道如何使用它。 -
西门子 西门子 TIA Portal — OB1 主要循环组织块
leigehong posted A PLC and HMI Simplified Chinese article in PLC programming learning
在之前的文章中,我们讨论了 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 次所用的时间。 -
西门子 西门子 Tia Portal – 优化和标准的数据块访问
leigehong posted A PLC and HMI Simplified Chinese article in PLC programming learning
在上一篇文章中,我们讨论了数据块,我们讨论了两种不同类型的数据块,全局数据块和功能块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 中,您只能将整个块定义为保持性。 结论 与标准数据库相比,优化数据块有很多优点。在向块添加新变量时,使用符号名称有助于避免标签的任何地址更改。 通过优化块,不会丢失任何内存区域。与使用标准数据库时发生的情况相反。 -
西门子 西门子 Tia Portal – 调用功能块的不同实例
leigehong posted A PLC and HMI Simplified Chinese article in PLC programming learning
在上一篇文章中,我们讨论了什么是功能块 FB、它在 PLC 程序中如何工作以及如何创建和使用功能块 FB。在本文中,我们将讨论西门子 Tia Portal 中不同功能块类型的数据块实例以及何时使用每种类型。 内容: 什么是功能块 FB? 数据实例的不同选项。 单实例。 参数实例。 多实例。 什么是功能块? 功能块或 FB 只是包含代码逻辑的块。您可以使用该 FB 通过编写在其中的代码片段来实现特定的功能。 当在代码中调用功能块时,系统会要求您分配一个数据块(也称为数据实例)与该 FB 关联,以保存 FB 参数的值。并非 FB 内的所有参数都保存在数据实例中,但我们稍后会讨论这一点。 调用功能块时,您有 3 个不同的选项用于将数据块实例与此函数调用相关联。这些不同的选项将取决于您调用 FB 的位置。 所以,简而言之。功能块FB基本上是具有专用数据块 DB 的功能 FC,该数据块用于存储功能块参数的值。 数据实例的不同选项 对于功能块的数据实例,我们有 3 个不同的选项,这些选项是: 单实例。 参数实例。 多实例。 三个不同的调用数据实例来自 3 种不同的调用方法: 您可以在主 OB1 内调用功能块 FB,这将为您提供以下选项: 单实例。 您可以在功能 FC 内调用功能块 FB,这将为您提供两种选择 单实例 参数实例 您可以在另一个功能块内调用该功能块,这将为您提供创建数据实例的三个可用选项 单实例 参数实例 多个实例 单个数据实例 首先,让我们从创建一个功能块 FB 开始,正如我们之前提到的,我们通过单击 “添加新块” 并选择我们想要的块类型来创建一个功能块。见图1。 图 1 – 创建功能块 FB 现在,我们将在主 OB1 中创建的 ReusableFB 称为 ReusableFB。见图2。 图 2 – 调用主 OB1 内的 FB 正如您从上图中看到的,在主 OB1 内调用 FB 时,系统会要求您分配一个与该 FB 调用关联的数据实例。在这种情况下,只有一个选项,那就是单一实例。 选择单实例选项后,将创建一个数据块并与 FB 调用关联。见图3。 图 3 – 创建的单个实例 创建的单个实例将用于存储一些 FB 参数的值。如输入、输出、In Out 和静态参数。 FB 的其他参数将不会被存储,例如温度和常量。见图4和图5。 图 4 – 数据保存在数据实例内部 图 5 – 从 FB 保存到数据实例的数据。 现在,让我们在 FB 中创建一个简单的逻辑,以帮助我们更好地理解数据实例。该逻辑会将常量值 15 添加到静态变量,然后将结果移至输出。见图6。 图 6 – 创建一个简单的逻辑 现在,返回主 OB1 并注意 FB 调用现在的情况。见图7。 图 7 – 每次更改后更新 FB 调用 您对 FB 内部逻辑所做的任何更改都将导致需要更新功能块调用,以便可以应用您所做的更改。 您可以通过右键单击 FB 调用并按更新块调用选项或重新编译 PLC 代码来更新块调用。见图8。 图 8 – 更新 FB 调用 更新块调用后,您在 FB 代码中所做的更改将在块调用中应用和使用。如图 9 所示。 FB 现在期望提供 bool 类型的输入信号,并且 FB 将给出 int 类型的输出。 图 9 – 输入和输出现在与 FB 调用关联 让我们模拟我们的代码,看看 PLC 将如何运行。请参阅下一个动画,该动画显示了迄今为止 PLC 逻辑的简单模拟。 从动画中可以看出,每当启动信号为 TRUE 时,该函数就会被执行,并且输出不断变化。一旦启动信号不再可用,输出将保持在最后记录的值。 这里数据实例的用途是静态变量和输出变量的值保存在单个实例内,因此当启动信号再次返回时,函数将从最后记录的值继续。 非常重要的注意事项 切勿对 FB 的两次不同调用使用相同的单个实例。请看下一个动画。 正如您从动画中看到的,我们有两个不同的 FB 调用,但两个调用都与同一个实例关联,这就是为什么即使 start2 信号为 FALSE,Output2 值也会随 Output1 变化。 正如您所期望的,第一次调用的数据实例的更改也会在第二次调用中受到影响,因为它们具有相同的内存块。见图10。 图 10 – 切勿在不同的 FB 调用中使用相同的数据实例 如果您对不同的 FB 调用使用相同的数据实例,则您的功能块将不再可重用。即使每个不同的 FB 调用的输入/输出参数都不同。正如您从上一个视频(动画)中看到的那样,即使第二个调用甚至没有启用输入信号,两个调用也具有相同的结果。 另一个非常重要的注意事项 我们之前说过,如果您从更高级别的 FC 调用您的 FB,则关联的数据实例将有两个选项;这些选项是单个实例和参数实例。见图11。 图 11 – 使用带有从 FC 调用的 FB 的单个实例 如果发生这种情况,并且您将在 FC 内调用 FB,则您永远不应该为 FB 使用单个实例。要知道这是为什么。见图12 图 12 – 多次呼叫上级 FC 从图 12 中可以看出,当您在逻辑中多次调用更高级别的 FC 时,不会要求您分配数据块,因为 FC 不需要数据块。 但是你知道 FC 内部有一个叫做 FB 的,这个FB有一个与之关联的单个实例。因此,现在 3 个 FC 调用对于 FB 调用具有相同的数据实例。因此,您的函数 FC 不再可重用。 该怎么办?当您需要在 FC 内调用 FB 时,最佳选择是使用参数实例。 参数实例 正如我们之前所说,如果您在 FC 内调用 FB,则不应选择单个实例,而参数实例更适合您的可重用性目的。 参数实例将保存调用到 FC 块接口的 In Out 区域的 FB 的数据实例。允许您为每个 FC 调用输入新的数据实例。见图 13 和 14。 图 13 – 在 FC 内调用 FB 时分配参数实例 图 14 – 每个 FC 调用都需要一个新的数据实例 从上图中可以看出,每当您在程序中调用 FC 时,它都会为 FC 内的可重用 FB 请求数据实例。 但是,使用这种方式您将必须自己创建数据实例。见图15。 图 15 – 创建一个新的数据实例 要创建新的数据实例,您可以执行与创建 FC 或 FB 相同的操作,但这次您选择 DB 选项。并确保选择的 DB 类型与调用的 FB 相同。 现在,您的 FC 可以根据您的需要多次重复使用,您只需为每次调用创建一个实例即可。见图16。 图 16 – 将 DB 分配给 FC 调用 多实例数据库 多实例 DB 简单来说就是被调用 FB 的 DB 将存储在更高级别调用 FB 的 DB 中。仅当您从另一个 FB 调用一个 FB 时,此选项才可用。 让我们创建另一个 FB 将其用作更高级别的 FB。 创建此 HigherLevelFB 后,从主 OB1 调用它,当然唯一的调用选项将是单个实例,如前所示。见图17。 图 17 – 从主 OB1 调用 UpperLevelFB 现在,从 HigherLevelFB 调用 ReusableFB。并选择多实例选项。见图18。 图 18 – 分配多实例 DB 当您选择多实例选项时,创建的 DB 将存储在调用 FB 的静态参数内。见图19。 图 19 – 实例保存在静态参数内 您可以多次调用 ReusableFB,每次调用它时,多实例都会存储在静态参数中。见图20。 图 20 – 多次调用 ReusableFB 正如您所看到的,下级 FB 的数据实例将保存在上级 FB 的数据实例内。最好有更好的程序结构和易于阅读的逻辑。 结论 在代码中创建功能块需要将数据块与您在逻辑中进行的每个 FB 调用相关联。该数据块或也称为数据实例具有不同的选项,具体取决于调用 FB 的块的类型。 选择数据实例类型时要小心,因为某些选项可能不适合您的情况,如我们之前所示。有时这可能会导致您的逻辑出现问题,并且您的函数无法再重用。 使用多实例可以帮助更好地组织程序结构,因为所有被调用的 FB 都会将其 DB 存储在主调用 FB 中。 -
西门子 在西门子 PLC 之间移动数据
caixiaofeng posted A PLC and HMI Simplified Chinese article in PLC programming learning
在上一篇文章中,我们讲了如何使用开放用户通信在两个 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 块。 -
西门子 在 PLC 中编程和调节 PID 控制器 – 西门子 TIA Portal
leikang posted A PLC and HMI Simplified Chinese article in PLC programming learning
在上一篇文章中,我们讨论了 PID 是什么,还解释了 PID 的不同参数以及系统对更改这些参数将如何反应。在本文中,我们将展示如何在 TIA Portal 项目中编程、配置和调整 PID。 内容: 如何将 PID 添加到您的逻辑中? 如何配置 PID? 基本设定过程值设定 高级设置 如何进行 PID 整定? PID 预整定 微调 PID 的整定方法有哪些? 如何将 PID 添加到您的逻辑中? 在 TIA Portal 和几乎所有其他 PLC 平台中,您无需对 PID 控制器进行编程,因为 TIA Portal 已经具有用于 PID 的内置块。要将 PID 添加到您的逻辑中,您只需将 PID 块拖放到您的代码中,然后开始为您的系统配置它。 将 PID 添加到代码中非常简单,但是,有一个非常重要的点您应该考虑。这是你的 PID 的执行间隔。 如您所知,主执行周期发生在主循环 OB1 内部,OB1 的周期时间取决于很多因素,例如代码的长度、代码中的数学计算以及循环和序列,所有这些 不同的因素会导致 OB1 的周期时间不仅可能会变长,而且每个周期都会有所不同,具体取决于您所使用的编码。 这意味着,如果您在主 OB1 内调用 PID 块,则 PID 执行将取决于 OB1 的循环时间,而这不是最佳实践方法。 PID 通常用于控制压力、温度或速度等物理参数,这意味着您的控制器需要非常快速地找出过程值的任何变化,并采取快速反应来抵消这种变化,并为您提供平稳稳定的结果 PID 应该具有的控制。所以如果 PID 加在主 OB1 上,并且受其执行时间的影响,可能需要动作延迟,这会让你的系统不稳定。 该怎么办? 最佳实践是在循环中断 OB 中调用 PID 块,并将该循环中断的循环时间设置为您认为适合您的系统的任何值,通常在毫秒范围内,具体取决于您的应用。这意味着,如果您将循环中断设置为 1 毫秒,则无论主 OB1 周期在哪里,您的 PID 都会每毫秒调用并执行一次。 因此,为了将 PID 添加到您的逻辑中,我们首先添加一个新的循环中断 OB 并为其指定一个适当的名称。见图1。 图 1. 在您的项目中添加循环中断。 从图中可以看到我们将循环时间设置为 1000 微秒或1毫秒。所以我们的 PID 每毫秒都会被调用并执行。 现在您已将循环 OB 添加到项目中,只需拖放 PID 块即可。您可以在指令选项卡/技术/PID 控制/紧凑 PID 中找到它。见图2。 图 2. 添加 PID 块。 现在,将系统参数添加到 PID 块、输入、输出和设定值。见图3。 图 3. 分配 PID 参数。 您从上一张图片中注意到了吗,您有 2 个不同的输入和 3 个不同的输出,它们是什么? 输入: 这是您以实际物理量表示的过程参数的输入值,我们将使用我们的储罐模拟系统,因此在这种情况下,此处的输入是以升为单位的储罐填充液位。这意味着您已经在项目的其他地方进行了模拟输入缩放,并且只需向 PID 提供以升为单位的实际填充水平。 输入_PER: 这是过程参数的输入值,但来自模拟输入模块。这意味着它不会被缩放,并且它将在 0-27648 的范围内,并且输入的缩放将在 PID 内部完成。 输出: 在这种情况下,PID 将为您提供最大输出值的 0% 到 100% 范围内的控制器输出值。 输出_PER: 与 input_PER 相同,PID 将以 0-27648 的形式给出输出。 输出_PWM: 在这种情况下,PID将以ON/OFF脉冲的形式给出其输出信号,因此要么有输出,要么没有输出。ON 时输出值为 100%,OFF 时输出值为 0%。 我们将使用之前使用的相同坦克模拟系统,正如您从上图中看到的,我们使用了 Input 和 Output_PER,因为我们的模拟就是这样构建的。 如何配置 PID? 要进入 PID 的配置视图,您可以单击项目树中的配置选项卡,也可以单击 PID 块本身上方的小配置图标。见图4。 图 4. 进入配置视图。 这将带您进入功能视图,您可以在其中配置 PID 的不同设置。见图5。 图 5. 控制器类型设置。 第一个配置是控制器类型,在这里您可以选择要使用的控制类型,显示的下拉菜单中有很多选项,例如温度、压力、长度等等。 您还可以将其设置为常规,系统会将您的值视为%。在我们的系统中,我们控制水箱内的水升,因此我们将选择体积。 您还可以设置 PID 的手动/自动模式。 接下来,您要配置输入/输出参数。见图6。 图 6. 输入/输出参数。 在这里,您可以选择不同类型的输入或输出,正如我们之前所解释的。正如我们所说,我们将使用 Input 和 Output_PER。 接下来,您需要配置过程值设置。见图7。 图 7. 过程值限制。 在此步骤中,您将设置过程值的下限和上限。如果您选择输入类型。然后此设置将开放更改,并且您可以设置流程的限制。在我们的例子中,水箱限制为 0 至 50 升。所以我们将其设置为这些值。 请注意,如果您选择 Input_PER,则此设置将不可用,您只能从下一个选项卡设置进程限制。见图8。 图 8. 过程值缩放。 如果您使用 Input_PER,那么如上图所示,您可以根据 0-27648 的缩放比例设置过程值限制。 如果您想在过程值达到下限或上限时设置警告,则可以在过程值监控选项卡中进行配置。见图9。 图 9. 过程值监控。 接下来在设置列表中您将找到 PWM 限制,见图 10。 图 10. PWM 限制 在这里,您可以设置输出的最小开启和关闭时间,假设您的系统中有一个泵或阀门,PID 通过 PWM 输出进行控制,您不希望 PID 只为您的泵提供一个序列 非常快速的开/关行为,因为这可能会导致您的泵烧坏。因此,您可以通过此设置告诉 PID 在关闭泵之前将泵打开最短时间,反之亦然。 如果您没有下一个设置(输出值限制)的 PWM 输出,您可以使用 PID 进行相同的控制。见图11。 图 11. 输出值限制。 您可以控制控制输出的下限和上限,例如,您可以将下限设为 20%,这将使 PID 以至少 20% 的流量运行泵。所以你的控制范围是 20% 到 100%。 最后也是最重要的,您可以在下一个选项卡“PID 参数”选项卡的配置模式下设置 PID 参数,见图 12。 图 12. PID 参数。 如果您知道 PID 增益 P、I 和 D,或者您自己进行了调节并且您从其他地方获得了参数,您可以在此处编写 PID 增益 P、I 和 D 的调节参数。您还可以选择使用 PID 或仅使用 PI 控制器。 如果您没有这些参数,您可以在调整 PID 后自动上传它们。 如何进行 PID 整定? 现在您已完成 PID 配置,您可以从项目树中的调试选项卡轻松调整控制器。见图13。 图 13. 调试 PID 在调试页面,您的屏幕分为三个部分,上面的页面是您可以开始预调节和微调 PID 的地方。 在中间,您将有一个图形区域来显示系统的实时响应。您可以看到控制器输出和过程值。每次设定点发生变化时,您都会看到 PID 捕捉新设定点的行为。即使设定点没有改变,但例如我们的储罐供应需求增加,您也会看到 PID 反应来满足该需求,并将设定点保持在其所需值。 在第三个区域中,您将看到控制器的在线状态,并且您还可以决定 PID 的运行模式。请参见以下模拟视频,该视频显示了 TIA Portal 中 PID 的自动整定过程。 从视频中您可以看到,预调节完成后,我们的 PID 找到了最适合我们系统的 P、I 和 D 参数。您可以看到,当设定点或流出量发生变化时,控制器将非常快速地做出反应,将设定点恢复到所需的值。 现在,您只需单击按钮即可将调整参数直接上传到项目中,见图 14。 图 14. 上传您的参数。 上传参数后,您可以在配置视图的 PID 参数选项卡中找到它们。见图15。 图 15. PID 参数。 然而,下一步应该是从相同的调试视图对 PID 执行微调程序,因为我们没有真正的系统,我们只是使用数学计算来模拟水箱和泵的行为,我们可以 t 进行微调步骤。 当您拥有真实的系统时,您可以进行微调,您的 PID 将尝试找到能够为系统提供更好响应的参数,甚至消除过程值的超调并直接达到设定点。 将来,如果我们有一个真正的系统,我们可以展示它是什么样子。 PID 控制器的整定方法有哪些? 您不必使用 TIA Portal 调整 PID;有许多不同的方法可以尝试为您的系统找到最佳 PID 参数。它主要是基于反复试验的数学方法。我建议使用 TIA Portal 中的自动调整功能。 但这里有一些用于实现相同参数的方法。 启发式调整。 Ziegler-Nichols 调谐方法 Cohen-Coon 调谐方法 Kappa-Tau 调谐方法 Lambda调优方法 还有其他一些。 结论 对 PID 使用循环中断。 配置您的 PID 以最适合您的系统。 TIA Portal 中的自动调节功能非常有用且有效。 -
西门子 使用 I-Device 在西门子 PLC 之间进行通信
caixiaofeng posted A PLC and HMI Simplified Chinese article in PLC programming learning
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 项目数据,请在项目导航中依次选择两个控制器,并将项目加载到相应的模块中。 请注意,由于我们没有实际的硬件设备,因此无法模拟此功能。 -
西门子 西门子 PLC 中的 PUT 命令 – TIA Portal 基础知识
caixiaofeng posted A PLC and HMI Simplified Chinese article in PLC programming learning
在本文中,我们将讨论两个 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。 -
西门子 GET 命令 – 西门子 PLC 到 PLC 通信项目
caixiaofeng posted A PLC and HMI Simplified Chinese article in PLC programming learning
在上一篇文章中,我们讨论了 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。 -
西门子 西门子 PLC 与其他品牌 PLC 的通讯
caixiaofeng posted A PLC and HMI Simplified Chinese article in PLC programming learning
在之前的文章中,我们开始讨论两个或多个 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 之间建立连接。 -
西门子 PLC 定时器编程示例 – TON、TOF、TP 和 TONR
caixiaofeng posted A PLC and HMI Simplified Chinese article in PLC programming learning
讨论 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) 来复位定时器或累计时间。 运行时测试用例 -
西门子 如何排除西门子 PLC 程序故障?
leikang posted A PLC and HMI Simplified Chinese article in PLC programming learning
本文介绍的是 PLC 编程故障排除方法。在使用数千个输入和输出的工业 PLC 中,我们知道 PLC 程序有多长,具体取决于应用程序或工厂使用情况。 西门子 PLC 程序故障排除 有时,人们可能会在不知不觉中改变逻辑参数,从而导致故障。由于设计的复杂性,甚至在逻辑设计阶段也会产生一些错误。西门子 plc 软件有不同的方便工具可用于排除程序中产生的故障。 故障可能包括寻址重叠、多个相同的输出实例、内存位地址重叠、单个程序多次重复工作等。 为了找出此类问题,西门子软件中有四种类型的窗口可以帮助我们解决问题。 他们是: 交叉参考 调用结构 作业清单 依赖结构 让我们讨论如何在我们的程序中使用它们进行故障排除以及在软件中的何处找到它们。 交叉参考 交叉引用用于查找逻辑中使用的所有数字和模拟输入和输出。它将帮助我们了解程序中 I/O 的使用次数,并直接将用户带到逻辑页面中 I/O 的具体位置。 这是其中一个程序的示例,您可以在其中看到交叉引用表的外观。它包含所有信息,如寻址、程序语言、使用的输入和输出等。 调用结构 当您想知道编程中使用哪个块时,请使用调用结构。 这是交叉引用功能的反转,我们可以知道 OB(组织块)中使用了多少次 SFC、FB 块,这里我们可以知道 SFC 和 FB 中使用了多少次 OB。 作业清单 当要了解我们的应用程序中使用了多少输入、输出、计时器和计数器以及其中仍然剩余多少时,分配列表是一个非常有用的功能,以便我们可以在将来的逻辑中使用它们。 依赖结构 依赖结构用于显示编程中每个块的使用位置。 但在第 7 步中,它不会直接带您到位置,但在 TIA PORTAL 中,它会带您到编写程序的位置。 笔记: 要在步骤 7中打开这些窗口,请使用绘图中所示的信息。单击“显示”后,您将看到一些选项。 在 TIA PORTAL 中,按照图中所示的步骤进行操作。