西门子PLC的编程指令丰富多样,涵盖了位逻辑、比较、转换、计数器、数据块、逻辑控制、整数算术运算、浮点算术运算、赋值、程序控制、移位和循环、状态位、定时器以及字逻辑等多个方面。以下是对这些指令的详细归纳:
一、位逻辑指令
- 常开接点(地址):表示一个常开触点的状态。
- 常闭接点(地址):表示一个常闭触点的状态。
- XOR 位异或:对两个位进行异或运算。
- 信号流反向:用于反转信号流的方向。
- 输出线圈:用于表示输出状态。
- 中间输出:在程序中作为中间状态的输出。
- 线圈复位:将线圈状态复位。
- 线圈置位:将线圈状态置位。
- RS 复位置位触发器:RS触发器的一种,具有置位和复位功能。
- RLO下降沿检测:检测RLO(结果逻辑或)的下降沿。
- PLO上升沿检测:检测PLO(可能指某个特定逻辑结果的上升沿,但此处可能是一个笔误或特定上下文中的术语)的上升沿。
- 将RLO存入BR存储器:将RLO的结果存入BR存储器中。
- 地址下降沿检测和地址上升沿检测:分别用于检测指定地址的下降沿和上升沿。
二、比较指令
- 整数比较(CMP?I):比较两个整数的值。
- 双整数比较(CMP?D):比较两个双整数的值。
- 实数比较(CMP?R):比较两个实数的值。
三、转换指令
- BCD码转换为整数(BCD_I):将BCD码转换为整数。
- 整数转换为BCD码(I_BCD):将整数转换为BCD码。
- 整数转换为双整数(I_DINT):将整数转换为双整数。
- BCD码转换为双整数(BCD_DI):将BCD码转换为双整数。
- 双整数转换为BCD码(DI_BCD):将双整数转换为BCD码。
- 双整数转换为浮点数(DI_REAL):将双整数转换为浮点数。
- 整数的二进制反码(INV_I):求整数的二进制反码。
- 双整数的二进制反码(INV_DI):求双整数的二进制反码。
- 整数的二进制补码(NEG_I):求整数的二进制补码。
- 双整数的二进制补码(NEG_DI):求双整数的二进制补码。
- 浮点数求反(NEG_R):求浮点数的相反数。
- 舍入为双整数(ROUND):将数值舍入为双整数。
- 舍去小数取整为双整数(TRUNC):舍去小数部分,取整为双整数。
- 上取整(CEIL):向上取整。
- 下取整(FLOOR):向下取整。
四、计数器指令
- 加减计数(S_CUD):实现加减计数功能。
- 加计数器(S_CU):实现加计数功能。
- 减计数器(S_CD):实现减计数功能。
- 计数器置初值(SC):设置计数器的初始值。
- 加计数器线圈(CU):控制加计数器的线圈。
- 减计数器线圈(CD):控制减计数器的线圈。
五、数据块指令
- 打开数据块(OPN):用于打开指定的数据块(DB或DI)。
六、逻辑控制指令
- 无条件跳转(JMP):无条件跳转到指定位置。
- 条件跳转(JMP,此处可能指特定条件下的跳转指令,但通常应有不同标识以区分无条件跳转):在满足特定条件时跳转到指定位置。
- 若非则跳转(JMPN):若条件不满足,则跳转到指定位置。
- 标号(LABEL):用于标记程序中的特定位置。
七、整数算术运算指令
- 整数加法(ADD_I):进行整数加法运算。
- 整数减法(SUB_I):进行整数减法运算。
- 整数乘法(MUL_I):进行整数乘法运算。
- 整数除法(DIV_I):进行整数除法运算。
- 双整数加法(ADD_DI):进行双整数加法运算。
- 双整数减法(SUB_DI):进行双整数减法运算。
- 双整数乘法(MUL_DI):进行双整数乘法运算。
- 双整数除法(DIV_DI):进行双整数除法运算。
- 回送余数的双整数(MOD_DI):进行双整数除法并返回余数。
八、浮点算术运算指令
-
基础指令:
- 实数加法(ADD_R):进行实数加法运算。
- 实数减法(SUB_R):进行实数减法运算。
- 实数乘法(MUL_R):进行实数乘法运算。
- 实数除法(DIV_R):进行实数除法运算。
- 浮点数绝对值运算(ABS):求浮点数的绝对值。
-
扩展指令:
- 浮点数平方(SQR):求浮点数的平方。
- 浮点数平方根(SQRT):求浮点数的平方根。
- 浮点数指数运算(EXP):进行浮点数的指数运算。
- 浮点数自然对数运算(LN):求浮点数的自然对数。
- 浮点数正弦运算(SIN):求浮点数的正弦值。
- 浮点数余弦运算(COS):求浮点数的余弦值。
- 浮点数正切运算(TAN):求浮点数的正切值。
- 浮点数反正弦运算(ASIN):求浮点数的反正弦值。
- 浮点数反余弦运算(ACOS):求浮点数的反余弦值。
- 浮点数反正切运算(ATAN):求浮点数的反正切值。
九、赋值指令
十、程序控制指令
- 从线圈调用FC/SFC(无参数)(Call):从线圈调用功能块或功能。
- 从方块调用FB(CALL_FB):从方块调用功能块。
- 从方块调用FC(CALL_FC):从方块调用功能。
- 从方块调用SFB(CALL_SFB):从方块调用系统功能块。
- 从方块调用SFC(CALL_SFC):从方块调用系统功能。
- 主控继电器接通(MCR<):接通主控继电器。
- 主控继电器断开(MCR>):断开主控继电器。
- 主控继电器启动(MCRA):启动主控继电器。
- 主控继电器停止(MCRD):停止主控继电器。
- 返回(RET):从子程序或功能块中返回。
十一、移位和循环指令
-
移位指令:
- 整数右移(SHR_I):将整数向右移位。
- 双整数右移(SHR_DI):将双整数向右移位。
- 字左移(SHL_W):将字向左移位。
- 字右移(SHR_W):将字向右移位。
- 双字左移(SHL_DW):将双字向左移位。
- 双字右移(SHR_DW):将双字向右移位。
-
循环指令:
- 双字左循环(ROL_DW):将双字向左循环移位。
- 双字右循环(ROR_DW):将双字向右循环移位。
十二、状态位指令
- 溢出异常位(OV):表示溢出异常状态。
- 存储溢出异常位(OS):表示存储溢出异常状态。
- 无序异常位(UO):表示无序异常状态。
- 异常位二进制结果(BR):表示异常状态的二进制结果。
- 结果位等于0(==0):表示结果位等于0的状态。
- 结果位不等于0(<>0):表示结果位不等于0的状态。
- 结果位大于0(>0):表示结果位大于0的状态。
- 结果位小于0(<0):表示结果位小于0的状态。
- 结果位大于等于0(>=0):表示结果位大于等于0的状态。
- **结果位小于等于0