2024年3月7日发(作者:)
工业自动化-花落忆无声S7-1200PLC 概念仍耳
5.1 用户程序的执行CPU 支持以下类型的代码块,使用它们可以创建有效的用户程序结构:
●●组织块 (OB) 定义程序的结构。 有些 OB具有预定义的行为和启动事件,但用户也可以创建具有自定义启动事件的 OB。5功能 (FC) 和功能块 (FB) 包含与特定任务或参数组合相对应的程序代码。 每个 FC 或FB 都提供一组输入和输出参数,用于与调用块共享数据。 FB还使用相关联的数据块(称为背景数据块)来保存该 FB 调用实例的数据值。可多次调用 FB,每次调用都采用唯一的背景数据块。调用带有不同背景数据块的同一 FB 不会对其它任何背景数据块的数据值产生影响。●数据块 (DB) 存储程序块可以使用的数据。用户程序的执行顺序是:从一个或多个在进入 RUN 模式时运行一次的可选启动组织块
(OB) 开始,然后执行一个或多个循环执行的程序循环 OB。还可以将 OB
与中断事件关联,该事件可以是标准事件或错误事件。当发生相应的标准或错误事件时,即会执行这些 OB。
功能 (FC) 或功能块 (FB) 是指可从 OB 或其它 FC/FB
调用的程序代码块,可下至以下嵌套深度:●●16(从程序循环 OB 或启动 OB 开始)6(从任意中断事件 OB 开始)注:安全程序使用二级嵌套。因此,用户程序在安全程序中的嵌套深度为四。FC 不与任何特定数据块 (DB) 相关联。FB 与 DB 直接相关并使用该 DB
传递参数及存储中间值和结果。用户程序、数据及组态的大小受 CPU 中可用装载存储器和工作存储器的限制。对各个
OB、FC、FB 和 DB 块的数目没有特殊限制。但是块的总数限制在 1024 之内。
每个周期都包括写入输出、读取输入、执行用户程序指令以及执行后台处理。该周期称为扫描周期或扫描。1
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
S7-1200 自动化解决方案可由配备 S7-1200 CPU
和附加模块的中央机架组成。术语“中央机架”表示 CPU
和关联模块采用导轨或面板式安装。只有在通电时才会对模块(SM、SB、BB、CB、CM
或 CP)进行检测和记录。
●不支持通电时在中央机架中插入或拔出模块(热插拔)。切勿在 CPU通电时在中央机架中插入或拔出模块。警告插入或拔出模块的安全要求从中央机架插入或移除模块(SM、SB、BB、CD、CM 或 CP)之前,如果未禁用
CPU
的所有电源,可能会造成损坏或不可预测的行为,从而导致死亡或人员重伤和/或财产损失。在中央机架中插入或拔出模块前,请务必切断 CPU
和中央机架的电源并遵守相应的安全预防措施。●可在 CPU 通电时插入或拔出 SIMATIC 存储卡。但在 CPU 处于 RUN模式时插入或拔出存储卡会使 CPU 进入 STOP 模式。注意CPU 处于 RUN 模式时拔出存储卡的风险
在 CPU 处于 RUN 模式时插入或拔出存储卡会使 CPU 进入 STOP
模式,这可能导致受控的设备或过程受损。只要插入或拔出存储卡,CPU 就立即进入 STOP
模式。在插入或拔出存储卡前,务必确保 CPU
当前未控制任何机器或过程。因此务必要为您的应用或过程安装急停电路。●如果在 CPU 处于 RUN 模式时在分布式 I/O 机架(AS-i、PROFINET 或PROFIBUS)中插入或拔出模块,CPU将在诊断缓冲区中生成一个条目,若存在拔出或插入模块 OB 则执行该OB,并且默认保持在 RUN 模式。2
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
过程映像更新与过程映像分区CPU 伴随扫描周期使用内部存储区(即过程映像)对本地数字量和模拟量 I/O
点进行同步更新。过程映像包含物理输入和输出(CPU、信号板和信号模块上的物理 I/O
点)的快照。可组态在每个扫描周期或发生特定事件中断时在过程映像中对 I/O 点进行更新。也可对
I/O
点进行组态使其排除在过程映像的更新之外。例如,当发生如硬件中断这类事件时,过程可能只需要特定的数据值。通过为这些 I/O 点组态映像过程更新,使其与分配给硬件中断
OB 的分区相关联,就可避免在过程不需要持续更新时,CPU
于每个扫描周期中执行不必要的数据值更新。对于需要在每个扫描周期进行更新的 I/O,CPU 将在每个扫描周期期间执行以下任务:
●●CPU 将过程映像输出区中的输出值写入到物理输出。CPU仅在用户程序执行前读取物理输入,并将输入值存储在过程映像输入区。这样一来,这些值便将在整个用户指令执行过程中保持一致。●CPU执行用户指令逻辑,并更新过程映像输出区中的输出值,而不是写入实际的物理输出。这一过程通过在给定周期内执行用户指令而提供一致的逻辑,并防止物理输出点可能在过程映像输出区中多次改变状态而出现抖动。为控制在每个扫描周期或在事件触发时是否自动更新 I/O 点,S7-1200
提供了五个过程映像分区。第一个过程映像分区 PIP0
指定用于每个扫描周期都自动更新的 I/O,此为默认分配。其余四个分区
PIP1、PIP2、PIP3 和 PIP4 可用于将 I/O
过程映像更新分配给不同的中断事件。在设备组态中将 I/O
分配给过程映像分区,并在创建中断 OB (页 198) 或编辑 OB 属性
(页 198)时将过程映像分区分配给中断事件。
默认情况下,在设备视图中插入模块时,STEP 7 会将其 I/O
过程映像更新为“自动更新”(Automatic update)。对于组态为“自动更新”(Automatic
update) 的 I/O,CPU 将在每个扫描周期自动处理模块和过程映像之间的数据交换。
3
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
要将数字量或模拟量点分配给过程映像分区,或将 I/O
点排除在过程映像更新之外,请按照以下步骤操作:1.在设备组态中查看相应设备的“属性”(Properties) 选项卡。2.根据需要在“常规 (General)”下展开选项,找出所需的 I/O 点。3.选择“I/O 地址”(I/O addresses)。4.也可以从“组织块”(Organization block) 下拉列表中选择一个特定的 OB。5.在“过程映像”(Process image) 下拉列表中将“自动更新”(Automatic update)更改为“PIP1”、“PIP2”、“PIP3”、“PIP4”或“无”(None)。选择“无”(None)表示只能通过立即指令对此 I/O进行读写。要将这些点重新添加到过程映像自动更新中,请将该选项再次更改为“自动更新”(Automatic update)。可以在指令执行时立即读取物理输入值和立即写入物理输出值。无论 I/O
点是否被组态为存储到过程映像中,立即读取功能都将访问物理输入的当前状态而不更新过程映像输入区。立即写入物理输出功能将同时更新过程映像输出区(如果相应 I/O
点组态为存储到过程映像中)和物理输出点。如果想要程序不使用过程映像,而是直接从物理点立即访问 I/O 数据,则在 I/O 地址后加后缀“:P”。
说明使用过程映像分区如果将 I/O 分配给过程映像分区 PIP1 - PIP4 中的其中一个,但未将 OB
分配给该分区,那么 CPU 决不会将 I/O 更新至过程映像,也不会通过过程映像更新
I/O。将 I/O 分配给未分配相应 OB 的
PIP,相当于将过程映像指定为“无”(None)。可使用直接读指令直接从物理 I/O 中读取
I/O,或使用直接写指令直接写入物理 I/O。CPU 不更新过程映像。
4
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
CPU 支持 PROFINET、PROFIBUS、以及 AS-Interface 网络 (页 885)的分布式 I/O。
5.1.1 CPU 的工作模式
CPU 有以下三种工作模式:STOP 模式、STARTUP 模式和 RUN 模式。CPU
前面的状态 LED 指示当前工作模式。
●●●在 STOP 模式下,CPU 不执行程序。您可以下载项目。在 STARTUP 模式下,执行一次启动 OB(如果存在)。在启动模式下,CPU不会处理中断事件。在 RUN 模式,程序循环 OB 重复执行。RUN模式中的任意点处都可能发生中断事件,这会导致相应的中断事件 OB 执行。可在RUN 模式下下载项目的某些部分 (页 1475)。CPU 支持通过暖启动进入 RUN 模式。暖启动不包括储存器复位。执行暖启动时,CPU
会初始化所有的非保持性系统和用户数据,并保留所有保持性用户数据值。存储器复位将清除所有工作存储器、保持性及非保持性存储区、将装载存储器复制到工作存储器并将输出设置为组态的“对 CPU STOP 的响应”(Reaction to CPU
STOP)。存储器复位不会清除诊断缓冲区,也不会清除永久保存的 IP 地址值。
5
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
可组态 CPU 中“上电后启动”(startup after POWER ON) 设置。该组态项出现在
CPU“设备组态”(Device Configuration) 的“启动”(Startup) 下。通电后,CPU
将执行一系列上电诊断检查和系统初始化操作。在系统初始化过程中,CPU
将删除所有非保持性位 (M) 存储器,并将所有非保持性 DB
的内容复位为装载存储器的初始值。CPU 将保留保持性位 (M) 存储器和保持性 DB
的内容,然后进入相应的工作模式。检测到的某些错误会阻止 CPU 进入 RUN
模式。CPU 支持以下组态选项:
●●●不重新启动(保持为 STOP 模式)暖启动 - RUN 模式暖启动 - 断电前的模式注意可修复故障可使 CPU 进入 STOP 模式。
CPU 可能因如下可修复故障进入 STOP 模式:
•可替换信号模块故障•临时故障,如电力线干扰或不稳定上电事件这种情况可导致财产损失。如果已将 CPU 组态为“暖启动 - 断电前的模式”(Warm restart - mode prior to POWER
OFF),CPU 则在掉电或发生故障前进入工作模式。如果在发生掉电或故障时,CPU
处于 STOP 模式,则 CPU 将在上电时进入 STOP 模式。CPU 保持 STOP
模式,直至 CPU 收到进入 RUN 模式的命令。如果在发生掉电或故障时,CPU 处于
RUN 模式,则 CPU 将在下次上电时进入 RUN 模式。在 CPU
未检测到可禁止其进入 RUN 模式的条件下,CPU 将进入 RUN 模式。
可将欲独立于 STEP 7 连接而运行的 CPU 组态为“暖启动 - RUN”(Warm restart -
RUN)。此启动模式将 CPU 设置为在下一次循环上电时返回到 RUN 模式。
6
工业自动化-花落忆无声启动过程PLC 概念
5.1 用户程序的执行
可以使用编程软件在线工具中的“STOP”或“RUN”命令
(页 1461)更改当前工作模式。也可在程序中包含 STP 指令 (页 330),以使 CPU 切换到
STOP 模式。可通过该指令根据程序逻辑停止程序的执行。
●在 STOP 模式下,CPU 处理所有通信请求(如果适用)并执行自诊断。CPU不执行用户程序。过程映像也不会自动更新。●在 STARTUP 和 RUN 模式下,CPU 执行下图所示的任务:STARTUP RUN
A 将物理输入的状态复制到 I 存储器
① 将 Q 存储器写入物理输出
B 将 Q
输出(映像)存储区初始化为零②将物理输入的状态复制到 I 存储器、上一个值或组态的替换值将PB、PN 和 AS-i 输出设为零
C 将非保持性 M
存储器和数据块初始化为其初始③执行程序循环 OB值,并启用组态的循环中断事件和时钟事件。执行启动 OB。
D 将所有中断事件存储到要在进入RUN 模式后处理的队列中
④执行自检诊断E 启用 Q
存储器到物理输出的写入操作⑤在扫描周期的任何阶段处理中断和通信说明包括 HMI 通信在内的通信不能中断程序循环 OB 以外的其它 OB。
只要工作模式从 STOP 切换到 RUN,CPU
就会清除过程映像输入、初始化过程映像输出并处理启动 OB。通过“启动
OB”中的指令对过程映像输入进行任何的读访问,都只会读取零值,而不是读取当前物理输入值。因此,要在启动模式下读取物理输入的当前状态,必须执行立即读取操作。接着再执行启动 OB 以及任何相关的 FC 和 FB。如果存在多个启动 OB,则按照 OB
编号依次执行各 OB,编号最小的 OB 优先执行。
7
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
每个启动 OB 都包含帮助您确定保持性数据和时钟有效性的启动信息。可以在启动 OB
中编写指令,以检查这些启动值,从而采取适当的措施。启动 OB 支持以下启动位置:
表格 5- 1 启动 OB 支持的启动位置
输入LostRetentive
LostRTC
数据类型Bool
Bool
说明如果保持性数据存储区丢失,该位为真如果时钟(实时时钟)丢失,该位为真在启动过程中,CPU 还会执行以下任务:
●●●在启动阶段,对中断进行排队但不加以处理在启动阶段,不执行任何循环时间监视在启动模式下,可以更改 HSC(High-SpeedCounter,高速计数器)、PWM(Pulse-Width Modulation,脉冲宽度调制)以及PtP(Point-to-Point communication,点对点通信)模块的组态●只有在 RUN 模式下才会真正运行 HSC、PWM 和点对点通信模块执行完启动 OB 后,CPU 将进入 RUN 模式并在连续的扫描周期内处理控制任务。5.1.2 在 RUN 模式下处理扫描周期
在每个扫描周期中,CPU
都会写入输出、读取输入、执行用户程序、更新通信模块以及响应用户中断事件和通信请求。 在扫描期间会定期处理通信请求。以上操作(用户中断事件除外)按先后顺序定期进行处理。对于已启用的用户中断事件,将根据优先级按其发生顺序进行处理。对于中断事件,如果适用的话,CPU 将读取输入、执行
OB,然后使用关联的过程映像分区 (PIP) 写入输出。
8
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
系统要保证扫描周期在一定的时间段内(即最大循环时间)完成;否则将生成时间错误事件。●在每个扫描周期的开始,从过程映像重新获取数字量及模拟量输出的当前值,然后将其写入到 CPU、SB 和 SM 模块上组态为自动 I/O 更新(默认组态)的物理输出。通过指令访问物理输出时,输出过程映像和物理输出本身都将被更新。●随后在该扫描周期中,将读取 CPU、SB 和 SM 模块上组态为自动 I/O更新(默认组态)的数字量及模拟量输入的当前值,然后将这些值写入过程映像。通过指令访问物理输入时,指令将访问物理输入的值,但输入过程映像不会更新。●读取输入后,系统将从第一条指令开始执行用户程序,一直执行到最后一条指令。其中包括所有的程序循环 OB 及其所有关联的 FC 和 FB。 程序循环 OB 根据 OB编号依次执行,OB 编号最小的先执行。在扫描期间会定期处理通信请求,这可能会中断用户程序的执行。自诊断检查包括定期检查系统和检查 I/O 模块的状态。
中断可能发生在扫描周期的任何阶段,并且由事件驱动。 事件发生时,CPU
将中断扫描循环,并调用被组态用于处理该事件的 OB。 OB 处理完该事件后,CPU
从中断点继续执行用户程序。5.1.3 组织块 (OB)
OB 控制用户程序的执行。CPU 中的特定事件将触发组织块的执行。OB
无法互相调用。FC 或 FB 不能调用
OB。只有发生诊断中断或时间间隔这类事件才能启动 OB 的执行。CPU 按照 OB
对应的优先级对其进行处理,遵从高优先级在前低优先级在后的顺序执行OB。最低优先等级为 1(对应主程序循环),最高优先等级为 26。
5.1.3.1 程序循环 OB
程序循环 OB 在 CPU 处于 RUN 模式时循环执行。主程序块是一种程序循环
OB。您可在此处放置控制程序的说明和调用其他用户块。您可以拥有多个程序循环
OB,CPU 将按编号顺序执行这些 OB。主 (OB 1) 是默认程序循环。
9
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
程序循环事件5.1.3.2
启动事件程序循环事件在每个程序循环(扫描)期间发生一次在程序循环期间,CPU
写入输出、读取输入和执行程序循环OB。程序循环事件是必需的,并且一直启用。可以不为程序循环事件选择任何程序循环
OB,也可以选择多个 OB。程序循环事件发生后,CPU 将执行编号最小的程序循环
OB(通常为“Main”OB 1)。在程序循环中,CPU
会依次(按编号顺序)执行其它程序循环OB。程序循环执行,因此将在以下时刻发生程序循环事件:
●上一个启动 OB 执行结束●上一个程序循环 OB 执行结束表格 5- 2 程序循环 OB 的起始信息
输入数据类型说明Initial_Call Bool 初始调用 OB 时为“True”
Remanence Bool 保持性数据可用时为“True”
启动 OB
启动 OB 在 CPU 的操作模式从 STOP 切换到 RUN 时执行一次,包括处于 RUN
模式时和执行 STOP 到 RUN 切换命令时上电。 之后将开始执行主“程序循环”OB。
启动事件在从 STOP 切换到 RUN 模式时发生一次,并触发 CPU 执行启动 OB。
可为启动事件组态多个 OB。 启动 OB 按编号顺序执行。
表格 5- 3 启动 OB 的起始信息
输入数据类型说明LostRetentivBool 保持性数据丢失时为“True”
e
LostRTC Bool 日期和时间丢失时为“True”
10
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
5.1.3.3 延时中断 OB
延时中断 OB 在组态的时延后执行。
延时中断事件将延时中断事件组态为在经过一个指定的延时后发生。 延迟时间可通过 SRT_DINT
指令分配。 延时事件将中断程序循环以执行相应的延时中断 OB。只能将一个延时中断
OB 连接到一个延时事件。 CPU 支持四个延时事件。
表格 5- 4 延时中断 OB 的启动信息
输入Sign
数据类型Word
说明传递给 SRT_DINT 调用触发的标识符
5.1.3.4 循环中断 OB
循环中断 OB
以指定的时间间隔执行。最多可组态四个循环中断事件,每个循环中断事件对应一个OB。
循环中断事件用户可通过循环中断事件组态中断 OB 在组态的周期时间执行。创建循环中断 OB
时即可组态初始周期时间。循环事件负责中断程序循环并执行相应的循环中断OB。请注意,循环中断事件的优先级比程序循环事件更高。
一个循环事件只可连接一个循环中断 OB。
可为每一个循环中断分配一个相移,从而使循环中断彼此错开一定的相移量执行。例如,如果有 5 ms 的循环事件和 10 ms 的循环事件,并且这两个事件每 10
毫秒同时发生一次。如果将 5 ms 的事件相移 1 到 4 ms,将 10 ms 的事件相移 0
ms,则这两个事件不再会同时发生。
默认相位偏移为 0。要更改初始相移,或更改循环事件的循环时间,请执行以下步骤:
1.在项目树中右键单击循环中断 OB。2.从上下文菜单中选择“属性”(Properties)。3.单击“循环中断 [OB 30]”(Cyclic interrupt [OB 30]) 对话框中的“循环中断”(Cyclicinterrupt),然后输入新的初始值。最大相移为 6000 ms(6 秒)或为最大循环时间,选择两者中的较小者。
11
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
还可以用 Query 循环中断 (QRY_CINT) 和 Set 循环中断 (SET_CINT)
指令在程序中查询并更改扫描时间和相移。SET_CINT
指令设置的扫描时间和相移不会在上电循环或切换到 STOP
模式的过程中保持不变;扫描时间和相移值会在上电循环或切换到 STOP
模式后重新变为初始值。CPU 共支持四个循环中断事件。
5.1.3.5 硬件中断 OB
硬件中断 OB 在发生相关硬件事件时执行。硬件中断 OB
将中断正常的循环程序执行来响应硬件事件信号。硬件中断事件硬件发生变化时将触发硬件中断事件,例如输入点上的上升沿/下降沿事件或者
HSC(High Speed Counter,高速计数器)事件。S7-1200
支持为每个硬件中断事件使用一个中断OB。可在设备组态中启用硬件事件,并在设备组态中为事件分配
OB,也可在用户程序中通过 ATTACH 指令进行分配。CPU
支持多个硬件中断事件。具体的可用事件由 CPU 型号和输入点数决定。
硬件中断事件数具有以下限制:沿:●●上升沿事件:最多 16 条下降沿事件:最多 16 条HSC 事件:●●●CV=PV:最多 6 个方向更改:最多 6 条外部复位:最多 6 条12
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
表格 5- 5 硬件中断 OB 的启动信息
输入LADDR
USI
IChannel
EventType
数据类型HW_IO
WORD
USINT
BYTE
说明触发硬件中断的模块的硬件标识符。用户结构标识符(16#0001 至
16#FFFF),保留供以后使用
触发中断的通道的编号与触发中断的事件相关的模块特定事件类型的标识符,例如下降沿或上升沿。EventType 中的位取决于如下触发模块:
模块/子模块 值CPU 或 SB
的板载 I/O
HSC
16#0
16#1
16#0
16#1
16#2
16#3
过程事件上升沿下降沿HSC CV=RV1
HSC 方向已更改
HSC 复位
HSC CV=RV2
5.1.3.6 时间错误中断 OB
如已组态,那么当扫描周期超过最大周期时间或发生时间错误事件时,将执行时间错误中断 OB (OB 80)。如已触发,错误中断将中断正常的循环程序执行或其它任何事件 OB。
发生任何上述事件都将生成一个描述相应事件的诊断缓冲区条目。无论是否存在时间错误中断 OB,都将生成诊断缓冲区条目。
13
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
时间错误中断事件出现几种不同时间错误情况中的任何一种都会引起时间错误事件:●扫描周期超过最大周期时间如果程序循环在指定的最大扫描周期时间内未完成,就会出现“超出最大周期时间”这种情况。有关最大周期时间条件、如何组态 CPU属性中的最大扫描周期时间以及如何重置周期定时器的更多信息,请参见“监视和组态周期时间 (页 113)”部分。●●由于在 CPU 结束执行第一次中断 OB 前又启动了第二次中断(循环或延时),因此CPU 无法启动所请求的 OB。发生队列溢出如果中断的出现频率超过 CPU 的处理频率,就会出现“发生队列溢出”这种情况。CPU通过不同的队列对各种事件类型的未决(排队的)事件数量加以限制。如果相应队列已满时发生某一事件,那么 CPU 将生成一个时间错误事件。所有时间错误事件都会触发时间错误中断OB(如果存在)的执行。如果不存在时间错误中断 OB,则 CPU 更改为 STOP 模式。
通过执行 RE_TRIGR 指令
(页 329)重启周期时间监视,用户程序可将程序循环执行时间最多延长为所组态最大周期时间的十倍。但是,如果在同一程序循环中出现两次“超出最大周期时间”情况且没有复位循环定时器,则无论时间错误中断 OB 是否存在,CPU 都将切换到 STOP
模式。请参见“S7-1200 系统手册中的监视循环时间 (页 113)”部分。
时间错误中断 OB 包含的启动信息可帮助您确定生成时间错误的事件和 OB。可以在 OB
中编写指令,以检查这些启动值并采取适当的措施。表格 5- 6 时间错误 OB (OB 80) 的启动信息
输入fault_id
数据类型BYTE
说明16#01 - 超出最大循环时间
16#02 - 请求的 OB 无法启动
16#07 和 16#09 - 发生队列溢出
csg_OBnr
csg_prio
OB_ANY
UINT
出错时正在执行的 OB 的编号
导致错误的 OB 的优先级
要在项目中包括时间错误中断 OB,请在树形结构的“程序块”(Program blocks)
下双击“添加新块”(Add new block),然后依次选择“组织块”(Organization
block)、“时间错误中断”(Time error interrupt),将时间错误中断添加到项目中。
14
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
新 V4.0 CPU 的优先级为 22。如果将 V3.0 CPU 更换为 V4.0 CPU
(页 1769),则优先级为 26,即对 V3.0
有效的优先级。无论哪种情况,优先级字段都可以编辑,用户可以将优先级设置为 22 到
26 之间的任何值。
5.1.3.7 诊断错误中断 OB
诊断错误事件当 CPU
检测到诊断错误,或者具有诊断功能的模块发现错误且为该模块启用了诊断错误中断时,将执行诊断错误中断 OB。诊断错误中断 OB 将中断正常的循环程序执行。如果希望 CPU
在收到诊断错误后进入 STOP 模式,可在诊断错误中断 OB 中包含一个 STP 指令,以使
CPU 进入 STOP 模式。
如果未在程序中包含诊断错误中断 OB,CPU 将忽略此类错误并保持 RUN 模式。
模拟(本地)、PROFINET、PROFIBUS
和其它一些数字(本地)设备都能够检测并报告诊断错误。发生或清除几种不同诊断错误情况中的任何一种都会引起诊断错误事件。所支持的诊断错误有以下几种:●无用户电源●超出上限●超出下限●断路●短路如果存在诊断错误中断 OB (OB
82),那么诊断错误事件将触发中断执行。如果不存在,CPU 将忽略该错误。
15
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
要在项目中包括诊断错误中断 OB,请在树形结构的“程序块”(Program blocks)
下双击“添加新块”(Add new block),然后依次选择“组织块”(Organization
block)、“诊断错误中断”(Diagnostic error interrupt),将诊断错误中断添加到项目中。
说明多通道本地模拟设备(I/O、RTD 和热电偶)的诊断错误
诊断错误中断 OB 一次只能处理一个通道的诊断错误。
如果多通道设备的两个通道出现错误,则第二个错误只会在以下情况下触发诊断错误中断OB:第一个通道错误已清除,由第一个错误触发的诊断错误中断 OB
已执行完毕,并且第二个错误仍然存在。诊断错误中断 OB
包含的启动信息可帮助您确定事件发生原因是错误的出现还是清除所致,以及确定报告错误的设备和通道。可以在诊断错误中断 OB
中编写指令,以检查这些启动值并采取适当的措施。说明如果没有未决诊断事件,诊断错误 OB 启动信息会将子模块作为一个整体来参考
在 V3.0 中,诊断错误离去事件的启动信息始终指示事件源。在 V4.0
中,如果离去事件离开子模块时无未决诊断,启动信息将完全参考子模块(16#8000),即使事件源为特定通道。
例如,如果断路触发了通道 2
上的诊断错误事件,纠正故障后清除诊断错误事件,启动信息将不参考通道2,而是参考子模块 (16#8000)。
16
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
表格 5- 7 诊断错误中断 OB 的启动信息
输入IOstate
数据类型WORD
说明设备的 IO 状态:
•如果组态正确,则位 0 = 1,如果组态不再正确,则= 0。•如果出现错误(如断线),则位 4 =1。(如果没有错误,则位 4 = 0。)•如果组态不正确,则位 5 = 1,如果组态再次正确,则= 0。•如果发生了 I/O 访问错误,则位 7 =1。有关存在访问错误的 I/O 的硬件标识符,请参见LADDR。(如果没有错误,则位 6 = 0。)LADDR
Channel
MultiError
1
HW_ANY
UINT
BOOL
报告错误的设备或功能单元的硬件标识符1通道号如果存在多个错误,参数值为 TRUE
LADDR
输入包含返回错误的设备或功能单元的硬件标识符。硬件标识符是在设备或网络视图中插入组件时自动分配的,它出现在 PLC 变量的“常量”(Constants)
选项卡中。还会自动为硬件标识符分配名称。不能更改这些 PLC
变量的“常量”(Constants) 选项卡中的条目。
5.1.3.8 拔出或插入模块 OB
当已组态和非禁用分布式 I/O 模块或子模块(PROFIBUS、PROFINET、AS-i)生成插入或拔出模块相关事件时,系统将执行“拔出或插入模块”OB。
拔出或插入模块事件以下情况将产生拔出或插入模块事件:●●●●●有人拔出或插入一个已组态的模块扩展机架中实际并没有所组态的模块扩展机架中的不兼容模块与所组态的模块不相符扩展机架中插入了与所组态模块兼容的模块,但组态不允许替换值模块或子模块发生参数化错误17
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
如果尚未对该 OB 进行编程,那么当已组态且未禁用的分布式 I/O
模块以上任意情况时,CPU 都将保持在 RUN 模式。
无论是否已对该 OB 进行编程,当中央机架中的模块以上任意情况时,CPU 都将切换到
STOP 模式。
表格 5- 8 拔出或插入模块 OB 的启动信息
输入LADDR
数据类型HW_IO
说明硬件标识符16#38: 模块已插入
16#29: 模块已拔出
故障标识符Event_Class Byte
Fault_ID Byte
5.1.3.9 机架或站故障 OB
当 CPU 检测到分布式机架或站出现故障或发生通信丢失时,将执行“机架或站故障”OB。
机架或站故障事件检测到以下任一情况时,CPU 将生成机架或站故障事件:
●●●DP 主站系统故障或 PROFINET IO 系统故障(进入或离开事件)DP 从站系统故障或 IO 设备故障(进入或离开事件)PROFINET I 设备的某些子模块发生故障如果尚未对该 OB 进行编程,那么发生以上任意情况时,CPU 将保持在 RUN 模式。表格 5- 9 机架或站故障 OB 的启动信息
输入LADDR
数据类型HW_IO
说明硬件标识符16#38:离开事件
16#39:进入事件
Event_Class Byte
Fault_ID Byte 故障标识符18
工业自动化-花落忆无声5.1.3.10
时钟事件5.1.3.11
PLC 概念
5.1 用户程序的执行
时钟 OB
时钟 OB 根据所组态的时钟时间条件执行。 CPU 支持两个时钟 OB。
可将时钟中断事件组态为在某个指定的日期或时间发生一次,或者按照以下周期之一循环发生:●每分钟: 每分钟发生中断。●每小时: 每小时发生中断。●每天: 在每天的指定时间(小时和分钟)发生中断。●每周: 在每周指定日期的指定时间(例如,每周二下午 4:30)发生中断。●每月: 在每月指定日期的指定时间发生中断。 日期编号必须介于 1 和 28 之间(包括1 和 28)。●每个月末: 在每个月最后一天的指定时间发生中断。●每年: 在每年的指定日期(月和日)发生中断。 不能指定 2 月 29 日。表格 5- 10 时钟事件 OB 的启动信息
输入数据类型说明CaughtUp Bool 已向前设置时间,因此满足 OB 调用
SecondTimBool 已向后设置时间,因此第二次启动 OB 调用
es
状态 OB
如果 DPV1 或 PNIO 从站触发状态中断,则执行状态 OB。 如果 DPV1 或 PNIO
从站的组件(模块或机架)更改了其工作模式(例如由 RUN 变为
STOP),则可能发生这种情况。
19
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
状态事件5.1.3.12
更新事件5.1.3.13
有关可触发状态中断的事件的详细信息,请参见 DPV1 或 PNIO 从站的制造商文档。
表格 5- 11 状态 OB 的启动信息
输入数据类型说明LADDR HW_IO 硬件标识符Slot UInt 插槽号Specifier Word 报警说明符更新 OB
如果 DPV1 或 PNIO 从站触发更新中断,则执行更新 OB。
有关可触发更新中断的事件的详细信息,请参见 DPV1 或 PNIO 从站的制造商文档。
表格 5- 12 更新 OB 的启动信息
输入数据类型说明LADDR HW_IO 硬件标识符Slot UInt 插槽号Specifier Word 报警说明符配置文件 OB
如果 DPV1 或 PNIO 从站触发配置文件特定的中断,则执行配置文件 OB。
20
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
配置文件事件5.1.3.14
有关可触发配置文件中断的事件的详细信息,请参见 DPV1 或 PNIO
从站的制造商文档。表格 5- 13 配置文件 OB 的启动信息
输入数据类型说明LADDR HW_IO 硬件标识符Slot UInt 插槽号Specifier Word 报警说明符MC 伺服和 MC插补器 OB
在创建运动工艺对象并将驱动器接口设置为“模拟驱动器接口”(Analog drive connection)
或“PROFIDrive”时,STEP 7 会自动创建只读 MC 伺服和 MC 插补器
OB。用户无需编辑任何 OB 属性,也无需直接创建此 OB。CPU 将这些 OB
用于闭环控制。有关更多详细信息,请参见STEP7信息系统。21
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
5.1.3.15 MC-PreServo可以对 MC-PreServo OB 进行编程,使其包含程序逻辑:在 MC-Servo OB执行前直接执行 STEP 7 程序。MC-PreServo 事件MC-PreServo OB 使您可读取所组态的应用周期信息(单位为 µs)。表格 5- 14 MC-PreServo OB 的起始信息
输入Initial_Call
PIP_Input
PIP_Output
IO_System
数据类型BOOL
BOOL
BOOL
USINT
说明TRUE 表示从 STOP 转为 RUN 的过程中首次调用该 OB
TRUE 表示相关的过程映像输入为最新值。
TRUE 表示在最后一个周期后,CPU
将相关的过程映像输出适时传送到输出中。触发中断的分布式 I/O 系统的编号
n:丢失的循环数
-1:丢失的循环数未知(例如,由于更改了循环)Event_Count INT
Synchronous
CycleTime
BOOL
UDINT
预留显示为 MC-Servo OB 组态的应用周期,单位为 μs
22
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
5.1.3.16 MC-PostServo可以对 MC-PreServo OB 进行编程,使其包含程序逻辑:在 MC-Servo OB执行后直接执行 STEP 7 程序。MC-PostServo 事件5.1.3.17
MC-PreServo OB 使您可读取所组态的应用周期信息(单位为 µs)。表格 5- 15 MC-PostServo OB 的起始信息
输入数据类型说明Initial_Call BOOL TRUE 表示从 STOP 转为 RUN 的过程中首次调用该 OB
PIP_Input BOOL TRUE 表示相关的过程映像输入为最新值。
PIP_Output BOOL TRUE 表示在最后一个周期后,CPU
将相关的过程映像输出适时传送到输出中。IO_System USINT 触发中断的分布式 I/O 系统的编号
Event_Count INT n:丢失的循环数
-1:丢失的循环数未知(例如,由于更改了循环)SynchronouBOOL 预留s
CycleTime UDINT 显示为 MC-Servo OB 组态的应用周期,单位为 μs
事件执行的优先级与排队CPU 处理操作受事件控制。事件会触发要执行的中断
OB。可以在块的创建期间、设备配置期间或使用 ATTACH 或 DETACH
指令指定事件的中断OB。有些事件定期发生,例如,程序循环或循环事件。而其它事件只发生一次,例如,启动事件和延时事件。还有一些事件则在硬件触发事件时发生,例如,输入点上的沿事件或高速计数器事件。诊断错误和时间错误等事件只在出现错误时发生。事件优先级和队列用于确定事件中断 OB 的处理顺序。
CPU 按照优先级顺序处理事件,1 为最低优先级,26 为最高优先级。在 S7-1200 CPU
V4.0 之前的版本中,每种 OB 类型都有固定的优先级(1 到 26)。从 V4.0
开始,可为每个组态的 OB 分配优先级。优先级编号在 OB 属性的特性中进行配置。
23
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
可中断与不可中断执行模式OB (页 93) 按照其触发事件的优先级顺序执行。在 CPU 设备组态的启动属性
(页 179)中,您可以将 OB 执行组态为可中断或不可中断。请注意,程序循环 OB
始终为可中断,但可将其它所有 OB 组态为可中断或不可中断。
如果设置了可中断模式,则在执行 OB 并且 OB
执行结束前发生了更高优先级的事件时,将中断正在运行的OB,以允许更高优先级的事件 OB
运行。运行更高级别的事件直至结束后,才会继续执行之前中断的 OB。如果执行可中断
OB 时发生多个事件,CPU 将按照优先级顺序处理这些事件。
如果未设置可中断模式,则无论触发的 OB
在运行期间是否触发了其它任何事件,都将继续运行直至结束。考虑以下两种情况,其中中断事件触发循环 OB 和延时 OB。在这两种情况中,延时 OB
(OB 201) 没有过程映像分区分配 (页 85)并且以优先级 4 执行。循环 OB (OB 200) 分配了
PIP1 过程映像分区并且以优先级 2
执行。下图显示了不可中断执行模式与可中断执行模式下执行 OB 的区别:
图 5-1 情况 1:不可中断 OB 执行
图 5-2 情况 2:可中断 OB 执行
24
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
说明如果将 OB 执行模式组态为不可中断,则时间错误 OB 不能中断除程序循环 OB 以外的
OB。在 S7-1200 CPU V4.0 之前的版本中,时间错误 OB 可中断任何正在执行的
OB。而从 V4.0 开始,如果希望时间错误 OB(或其它任何优先级更高的
OB)能够中断除程序循环 OB 以外的执行中 OB,必须将 OB 执行组态为可中断。
了解事件执行的优先级与排队CPU
通过各种事件类型的不同队列限制单一来源的未决(排队的)事件数量。达到给定事件类型的未决事件限值后,下一个事件将丢失。可以使用时间错误中断 OB (页 97)
响应队列溢出。请注意,STEP 7
可用于组态循环中断 OB
和时间 OB
的一些特定事件队列参数。有关 CPU 过载行为和事件排队的更多详细信息,请参见 STEP 7 信息系统。
每个 CPU 事件都具有相关优先级。通常,CPU
按优先级顺序处理事件(优先级最高的最先进行处理)。对于优先级相同的事件,CPU
按照“先到先得”的原则进行处理。
25
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
表格 5- 16 OB 事件
事件程序循环允许的数量1 个程序循环事件
允许多个 OB
默认 OB 优先级
14
启动1 个启动事件
1
允许多个 OB
14
延时最多 4 个时间事件
每个事件 1 个 OB
OB 20:3
OB 21:4
OB 22:5
OB 23:6
OB 123 至
OB 32767:3
循环中断最多 4 个事件
每个事件 1 个 OB
OB 30:8
OB 31:9
OB 32:10
OB 33:11
OB 34:12
OB 35:13
OB 36:14
OB 37:16
OB 38:17
OB 123 至
OB 32767:7
硬件中断最多 50 个硬件中断事件
2
每个事件 1 个
OB,但可对多个事件使用同一个 OB
18
18
22 或 264
5
6
6
2
4
4
4
时间错误诊断错误拔出或插入模块机架或站故障日时钟状态更新配置文件1 个事件(仅当组态时)3
1 个事件(仅当组态时)
1 个事件
1 个事件
最多 2 个事件
1 个事件
1 个事件
1 个事件
26
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
事件MC 伺服
MC 插补器
123允许的数量1 个事件
1 个事件
默认 OB 优先级
25
24
启动事件和程序循环事件不会同时发生,因为启动事件运行结束后程序循环事件才启动。如果使用 DETACH 和 ATTACH 指令,则可具有 50 个以上的硬件中断事件 OB。
可以将 CPU 组态为在超出最大扫描周期时间时保持 RUN 模式,也可使用 RE_TRIGR
指令复位周期时间。但是,如果同一个扫描周期第二次超出最大扫描周期时间,CPU
就会进入 STOP 模式。
4新 V4.0 或 V4.1 CPU 的优先级为 22。如果是将 V3.0 CPU 更换为 V4.0 或 V4.1
CPU,则优先级为 26:即对 V3.0
有效的优先级。无论哪种情况,优先级字段都可以编辑,用户可以将优先级设置为 22 到
26 之间的任何值。
有关详细信息,请参见主题“用 V4.2.x CPU 更换 V3.0 CPU (页 1769)”。
27
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
中断等待时间另外,CPU 可识别出无关联 OB 的其它事件。下表介绍了这些事件和相应的 CPU 操作:
表格 5- 17 附加事件
事件说明CPU 操作
I/O 访问错误 直接 I/O 读/写错误 CPU
将第一次错误记录在诊断缓冲区中并保持 RUN 模式。您可以使用
GET_ERROR_ID (页 330)
指令访问错误原因。最大周期时间错误CPU CPU
超出组态的周期时间两次将错误记录在诊断缓冲区中并切换为STOP 模式。
外围设备访问错误过程映像更新期间出现CPU
I/O 错误 将第一次错误记录在诊断缓冲区中并保持 RUN 模式。
编程错误程序执行错误•如果启用了错误处理,系统会在错误结构中输入错误原因。您可以使用 GET_ERROR_ID (页 330)指令访问错误原因。•如果启用了全局错误处理,系统将在诊断缓冲区中输入访问错误启动事件,并保持 RUN 模式。如果中断事件发生时程序循环 OB
是唯一激活的事件服务例程,则中断事件等待时间(该时间是指从通知 CPU
发生了事件到 CPU 开始执行处理该事件的 OB 中的第一条指令)约为 175 µs。
28
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
5.1.4 监视和组态循环时间循环时间是指 CPU 操作系统在 RUN 模式下执行循环阶段所需的时间。CPU
提供了两种监视循环时间的方法:●●最大扫描周期时间最小扫描周期时间扫描周期监视在启动事件完成后开始。此功能的组态出现在 CPU“设备配置”(Device
Configuration) 的“循环时间”(Cycle time) 下。
CPU
监视扫描周期,并在扫描周期时间超出组态的最大扫描周期时间时做出响应。如果扫描周期时间超出组态的最大扫描周期时间,则 CPU 会生成错误并做出如下响应:
●●如果用户程序中包含时间错误中断 OB (页 97),则 CPU 将执行该中断。如果用户程序不包含时间错误中断OB,则时间错误事件将生成一个诊断缓冲区条目。CPU 进入 STOP 模式。RE_TRIGR 指令
(页 329)(重新触发周期时间监视)可用于复位记录周期时间的定时器。如果当前程序循环执行耗费的时间小于所组态最大扫描周期时间的十倍,则 RE_TRIGR
指令将重新触发周期时间监视并返回“ENO = TRUE”。否则 RE_TRIGR
指令将不会重新触发周期时间监视,并返回“ENO = FALSE”。
通常,扫描周期会尽快执行,当前扫描周期一完成,下一个扫描周期就会开始。视用户程序和通信任务而定,扫描周期的时间段在各次扫描中有所不同。为了消除这种差异,CPU
支持一种可选的最小扫描周期时间。如果启用此可选功能并提供以 ms
为单位的最小扫描周期时间,则在执行完程序循环 OB 后 CPU
会延时,直至经过最小扫描周期时间后才重复程序循环。如果 CPU 完成正常扫描周期的时间小于指定的最小循环时间,则 CPU
将用额外的扫描周期时间执行运行诊断和/或处理通信请求。
29
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
如果 CPU 在指定的最小循环时间内未完成扫描周期,CPU
将正常完成扫描(包括通信处理),并且不会因超出最小扫描时间而引起任何系统响应。下表定义了循环时间监视功能的范围和默认值:表格 5- 18 循环时间的范围
循环时间最大扫描周期时间1最小扫描周期时间21
值范围 (ms)
1 到 6000
1 到最大扫描周期时间
默认值150 ms
禁用最大扫描周期时间始终启用。组态循环时间使其介于 1 ms 到 6000 ms 之间。默认值为
150 ms。
最小扫描周期时间为可选项,默认情况下被禁用。必要时,可组态一个 1 ms
到最大扫描周期时间之间的周期时间。2
组态循环时间和通信负载利用设备配置中的 CPU 属性可以组态以下参数:
●周期: 可输入最大扫描周期监视时间。 也可启用并输入最小扫描周期时间。●通信负载: 可以组态一个百分比时间,专门用于通信任务。有关扫描周期的更多信息,请参见监视循环时间 (页 113)。
30
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
5.1.5 CPU 存储器
存储器管理保持性存储器CPU 提供了以下用于存储用户程序、数据和组态的存储区:
●装载存储器,用于非易失性地存储用户程序、数据和组态。将项目下载到 CPU后,CPU 会先将程序存储在装载存储区中。该存储区位于存储卡(如存在)或 CPU中。CPU 能够在断电后继续保持该非易失性存储区。存储卡支持的存储空间比 CPU内置的存储空间更大。●工作存储器是易失性存储器,用于在执行用户程序时存储用户项目的某些内容。CPU会将一些项目内容从装载存储器复制到工作存储器中。该易失性存储区将在断电后丢失,而在恢复供电时由 CPU 恢复。●保持性存储器,用于非易失性地存储限量的工作存储器值。断电过程中,CPU使用保持性存储区存储所选用户存储单元的值。如果发生断电或掉电,CPU将在上电时恢复这些保持性值。要显示编译程序块的存储器使用情况,请右键单击 STEP 7 项目树中“程序块”(Program
blocks)
文件夹中的块,然后从上下文菜单中选择“资源”(Resources)。“编译属性”(Compiliation
properties) 显示了编译块的装载存储器和工作存储器。
要显示在线 CPU 的存储器使用情况,请双击 STEP 7 中的“在线和诊断”(Online and
diagnostics),展开“诊断”(Diagnostics),然后选择“存储器”(Memory)。
将某些数据标记为保持性数据可以避免发生电源故障后造成数据丢失。该 CPU
允许您将以下数据配置为保持性数据:●位存储器 (M):可以在 PLC变量表或分配列表中定义位存储器的保持性存储器的大小。保持性位存储器总是从MB0 开始向上连续贯穿指定的字节数。通过 PLC变量表或在分配列表中通过单击“保持性”(Retain) 工具栏图标指定该值。输入从 MB0开始保留的 M 字节个数。注意:对于任何块,都可通过在“程序块”(Program blocks)文件夹中选择块,然后选择“工具 > 分配列表”(Tools > Assignment list)菜单命令来显示分配列表。31
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
●函数块 (FB) 的变量:如果 FB 为“优化块访问”(Optimized block access) 类型,则该FB 的接口编辑器将包含“保持”(Retain)列。在该列中,可以单独为每个变量选择“保持”(Retain)、“非保持”(Non-retain) 或“在IDB 中设置”(Set in IDB)。将此类 FB 置于程序中时,和该 FB 对应的实例 DB也将包含此“保持”(Retain) 列。在优化的 FB 中,如果在变量的“保持性”(Retain)选项中选择“在 IDB 中设置”(Set in IDB)(在背景数据块中设置),那么只能更改背景DB 接口编辑器中某个变量的保持性状态。如果 FB
非“优化块访问”(Optimized block access) 类型,则该 FB的接口编辑器将不包含“保持”(Retain) 列。将此类 FB 置于程序中时,和该 FB对应的实例 DB 仍将包含一个可进行编辑的“保持”(Retain)列。如果是这种情况,在选择所有变量时为任意变量结果选择“保持”(Retain)选项。同样,在取消选择所有变量时为任意变量结果取消选择该选项。要查看或修改 FB 是否已优化,打开 FB 属性然后选则属性。●全局数据块的变量:在保持性状态分配方面,全局 DB 与 FB类似。根据块访问设置情况,用户可以定义全局数据块的单个变量或所有变量的保持性状态。–如果在 DB创建时选择“优化”(Optimized),则可以设置每个单独变量的保持性状态。–如果在创建 DB 时选择“标准 - 与 S7-300/400 兼容”(Standard - compatible with S7-300/400),则该保持性状态的设置将适用于该 DB的所有变量;即变量要么都具有保持性,要么都没有。该 CPU 最多支持 10240 字节的保持性数据。要了解可用保持性字节数,请在 PLC
变量表或分配列表中单击“保持性”(Retain) 工具栏图标。尽管这里是为 M
存储器指定保持性范围的地方,但第二个箭头会指示可用于 M 和 DB
的总剩余存储空间。请注意,要保证该值的准确性,必须编译带有保持性变量的所有数据块。说明下载程序不会清除或更改保持性存储器中的现有值。如果要在下载之前清除保持性存储器,请在下载程序前将 CPU 复位为出厂设定。
32
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
5.1.5.1 系统和时钟存储器使用 CPU 属性可启用“系统存储器”和“时钟存储器”的相应字节。
程序逻辑可通过这些函数的变量名称来引用它们的各个位。●可以将 M 存储器的一个字节分配给系统存储器。该系统存储器字节提供了以下四个位,用户程序可通过以下变量名称引用这四个位:–第一个周期: (变量名称“FirstScan”)在启动 OB完成后的第一次扫描期间内,该位设置为 1。(执行了第一次扫描后,“首次扫描”位将设置为 0。)–诊断状态变化: (变量名称: “DiagStatusUpdate”)在 CPU记录了诊断事件后的一个扫描周期内设置为 1。 由于直到首次程序循环 OB执行结束,CPU 才能置位“DiagStatusUpdate”位,因此用户程序无法检测在启动OB 执行期间或首次程序循环 OB 执行期间是否发生过诊断更改。–始终为 1(高)(Always 1 (high)): (变量名称“AlwaysTRUE”),该位始终设置为1。–始终为 0(低)(Always 0 (low)): (变量名称“AlwaysFALSE”),该位始终设置为0。●可以将 M 存储器的一个字节分配给时钟存储器。被组态为时钟存储器的字节中的每一位都可生成方波脉冲。 时钟存储器字节提供了 8种不同的频率,其范围从 0.5 Hz(慢)到 10 Hz(快)。这些位可作为控制位(尤其在与沿指令结合使用时),用于在用户程序中周期性触发动作。CPU 在从 STOP 模式切换到 STARTUP 模式时初始化这些字节。 时钟存储器的位在
STARTUP 和 RUN 模式下会随 CPU 时钟同步变化。
小心覆盖系统存储器位或时钟存储器位时的风险改写系统存储器或时钟存储器的各个位可能会破坏这些功能中的数据,同时还可能导致用户程序错误运行,进而造成设备损坏和人员伤害。因为时钟存储器和系统存储器都不是预留的 M
存储器,所以指令或通信可以写入这些单元并破坏其中的数据。避免向这些单元写入数据以确保这些功能正常运行,并且应始终为过程或机器使用紧急停止电路。33
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
系统存储器组态了一个字节,其中的各个位会在发生特定事件时启用(值 = 1)。
表格 5- 19 系统存储器
7
保留值 0
6 5 4 3 2 1
诊断状态指示•1: 变化•0: 无更改0
首次扫描指示•1: 启动后首次扫描•0: 不是首次扫描始终熄灭常开值 0 值 1
时钟存储器组态了一个字节,该字节的各个位分别按固定的时间间隔循环启用和禁用。每个时钟位都会在相应的 M 存储器位产生一个方波脉冲。
这些位可作为控制位(尤其在与沿指令结合使用时),用于在用户代码中周期性触发动作。34
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
表格 5- 20 时钟存储器
位号变量名称周期 (s)
频率 (Hz)
由于时钟存储器与 CPU
7 6 5 4 3 2 1 0
2.0
0.5
1.6 1.0 0.8
1.25
0.5
2
0.4
2.5
0.2
5
0.1
10 0.625 1
周期异步运行,因此,时钟存储器的状态可能会在一个长周期中发生多次改变。5.1.6 诊断缓冲区CPU
提供了一个诊断缓冲区,其中包含的每个条目对应一个诊断事件。每个条目都包含了事件发生的日期和时间、事件类别及事件描述。条目按时间顺序显示,最新发生的事件位于最上面。此日志最多可提供 50
个最近发生的事件。日志填满后,新事件将替换日志中最早的事件。掉电时,将保存事件。诊断缓冲区中记录以下事件类型:●●所有系统诊断事件;例如,CPU 错误和模块错误CPU 的每次状态切换(每次上电、每次切换到 STOP 模式、每次切换到 RUN 模式)必须在线访问诊断缓冲区 (页 1462)。从“在线和诊断”(Online & diagnostics)
视图中,在“诊断 > 诊断缓冲区”(Diagnostics > Diagnostics buffer) 下查找诊断缓冲区。
减少安全诊断事件的数量部分安全事件会在诊断缓冲区中生成重复条目。这些消息可能会堵塞诊断缓冲区,从而可能阻碍其它事件消息。您可以组态 PLC 限定安全事件的诊断消息数量。可以在 CPU
的设备组态(其中可以抑制循环消息)中基于时间间隔进行选择:35
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
如果选择在时间间隔内总结安全事件,您可以将时间间隔的单位设置为秒、分钟或小时,数值范围设置为1 ...255。
如果选择对安全事件进行限定,将限定以下几种类型的事件:●●●●●●●●●●●使用正确或错误的密码转至在线状态检测被操控的通信数据检测存储卡上被操控的数据检测被操控的固件更新文件更改后的保护等级(访问保护)下载到 CPU限制或启用密码合法性(通过指令或 CPU 显示器)由于超出允许的并行访问尝试次数,在线访问被拒绝现有在线连接处于禁用状态的超时使用正确或错误的密码登录到 Web 服务器创建 CPU 的备份恢复 CPU 组态5.1.7 日时钟CPU 支持日时钟。 在 CPU 断电期间,超级电容器提供时钟继续运行所需的电能。
超级电容器在 CPU 通电时充电。 在 CPU 通电至少 24
小时之后,超级电容器所具有的电量通常足以维持时钟运行 20 天。
STEP 7 将时钟设置为系统时间,它有一个初始的默认值或者遵循出厂值。
若要使用日时钟,必须进行设置。诸如用于诊断缓冲区条目、数据日志文件和数据日志条目的时间戳都是基于系统时间。从在线 CPU 的“在线和诊断”(Online & diagnostics) 视图中的“设置日时钟”功能
(页 1455)下设置日时钟。 然后,STEP 7 从您设置的时间中加上或者减去 Windows
操作系统与 UTC(世界协调时间)的偏差来计算系统时间。 如果您的 Windows
操作系统的时区和夏令时的设置与您所处的区域相一致,则将日时钟设置为当前的本地时间会产生 UTC 的系统时间。
STEP 7 中包含读写系统时间(RD_SYS_T 和 WR_SYS_T)、读取本地时间
(RD_LOC_T) 和设置时区 (SET_TIMEZONE) 的指令 (页 361)。 RD_LOC_T
指令使用您在 CPU 的一般属性 (页 179)的“日时钟”(Time of day)
组态中所设置的时区和夏令时偏移量来计算本地时间。36
工业自动化-花落忆无声PLC 概念
5.1 用户程序的执行
这些设置可以设置您本地时间的时区、选择性地设置夏令时并指定夏令时的开始时间和结束时间。 您也可以通过使用 SET_TIMEZONE 指令来设定这些设置。
5.1.8 组态从 RUN 切换到 STOP 时的输出
可以组态 CPU 处于 STOP 模式时数字量输出和模拟量输出的特性。 可以将 CPU、SB
或 SM 的任何输出设置为冻结值或使用替换值:
●替换特定的输出值(默认): 为 CPU、SB 或 SM设备的每个输出(通道)分别输入替换值。数字输出通道的默认替换值为 OFF,而模拟输出通道的默认替换值为 0。●冻结输出以保持上一个状态: 工作模式从 RUN 切换到 STOP时,输出将保留当前值。 上电后,输出被设置为默认的替换值。可以在“设备配置”(Device Configuration) 中组态输出的行为。
选择相应的设备,然后使用“属性”(Properties) 选项卡组态每个设备的输出。
说明某些分布式 I/O 模块提供了用于响应 CPU 停止模式的额外设置。
请从这些模块的设备配置中的选项列表中进行选择。CPU 从 RUN 切换到 STOP 后,CPU
将保留过程映像,并根据组态写入相应的数字和模拟输出值。37
工业自动化-花落忆无声PLC 概念
5.2 数据存储、存储区、I/O 和寻址
5.2 数据存储、存储区、I/O 和寻址
5.2.1 访问 S7-1200 的数据
STEP 7 简化了符号编程。 用户为数据地址创建符号名称或“变量”,作为与存储器地址和
I/O 点相关的 PLC 变量或在代码块中使用的局部变量。
要在用户程序中使用这些变量,只需输入指令参数的变量名称。为了更好地理解 CPU 的存储区结构及其寻址方式,以下段落将对 PLC
变量所引用的“绝对”寻址进行说明。 CPU
提供了以下几个选项,用于在执行用户程序期间存储数据:●●全局储存器: CPU 提供了各种专用存储区,其中包括输入 (I)、输出 (Q) 和位存储器(M)。 所有代码块可以无限制地访问该储存器。PLC 变量表: 在 STEP 7 PLC 变量表中,可以输入特定存储单元的符号名称。这些变量在 STEP 7程序中为全局变量,并允许用户使用应用程序中有具体含义的名称进行命名。●数据块 (DB): 可在用户程序中加入 DB 以存储代码块的数据。从相关代码块开始执行一直到结束,存储的数据始终存在。 “全局”DB存储所有代码块均可使用的数据,而背景 DB 存储特定 FB 的数据并且由 FB的参数进行构造。●临时存储器: 只要调用代码块,CPU的操作系统就会分配要在执行块期间使用的临时或本地存储器 (L)。代码块执行完成后,CPU 将重新分配本地存储器,以用于执行其它代码块。每个存储单元都有唯一的地址。 用户程序利用这些地址访问存储单元中的信息。 对输入(I)或输出 (Q) 存储区(例如 I0.3 或 Q1.7)的引用会访问过程映像。要立即访问物理输入或输出,请在引用后面添加“:P”(例如,I0.3:P、Q1.7:P 或"Stop:P")。38
工业自动化-花落忆无声PLC 概念
5.2 数据存储、存储区、I/O 和寻址
表格 5- 21 存储区存储区I
过程映像输入I_:P1
(物理输入)Q
过程映像输出Q_:P1
(物理输出)M
位存储器L
临时存储器DB
数据块1说明在扫描周期开始时从物理输入复制立即读取 CPU、SB 和 SM
上的物理输入点在扫描周期开始时复制到物理输出立即写入 CPU、SB 和 SM
上的物理输出点控制和数据存储器存储块的临时数据,这些数据仅在该块的本地范围内有效数据存储器,同时也是 FB 的参数存储器
强制无支持保持性无无无支持无无无无无支持(可选)无是(可选) 要立即访问(读取或写入)物理输入和物理输出,请在地址或变量后面添加“:P”(例如,I0.3:P、Q1.7:P 或“Stop:P”)。
每个存储单元都有唯一的地址。 用户程序利用这些地址访问存储单元中的信息。绝对地址由以下元素组成:●●●存储区标识符(如 I、Q 或 M)要访问的数据的大小(“B”表示 Byte、“W”表示 Word 或“D”表示 DWord)数据的起始地址(如字节 3 或字 3)39
工业自动化-花落忆无声PLC 概念
5.2 数据存储、存储区、I/O 和寻址
访问布尔值地址中的位时,不要输入大小的助记符号。仅需输入数据的存储区、字节位置和位位置(如 0.0、Q0.1 或 M3.4)。
A
B
C
D
存储区标识符E
字节地址: 字节 3 F
分隔符(“字节.位”)
位在字节中的位置(位 4,共 8 位)
存储区的字节选定字节的位本示例中,存储区和字节地址(M 代表位存储区,3 代表 Byte
3)通过后面的句点(“.”)与位地址(位 4)分隔。访问 CPU 存储区中的数据
STEP 7 简化了符号编程。通常,可在 PLC 变量表、数据块中创建变量,也可在
OB、FC 或
FB的接口中创建变量。这些变量包括名称、数据类型、偏移量和注释。此外,在数据块中,还可设定起始值。在编程时,通过在指令参数中输入变量名称,可以使用这些变量。也可以选择在指令参数中输入绝对操作数(存储区、大小和偏移量)。以下各部分的实例介绍了如何输入绝对操作数。程序编辑器会自动在绝对操作数前面插入 %
字符。可以在程序编辑器中将视图切换到以下几种视图之一:符号、符号和绝对,或绝对。I(过程映像输入):CPU 仅在每个扫描周期的循环 OB
执行之前对外围(物理)输入点进行采样,并将这些值写入到输入过程映像。可以按位、字节、字或双字访问输入过程映像。允许对过程映像输入进行读写访问,但过程映像输入通常为只读。表格 5- 22 I 存储器的绝对地址
位字节、字或双字I[字节地址].[位地址]
I[大小][起始字节地址]
I0.1
IB4、IW5 或 ID12
40
工业自动化-花落忆无声PLC 概念
5.2 数据存储、存储区、I/O 和寻址
通过在地址后面添加“:P”,可以立即读取 CPU、SB、SM
或分布式模块的数字量和模拟量输入。使用 I_:P 访问与使用 I
访问的区别是,前者直接从被访问点而非输入过程映像获得数据。这种 I_:P
访问称为“立即读”访问,因为数据是直接从源而非副本获取的,这里的副本是指在上次更新输入过程映像时建立的副本。因为物理输入点直接从与其连接的现场设备接收值,所以不允许对这些点进行写访问。即,与可读或可写的 I 访问不同的是,I_:P 访问为只读访问。
I_:P 访问也仅限于单个 CPU、SB 或 SM
所支持的输入大小(向上取整到最接近的字节)。例如,如果将 2 DI/2 DQ SB
的输入组态为从 I4.0 开始,则可按 I4.0:P 和 I4.1:P 或 IB4:P 的形式访问输入点。以
I4.7:P 形式访问 I4.2:P 不会被拒绝,但没有任何意义,因为不会使用这些点。但不允许
IW4:P 和 ID4:P 的访问形式,因为它们超出了与该 SB 相关的字节偏移量。
使用 I_:P 访问不会影响存储在输入过程映像中的相应值。
表格 5- 23 I 存储器的绝对地址(立即)
位字节、字或双字Q(过程映像输出):CPU
I[字节地址].[位地址]:P
I[大小][起始字节地址]:P
I0.1:P
IB4:P、IW5:P 或 ID12:P
将存储在输出过程映像中的值复制到物理输出点。可以按位、字节、字或双字访问输出过程映像。过程映像输出允许读访问和写访问。表格 5- 24 Q 存储器的绝对地址
位字节、字或双字Q[字节地址].[位地址]
Q[大小][起始字节地址]
Q1.1
QB5、QW10、QD40
通过在地址后面添加“:P”,可以立即写入 CPU、SB、SM
或分布式模块的物理数字量和模拟量输出。使用 Q_:P 访问与使用 Q
访问的区别是,前者除了将数据写入输出过程映像外还直接将数据写入被访问点(写入两个位置)。这种 Q_:P
访问有时称为“立即写”访问,因为数据是被直接发送到目标点;而目标点不必等待输出过程映像的下一次更新。因为物理输出点直接控制与其连接的现场设备,所以不允许对这些点进行读访问。即,与可读或可写的 Q 访问不同的是,Q_:P 访问为只写访问。
41
工业自动化-花落忆无声PLC 概念
5.2 数据存储、存储区、I/O 和寻址
Q_:P 访问也仅限于单个 CPU、SB 或 SM
所支持的输出大小(向上取整到最接近的字节)。例如,如果将 2 DI/2 DQ SB 组态为从
Q4.0 开始,则可按 Q4.0:P 和 Q4.1:P 或 QB4:P 的形式访问输出点。以 Q4.7:P
的形式访问 Q4.2:P 不会被拒绝,但没有任何意义,因为不会使用这些点。但不允许
QW4:P 和 QD4:P 的访问形式,因为它们超出了与该 SB 相关的字节偏移量。
使用 Q_:P 访问既影响物理输出,也影响存储在输出过程映像中的相应值。
表格 5- 25 Q 存储器的绝对地址(立即)
位字节、字或双字Q[字节地址].[位地址]:P
Q[大小][起始字节地址]:P
Q1.1:P
QB5:P、QW10:P 或
QD40:P
M(位存储区):针对控制继电器及数据的位存储区(M
存储器)用于存储操作的中间状态或其它控制信息。可以按位、字节、字或双字访问位存储区。M 存储器允许读访问和写访问。
表格 5- 26 M 存储器的绝对地址
位字节、字或双字M[字节地址].[位地址]
M[大小][起始字节地址]
M26.7
MB20、MW30、MD50
临时(临时存储器):CPU 根据需要分配临时存储器。启动代码块(对于
OB)或调用代码块(对于 FC 或 FB)时,CPU
将为代码块分配临时存储器并将存储单元初始化为 0。
临时存储器与 M 存储器类似,但有一个主要的区别:M
存储器在“全局”范围内有效,而临时存储器在“局部”范围内有效:
●●M 存储器:任何 OB、FC 或 FB 都可以访问 M存储器中的数据,也就是说这些数据可以全局性地用于用户程序中的所有元素。临时存储器:CPU 限定只有创建或声明了临时存储单元的 OB、FC 或 FB才可以访问临时存储器中的数据。临时存储单元是局部有效的,并且其它代码块不会共享临时存储器,即使在代码块调用其它代码块时也是如此。例如:当 OB 调用 FC时,FC 无法访问对其进行调用的 OB 的临时存储器。CPU 为每个 OB 优先级都提供了临时(本地)存储器:
●●16 KB 用于启动和程序循环(包括相关的 FB 和 FC)6 KB 用于每次额外的中断事件线程,包括相关的 FB 和 FC只能通过符号寻址的方式访问临时存储器。42
工业自动化-花落忆无声PLC 概念
5.2 数据存储、存储区、I/O 和寻址
可通过 STEP 7
中的调用结构查看程序中各块占用的临时(本地)存储器空间。从项目树中选择“程序信息”(Program info),然后选择“调用结构”(Call structure) 选项卡。可以显示程序中的所有
OB,并且您可以进一步展开查看它们调用的块。对于每个块,都可以显示本地数据分配。用户也可以通过 STEP 7“工具 > 调用结构”(Tools > Call structure)
菜单命令来访问“调用结构”(Call structure) 显示。
DB(数据块):DB 存储器用于存储各种类型的数据,其中包括操作的中间状态或 FB
的其它控制信息参数,以及许多指令(如定时器和计数器)所需的数据结构。可以按位、字节、字或双字访问数据块存储器。读/写数据块允许读访问和写访问。只读数据块只允许读访问。表格 5- 27 DB 存储器的绝对地址
位字节、字或双字DB[数据块编号].DBX[字节地址].[位地址]
DB[数据块编号].DB
[大小][起始字节地址]
2.3
4、2、8
说明在 LAD 或 FBD 中指定绝对地址时,STEP 7
会为此地址加上“%”字符前缀,以指示其为绝对地址。编程时,可以输入带或不带“%”字符的绝对地址(例如 %I0.0 或 I.0)。如果忽略,则 STEP 7 将加上“%”字符。
在 SCL 中,必须在地址前输入“%”来表示此地址为绝对地址。如果没有“%”,STEP 7
将在编译时生成未定义的变量错误43
工业自动化-花落忆无声PLC 概念
5.3 模拟值的处理
对 CPU 和 I/O 模块中的 I/O 进行组态
向设备组态添加 CPU 和 I/O 模块时,STEP 7
会自动分配 I 地址和 Q
地址。通过在设备组态中选择地址字段并输入新编号,可以更改默认寻址设置。•无论模块是否使用所有点,STEP 7 都按每组8 点(1字节)的方式分配数字量输入和输出。•STEP 7 以 2个为一组分配模拟量输入和输出,其中每个模拟点占用 2 个字节(16 位)。图中显示的示例是配有两个 SM 及一个 SB 的 CPU 1214C。在该示例中,可以将 DI8
模块的地址更改为 2 而不是
8。用户可借助该工具更改大小有误或与其它地址冲突的地址范围。
5.3 模拟值的处理模拟量信号模块可以提供输入信号,或等待表示电压范围或电流范围的输出值。这些范围是 ±10 V、±5 V、±2.5 V 或 0 - 20 mA。模块返回的值是整数值,其中,0 到 27648
表示电流的额定范围,-27648 到 27648
表示电压的额定范围。任何该范围之外的值即表示上溢或下溢。有关超出范围值的类型的详细信息,请参见模拟量输入表示法 (页 1641)和模拟量输出表示法 (页 1643)表格。
在控制程序中,很可能需要以工程单位使用这些值,例如表示体积、温度、重量或其它数量值。要以工程单位使用模拟量输入,必须首先将模拟值标准化为由 0.0 到 1.0
的实数(浮点)值。然后,必须将其标定为其表示的工程单位的最小值和最大值。对于要转换为模拟量输出值的以工程单位表示的值,应首先将以工程单位表示的值标准化为 0.0
和 1.0 之间的值,然后将其标定为 0 到 27648 之间或 -27648 到 27648
之间(取决于模拟模块的范围)的值。STEP 7 为此提供了 NORM_X 和 SCALE_X 指令
(页 315)。还可以使用 CALCULATE 指令 (页 271)来标定模拟值 (页 44)。
44
工业自动化-花落忆无声PLC 概念
5.3 模拟值的处理
示例:模拟值处理例如,假设模拟量输入的电流范围为 0 - 20 mA。模拟量输入模块返回的测量值介于 0 和
27648 之间。在此示例中,假设使用此模拟量输入值测量 50 °C 到 100 °C
的温度。几个采样值的含义如下:模拟量输入值0
6192
12384
18576
27648
工程单位50 °C
62.5 °C
75 °C
87.5 °C
100 °C
在此示例中,通过模拟量输入值确定工程单位的计算方法如下:工程组态单位值 = 50 +(模拟量输入值)* (100 - 50) / (27648 - 0)
对于一般情况,公式为:工程单位值 = (工程单位范围下限) +
(模拟量输入值) *
(工程单位范围上限 - 工程单位范围下限) /
(模拟量输入上限 - 模拟量输入下限)
在 PLC 应用中,典型的方法是将模拟量输入值标准化为 0.0 至 1.0
之间的浮点值。然后,需要将得到的值换算为工程单位范围内的浮点值。为简单起见,以下 LAD 指令使用常数值表示范围;实际上可能选择使用变量:
程序段 1
程序段 2
45
工业自动化-花落忆无声PLC 概念
5.4 数据类型
5.4 数据类型数据类型用于指定数据元素的大小以及如何解释数据。每个指令参数至少支持一种数据类型,而有些参数支持多种数据类型。将光标停在指令的参数域上方,便可看到给定参数所支持的数据类型。形参指的是指令上标记该指令要使用的数据位置的标识符(例如:ADD 指令的 IN1
输入)。实参指的是包含指令要使用的数据的存储单元(含“%”字符前缀)或常量(例如,%MD400
"Number_of_Widgets")。用户指定的实参的数据类型必须与指令指定的形参所支持的数据类型之一匹配。指定实参时,必须指定变量(符号)或者绝对(直接)存储器地址。变量将符号名(变量名)与数据类型、存储区、存储器偏移量和注释关联在一起,并且可以在 PLC
变量编辑器或块(OB、FC、FB 和
DB)的接口编辑器中进行创建。如果输入一个没有关联变量的绝对地址,使用的地址大小必须与所支持的数据类型相匹配,而默认变量将在输入时创建。除了 String、Struct、Array 和 DTL,其它所有数据类型都可以在 PLC
变量编辑器和块接口编辑器中使用。String、Struct、Array 和 DTL
只可在块接口编辑器中使用。还可以为许多输入参数输入常数值。●●位和位序列 (页 131):Bool(布尔或位值)、Byte(8 位字节值)、Word(16位值)、DWord(32 位双字值)整型 (页 132)–USInt(无符号 8 位整数)、SInt(有符号 8 位整数)、–UInt(无符号 16 位整数)、Int(有符号 16 位整数)–UDInt(无符号 32 位整数)、DInt(有符号 32 位整数)●●●●●●●浮点实数 (页 133):Real(32 位实数或浮点值)、LReal(64 位实数或浮点值)时间和日期 (页 134):Time(32 位 IEC 时间值)、Date(16 位日期值)、TOD(32位时间值)、DTL(12 字节日期和时间结构)字符和字符串 (页 136):Char(8 位单字符)、String(最长 254个字符的可变长度字符串)数组 (页 139)数据结构 (页 140):StructPLC 数据类型 (页 141)Variant 数据类型 (页 141)46
工业自动化-花落忆无声PLC 概念
5.4 数据类型
尽管以下 BCD 格式不能作为数据类型使用,转换指令支持以下 BCD 数字格式:
表格 5- 28 BCD 格式的大小和范围
格式大小(位)数字范围-999 到 999-9999999 到 9999999常量输入示例123,-123
1234567,-1234567
BCD16 16
BCD32 32
5.4.1 Bool、Byte、Word 和 DWord 数据类型
表格 5- 29 位和位序列数据类型
数据类型Bool
位大小1
数值类型布尔运算二进制无符号整数八进制十六进制数值范围FALSE 或 TRUE
2#0 或 2#1
0 或 1
8#0 或 8#1
16#0 或 16#1
2#0 到 2#1111_1111
0 到 255
-128 到 1278#0 到 8#377
到 16#FF
常数示例TRUE
2#0
1
8#1
16#1
2#1000_1001
15
-638#17
地址示例I1.0
Q0.1
M50.7
2.3
Tag_name
IB2
MB10
4
Tag_name
Byte 8 二进制无符号整数有符号整数八进制十六进制B#16#0 到 B#16#FF,16#0 B#16#F、16#F
2#0 到
2#1111_1111_1111_1111
0 到 65535
-32768 到 327678#0 到 8#177_777
W#16#0 到 W#16#FFFF、
16#0 到 16#FFFF
2#1101_0010_1001_0MW10
110
61680
72
8#170_362
W#16#F1C0、16#A67B
2
Tag_name
Word 16 二进制无符号整数有符号整数八进制十六进制47
工业自动化-花落忆无声PLC 概念
5.4 数据类型
数据类型DWord
位大小32
数值类型二进制数值范围2#0 到
111_1111_1111_1111
常数示例地址示例8
Tag_name
2#1101_0100_1111_1MD10
2#1111_1111_1111_1111_1110_1000_1100
无符号整数*
有符号整数*
八进制十六进制0 到 4_294_967_295
-2_147_483_648 到2_147_483_6478#0 到 8#37_777_777_777
DW#16#0000_0000 到
DW#16#FFFF_FFFF、
16#0000_0000 到
16#FFFF_FFFF
*下划线“_”是用于增加大于 8 位的数字可读性的千位分隔符。15_793_935
-4000008#74_177_417
DW#16#20_F30A、16#B_01F6
5.4.2 整数数据类型表格 5- 30 整型数据类型(U = 无符号,S = 短,D = 双)
数据类位大型小USInt
SInt
UInt
Int
UDInt
DInt
8
8
16
16
32
32
数值范围常数示例地址示例0 到 255
-128 到 1270 到 65,535
-32,768 到 32,7670 到 4,294,967,295
-2,147,483,648 到2,147,483,64778, 2#01001110
+50, 16#5065295, 0
30000, +30000
4042322160
-2131754992MB0、4、
Tag_name
MW2、2、
Tag_name
MD6、8、
Tag_name
48
工业自动化-花落忆无声PLC 概念
5.4 数据类型
5.4.3 浮点型实数数据类型如 ANSI/IEEE 754-1985 标准所述,实(或浮点)数以 32 位单精度数 (Real) 或 64
位双精度数 (LReal) 表示。 单精度浮点数的精度最高为 6
位有效数字,而双精度浮点数的精度最高为 15 位有效数字。
在输入浮点常数时,最多可以指定 6 位 (Real) 或 15 位 (LReal) 有效数字来保持精度。
表格 5- 31 浮点型实数数据类型(L = 长浮点型)
数据类位大型小Real 32
数值范围-3.402823e+38 到 -1.175495e-38、±0、+1.175 495e-38 到+3.402823e+38常数示例地址示例123.456, -3.4, 1.0e-MD100、DB1.D5 BD8、Tag_name
LReal 64 -1.7976931348623158e+30812345.123456789eDB__n到-2.2254e-308、±0、+2.2254e-308到+1.7976931348623158e+30840、1.2E+40 ame
规则:•不支持直接寻址•可在 OB、FB或 FC块接口数组中进行分配计算涉及到包含非常大和非常小数字的一长串数值时,计算结果可能不准确。如果数字相差 10 的 x 次方,其中 x > 6 (Real) 或 15 (LReal),则会发生上述情况。 例如
(Real): 100 000 000 + 1 = 100 000 000.
49
更多推荐
事件,中断,执行,循环,错误
发布评论