在本文中,我们将讨论 PLC 中的模拟输入信号处理以及如何在自动化过程中处理这些信号。
内容:
- 什么是模拟输入信号?
- S7-1200 和 1500 中的输入模拟量处理。
- S7-300 和 400 中的输入模拟量处理。
- 哪些最适合控制?– 模拟或数字信号
- 结论。
什么是模拟输入信号?
在我们深入了解如何在 TIA Portal 中处理模拟输入信号之前,我们首先了解模拟输入。
任何自动化系统都需要输入信号来了解流程的状态,以便能够做出保持流程运行和稳定的决策。这些输入信号是离散或数字输入信号,其形式为 0 或 1 值。另一种类型的输入是模拟信号。
模拟信号只是系统中物理量的连续表示,因此如果您需要监控过程中的温度或压力,模拟信号将为您提供与物理量的实际变化相对应的连续和瞬时值。
模拟信号有多种标准形式,但最常见的是 0-10V 或 4-20mA。这取决于您使用的模拟传感器的类型,并且还决定您可以使用的 PLC 模拟模块的类型。
假设模拟压力传感器的测量范围为 0-10 bar,输出为 4-20mA。通常,模拟信号在被测量的物理量和相应的输出之间具有线性关系。
这意味着如果传感器测量 0 bar,它将给出 4mA 信号,如果传感器测量 10 bar,它将给出 20mA 信号,并且两者之间的信号也将是线性的。见图1。
图 1 – 模拟信号表示。
PLC 还是看不懂 4-20mA 的物理量,这就到了 PLC 模拟量模块的使用。模拟模块将对这种表示形式进行另一次转换,以便 PLC 能够真正理解它。
模拟模块会将模拟 mA 测量值转换为数字值,具体取决于模块的类型,但对于西门子 PLC,这些值始终在 0 – 27648 范围内。因此,如果传感器测量 0 bar,则输出将为 4mA,在PLC内部会转换为0值。见图2。
图 2 – 输入信号的模数转换
然后,PLC 将根据您的编程将 0-27648 值转换为等效的物理测量值,我们稍后将对此进行介绍。见图3。
图 3 – PLC 内部缩放后的测量值。
温度的模拟处理有很大不同,因为温度传感器的物理变化行为不像液位或压力传感器那样呈线性。这就是为什么不同类型的温度传感器有标准化表格来告诉哪个温度对应于哪个传感器值。
这就是为什么在进行温度测量时,您会选择 PLC 的特殊类型的输入模块,其中这些标准表是内部定义的,您可以直接获得与传感器测量相对应的温度值。
这就是为什么您找不到上面写有电压或电流测量范围的温度传感器。您只会找到所写的传感器类型,例如 PT100、PT1000、KTY84、PTC 等。
S7-1200 和 1500 中的模拟输入处理
为了了解如何在现代 S7 系列 PLC 中处理模拟信号,我们首先创建一个新项目并添加 S7-1200 CPU。我们还将添加一个模拟输入/输出模块。见图4。
图 4 – 添加模拟输入模块。
现在,让我们定义我们的输入信号标签,我们假设一个压力传感器可以测量 0 到 10 bar 之间的压力,并给出 4 到 20mA 之间的相应信号。
我们将在输入模块的第一个标签中定义该输入信号。见图5。
图 5 – 定义输入信号标签。
正如我们之前所说,输入模块可以处理不同的输入信号,无论是0-10V还是4-20mA,因此我们需要为我们的传感器分配正确的配置。
正如我们所说,压力信号以 4-20mA 的形式给出,因此我们将为此配置我们的输入通道。见图6。
图 6 – 配置输入通道
现在我们完成了硬件配置部分,我们将开始编写处理代码。为此,我们将创建一个函数 FC,以便每次有模拟信号需要处理时都可以重用它。在该 FC 内,我们将创建处理模拟信号并将其转换为物理测量值的逻辑。
在 TIA Portal 中,我们可以使用预定义的指令来执行此操作,这些指令是 NORM_X 和 SCALE_X 指令。见图7。
图 7 – NORM_X 和 SCALE_X 指令
如您所见,NORM_X 会将模拟输入标准化为 0 到 1 之间的值,然后 SCALE_X 将用于将此标准化值缩放到测量的物理值的范围,在我们的传感器情况下为 0 到 10 之间 酒吧。
我们使用函数 FC,而不是直接在主 OB1 中编写代码,以使我们的代码可与任何模拟信号重用。每次我有一个新的模拟输入信号时,我只需将 FC 块拖放到我们的主 OB1 中,然后写入所需输入的相关参数。见图8。
图 8 – 拖放您的 FC。
当您将 FC 拖放到主 OB1 中时,系统会要求您提供该函数调用的关联参数。
在我们的例子中,输入信号是压力传感器,ScaledMIN 和 ScaledMAX 是 0-10 bar 的测量值范围。见图9。
图 9 – 为我们的压力传感器分配功能参数。
如果我有一个新的模拟输入,那么我不必再次重新创建 PLC 逻辑,我只需将 FC 拖放到主 OB1 中并分配新的传感器参数即可。
假设我们现在有一个新的模拟传感器,用于测量水箱内水位的 0 % 到 100 % 之间。我们将执行与之前相同的步骤,从定义新的输入标签开始。见图10。
图 10 – 定义新的液位传感器
接下来,我们将像图 6 中那样配置液位传感器的输入通道。我们将假设相同的配置。
接下来,我们将拖放我们创建的 FC,并分配液位传感器的参数。见图11。
图 11 – 重新使用带有液位传感器的 FC。
正如您从上图中看到的,这是在逻辑中使用函数 FC 的众多优点之一,因为它有助于减少我们的编程量。
现在,您拥有了一个通用代码,可以与 PLC 项目中所需的任何输入模拟信号一起多次重复使用。
请参阅西门子 PLC 中输入信号处理的下一个仿真。
S7-300 和 S7-400 中的模拟输入
要了解如何在 S7-300 等较旧的 S7 系列 PLC 中处理模拟信号,我们首先创建一个新项目并添加 S7-300 CPU。
所选的 PLC 已经有足够的模拟量输入通道,所以我们不再添加任何模拟量模块。见图12。
图 12 – 添加 S7-300 PLC。
然后我们将定义新的模拟传感器标签,我们将假设压力传感器的测量范围在 0 到 100 bar 之间,输出为 4-20mA。
我们将像之前对 S7-1200 所做的那样配置 PLC 输入通道,以适应我们的模拟输入传感器。见图13。
图 13 – 配置输入通道。
现在到PLC编码部分,s7-300中用于处理模拟量处理的指令与 s7-1200不同。
在S7-1200 PLC中,我们必须使用NORM_X和SCALE_X。但对于S7-300,我们没有标准化指令,仅使用SCALE指令。见图 14。
图 14 – S7-300 中的 SCALE 指令
从上图可以看出,S7-300 中的 SCALE 指令有点类似于 NORM_X 和 SCALE_X 指令组合在一起。还有一个更明显的区别是双极性输入。
BIPOLAR 输入用于指示 IN 参数的值是否被解释为双极或单极。该参数可以采用以下值:
- BIPOLAR = 1,则假定输入整数值介于 -27648 和 +27648 之间。例如,当模拟传感器给我们提供 -10V 至 +10V 范围内的输出时
- BIPOLAR =0 则假设输入整数值介于 0 到 27648 之间。例如,当传感器给我们提供 0-10V 范围内的输出时
这就是在 S7-1200 和 S7-300 PLC 中处理模拟输入信号的简单方法。
哪些最适合控制? – 模拟或数字信号
看,这两个信号对于任何自动化系统都至关重要且有用,但如果可以的话,我个人更喜欢使用模拟信号,因为对过程物理量进行模拟信号测量将使我能够持续监控过程参数,这将使我能够更好地 跟踪和控制我的流程。
此外,对参数进行连续监控将使我能够为不同的信号值设置不同的控制逻辑,这将使您更容易获得用于控制过程的值范围以及用于过程偏离正常操作的警报和警告的另一个值范围 。
结论
- 模拟信号是系统中物理量的连续表示。
- 模拟输入通常提供 0-10V 或 4-20mA 范围。
- 模拟信号处理是指将模拟 4-20mA 信号转换成与真实物理量相对应的、PLC能够理解的一系列数值。
- 在现代 S7 系列 PLC(如 S7-1200)中,处理模拟信号是使用 NORM_X 和 SCALE_X 指令完成的。
- 在 S7-300 等较旧的 S7 系列 PLC 中,处理模拟信号是使用 SCALE 指令完成的,该指令基本上是 NORM_X 和 SCALE_X 指令之间的组合。