### S7-300/S7-400 PLC中STL编程语言的整数算术运算指令详解
#### 1. 整数除法指令(/I)
在西门子S7-300/S7-400 PLC的语句表(STL)编程语言中,整数除法指令(/I)是一种用于执行16位整数除法的指令。此指令接收来自累加器2(AC2)和累加器1(AC1)的两个16位整数,将AC2中的数值除以AC1中的数值。运算结果包含两部分:商和余数,分别存储于AC1的低字和高字中。
- **指令格式**:`/I`
- **执行效果**:指令执行后,AC1的低字将存储商的结果,高字存储余数。此外,指令的执行不受RLO(Result of Logic Operation)的影响,且不改变RLO的状态。
- **状态字位影响**:指令执行后,状态字位CC1、CC0、OS和OV会被更新以反映指令的结果。这些状态位用于表示商是否等于零、是否小于零、是否等于-32768以及是否发生除零错误。
- **多累加器处理**:对于具有两个累加器的CPU,AC2的内容保持不变;对于具有四个累加器的CPU,AC3的内容会复制到AC2,AC4的内容复制到AC3,而AC4内容不变。
#### 2. 加上一个整数常数指令(+)
这一指令允许用户对累加器1中的数值进行增加操作,可选择16位或32位整数常数进行加法运算,结果同样保存在累加器1中。
- **指令格式**:`+ <整数常数>`
- **数据类型**:支持16位和32位整数常数,其中16位常数范围是-32768至32767,32位常数范围是-2,147,483,648至2,147,483,647。
- **执行效果**:16位指令仅影响累加器1的低字,32位指令则影响整个累加器1。
- **多累加器处理**:类似整数除法指令,对于不同累加器数量的CPU,会有不同的数据流动方式。
#### 3. 双整数加法指令(+D)
此指令用于执行32位整数的加法操作,将累加器1和累加器2中的双整数相加。
- **指令格式**:`+D`
- **执行效果**:指令执行后,累加器1中存储的是累加器1和累加器2中的数值相加的结果。由于涉及的是32位运算,因此整个累加器1的值都会发生变化。
- **多累加器处理**:类似于前两种指令,对于具有不同累加器数量的CPU,数据的流动方式有所不同,但主要目的都是确保指令执行后,累加器1中存储的是正确的计算结果。
### 实例分析
为了更好地理解上述指令的应用,以下是一些基于S7-300/S7-400 PLC编程的示例:
1. **整数除法实例**
- 输入:IW10 = 13,MW14 = 4
- 指令:`/I`
- 结果:AC1低字 = 3(商),AC1高字 = 1(余数)
2. **加一个16位整数常数实例**
- 操作:`L IW10`, `L MW14`, `+I+25`
- 输入:IW10, MW14
- 结果:AC1低字 = (IW10 + MW14 + 25)
3. **双整数加法实例**
- 操作:`L MD20`, `L MD24`, `+D`
- 输入:MD20, MD24
- 结果:AC1 = (MD20 + MD24)
通过这些指令,S7-300/S7-400 PLC能够高效地处理各种数学运算,从而实现复杂的控制逻辑和数据处理任务。