西门子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