淄博西门子代理商
4.1.1 执行用户程序
在扫描周期的执行阶段,CPU
执行主程序,从*条指令开始并继续执行到后一个指令。
在主程序或中断例程的执行过程中,使用立即 I/O 指令可立即访问输入和输出。
如果在程序中使用子例程,则子例程作为程序的一部分进行存储。主程序、另一个子例程或中断例程调用子例程时,执行子例程。
从主程序调用时子例程的嵌套深度是 8 级,从中断例程调用时嵌套深度是 4 级。
如果在程序中使用中断,则与中断事件相关的中断例程将作为程序的一部分进行存储。 在正常扫描周期中并不一定执行中断例程,而是当发生中断事件时才执行中断例程(可以是扫描周期内的任何时间)。
为 14 个实体中的每一个保留局部存储器:
主程序、八个子例程嵌套级别(从主程序启动时)、一个中断例程和四个子例程嵌套级别(从中断程序启动时)。
局部存储器有一个局部范围,局部存储器仅在相关程序实体内可用,其它程序实体无法访问。 有关局部存储器的详细信息,请参见本章中的局部存储区: L。
下图描述了一个典型的扫描流程,该流程包括局部存储器使用和两个中断事件(一个事件发生在程序执行阶段,另一个事件发生在扫描周期的通信阶段)。
子例程由下一个较高级别调用,并在调用时执行。
没有调用中断例程;发生相关中断事件时才调用中断例程。
图 4-1 典型扫描流程
4.1 访问数据
CPU 将信息存储在不同存储单元,每个位置均具有的地址。可以显式标识要访问的存储器地址。 这样程序将直接访问该信息。
要访问存储区中的位,必须地址,该地址包括存储器标识符、字节地址和位号(也称为“字节.位"寻址)。
表格 4- 2 位寻址
位地址元素 | 说明 | |
| A | 存储区标识符 |
B | 字节地址: 字节 3 | |
C | 分隔符(“字节.位") | |
D | 位在字节中的位置(位 4,共 8 位,编号 7 到 0
的位) | |
E | 存储区的字节 | |
F | 选定字节的位 |
在此示例中,存储区和字节地址(“M3")代表 M 存储器的第 3个字节,用句点(“.")与位地址(位 4)分开。
使用“字节地址"格式可按字节、字或双字访问多数存储区(V、I、Q、M、S、L 和SM)中的数据。
要按字节、字或双字访问存储器中的数据,必须采用类似于位地址的方法地址。这包括区域标识符、数据大小标识和字节、字或双字值的起始字节地址,如下图所示。
下表给出了不同数据长度可表示的整数值范围
淄博西门子代理商
表格 4- 3 不同数据长度表示的十进制和十六进制数范围
表示方式 | 字节 (B) | 字 (W) | 双字 (D) |
无符号整数 | 0 到 255
16#00 到 16#FF | 0 到 65,535
16#0000 到 16#FFFF | 0 到 4,294,967,295
16#00000000 到 16#FFFFFFFF |
有符号整数 | -128 到 +127 | -32,768 到 +32,767 | -2,147,483,648 到 +2,147,483,647 |
16#80 到 16#7F | 16#8000 到 16#7FFF | 16#8000 0000 到 16#7FFF FFFF | |
实数(IEEE | 不适用 | 不适用 | +1.175495E-38 到 |
32 | +3.402823E+38(正数) | ||
位浮点数) | -1.175495E-38 到 -3.402823E+38(负数) |
使用包括区域标识符和设备编号的地址格式来访问其它 CPU 存储区(如 T、C、HC和累加器)中的数据。
4.1.1 访问存储区
I(过程映像输入)
CPU
在每次扫描周期开始时对物理输入点采样,然后将采样值写入过程映像输入寄存器。用户可以按位、字节、字或双字来访问过程映像输入寄存器:
表格 4- 4 I 存储器的寻址
位: | I[字节地址].[位地址] | I0.1 |
字节、字或双字: | I[大小][起始字节地址] | IB4、
IW7、 ID20 |
Q(过程映像输出)
扫描周期结束时,CPU
将存储在过程映像输出寄存器的值复制到物理输出点。用户可以按位、字节、字或双字来访问过程映像输出寄存器:
表格 4- 5 Q 存储器的寻址
位: | Q[字节地址].[位地址] | Q1.1 |
字节、字或双字: | Q[大小][起始字节地址] | QB5、QW
14、QD28 |
V(变量存储器)
可以使用 V 存储器存储程序执行程序中控制逻辑操作的中间结果。 也可以使用 V
存储器存储与过程或任务相关的其它数据。 可以按位、字节、字或双字访问 V 存储器:
表格 4- 6 V 存储器的寻址
位: | V[字节地址].[位地址] | V10.2 |
字节、字或双字: | V[大小][起始字节地址] | VB16、
VW100、 VD2136 |
M(标志存储器)
可以将标志存储区(M
存储器)用作内部控制继电器来存储操作的中间状态或其它控制信息。可以按位、字节、字或双字访问标志存储区:
表格 4- 7 M 存储器的寻址
位: | M[字节地址].[位地址] | M26.7 |
字节、字或双字: | M[大小][起始字节地址] | MB0、MW
11、MD20 |
T(定时器存储器)
CPU 提供的定时器能够以 1 ms、10 ms 或 100 ms
的精度(时基增量)累计时间。定时器有两个变量:
当前值: 该 16位有符号整数可存储定时器计数的时间量。
定时器位: 比较当前值和预设值后,可置位或清除该位。预设值是定时器指令的一部分。
可以使用定时器地址(T + 定时器编号)访问这两个变量。访问定时器位还是当前值取决于所使用的指令:
带位操作数的指令会访问定时器位,而带字操作数的指令则访问当前值。
如下图所示,“常开触点"指令访问的是定时器位,而“移动字"指令访问的是定时器的当前值。
定时器: | T[定时器编号] | T24 |
表格 4- 8 T 存储器的寻址
C(计数器存储器)
CPU 提供三种类型的计数器,对计数器输入上的每一个由低到高的跳变事件进行计数: 一种类型仅向上计数,一种仅向下计数,还有一种可向上和向下计数。
有两个与计数器相关的变量:
当前值: 该 16位有符号整数用于存储累加的计数值。
计数器位: 比较当前值和预设值后,可置位或清除该位。预设值是计数器指令的一部分。
可以使用计数器地址(C + 计数器编号)访问这两个变量。访问计数器位还是当前值取决于所使用的指令:
带位操作数的指令会访问计数器位,而带字操作数的指令则访问当前值。
如下图所示,“常开触点"指令访问的是计数器位,而“移动字"指令访问的是计数器的当前值。
计数器 | C[计数器编号] | C24 |
表格 4- 9 C 存储器的寻址
图 4-3 访问计数器位或计数器的当前值
HC(高速计数器)
高速计数器独立于 CPU 的扫描周期对高速事件进行计数。 高速计数器有一个有符号 32 位整数计数值(或当前值)。 要访问高速计数器的计数值,您需要利用存储器类型 (HC)和计数器编号高速计数器的地址。
高速计数器的当前值是只读值,仅可作为双字(32 位)来寻址。
表格 4- 10 HC 存储器的寻址
高速计数器 | HC[高速计数器编号] | HC1 |
AC(累加器)
累加器是可以像存储器一样使用的读/写器件。
例如,可以使用累加器向子例程传递参数或从子例程返回参数,并可存储计算中使用的中间值。 CPU 提供了四个 32 位累加器(AC0、AC1、AC2 和 AC3)。
可以按位、字节、字或双字访问累加器中的数据。
被访问的数据大小取决于访问累加器时所使用的指令。
如下图所示,当以字节或字的形式访问累加器时,使用的是数值的低 8 位或低 16 位。
当以双字的形式访问累加器时,使用全部 32 位。
表格 4- 11 AC 存储器的寻址
累加器 | AC[累加器编号] | AC0 |
图 4-4 访问累加器
SM(特殊存储器)
SM 位提供了在 CPU 和用户程序之间传递信息的一种方法。可以使用这些位来选择和控制 CPU 的某些特殊功能,例如:
在*个扫描周期接通的位、以固定速率切换的位或显示数学或运算指令状态的位。可以按位、字节、字或双字访问 SM 位:
表格 4- 12 SM 存储器的寻址
- 上一篇:一级代理青岛西门子代理商
- 下一篇:一级代理枣庄西门子代理商