一、西门子PLC编程指令
1、位逻辑指令
1.1 -||- 常开接点(地址);
1.2 -|/|- 常闭接点(地址);
1.3 XOR 位异或;
1.4 -|NOT|- 信号流反向;
1.5 -( ) 输出线圈;
1.6 -(#)- 中间输出;
1.7 -(R) 线圈复位;
1.8 -(S) 线圈置位;
1.9 RS 复位置位(置位复位)触发器;
1.10 -(N)- RLO下降沿检测;
1.11 -(P)- PLO上升沿检测;
1.12 -(SAVE) 将RLO存入BR存储器;
1.13 MEG 地址下降沿检测;
1.14 POS 地址上升沿检测;
2、比较指令
2.1 CMP?I 整数比较;
2.2 CMP?D 双整数比较;
2.3 CMP?R 实数比较
3、转换指令
3.1 BCD_IBCD码转换为整数;
3.2 I_BCD 整数转换为BCD码;
3.3 I_DINT 整数转换为双整数;
3.4 BCD_DIBCD码转换为双整数;
3.5 DI_BCD 双整数转换为BCD码;
3.6 DI_REAL 双整数转换为浮点数;
3.7 INV_I 整数的二进制反码;
3.8 INV_DI 双整数的二进制反码;
3.9 NEG_I 整数的二进制补码;
3.10 NEG_DI 双整数的二进制补码;
3.11 NEG_R 浮点数求反;
3.12 ROUND 舍入为双整数;
3.13 TRUNC 舍去小数取整为双整数;
3.14 CEIL 上取整;
3.15 FLOOR 下取整;
4、计数器指令
4.1 S_CUD 加减计数;
4.2 S_CU 加计数器;
4.3 S_CD 减计数器;
4.4 -(SC) 计数器置初值;
4.5 -(CU) 加计数器线圈;
4.6 -(CD) 减计数器线圈;
5、数据块指令
5.1 -(OPN) 打开数据块:DB或DI;
6、逻辑控制指令
6.1 -(JMP) 无条件跳转;
6.2 -(JMP) 条件跳转;
6.3 -(JMPN) 若非则跳转;
6.4 LABEL 标号;
7、整数算术运算指令
7.1 ADD_I 整数加法;
7.2 SUB_I 整数减法;
7.3 MUL_I 整数乘法;
7.4 DIV_I 整数除法;
7.5 ADD_DI 双整数加法;
7.6 SUB_DI 双整数减法;
7.7 MUL_DI 双整数乘法;
7.8 DIV_DI 双整数除法 ;
7.9 MOD_DI 回送余数的双整数
8、浮点算术运算指令
8.1 基础指令
8.1.1 ADD_R 实数加法;
8.1.2 SUB_R 实数减法;
8.1.3 MUL_R 实数乘法;
8.1.4 DIV_R 实数除法;
8.1.5 ABS 浮点数绝对值运算;
8.2 扩展指令
8.2.1 SQR 浮点数平方;
8.2.2 SQRT 浮点数平方根;
8.2.3 EXP 浮点数指数运算;
8.2.4 LN 浮点数自然对数运算;
8.2.5 SIN 浮点数正弦运算;
8.4.6 COS 浮点数余弦运算;
8.2.7 TAN 浮点数正切运算;
8.2.8 ASIN 浮点数反正弦运算;
8.2.9 ACOS 浮点数反余弦运算;
8.2.10ATAN 浮点数反正切运算;
9、赋值指令
9.1 MOVE 赋值;
10、程序控制指令
10.1 -(Call) 从线圈调用FC/SFC(无参数);
10.2 CALL_FB 从方块调用FB;
10.3 CALL_FC 从方块调用FC;
10.4 CALL_SFB 从方块调用SFB;
10.5 CALL_SFC 从方块调用SFC;
10.6 -(MCR<) 主控继电器接通;
10.7 -(MCR>) 主控继电器断开;
10.8 -(MCRA) 主控继电器启动;
10.9 -(MCRD) 主控继电器停止;
10.10 -(RET) 返回;
11、移位和循环指令
11.1 移位指令;
11.1.1 SHR_I 整数右移;
11.1.2 SHR_DI 双整数右移;
11.1.3 SHL_W 字左移;
11.1.4 SHR_W 字右移;
11.1.5 SHL_DW 双字左移;
11.1.6 SHR_DW 双字右移;
11.2 循环指令
11.2.1 ROL_DW 双字左循环;
11.2.2 ROR_DW 双字右循环;
12、状态位指令
12.1 OV -||- 溢出异常位;
12.2 OS -||- 存储溢出异常位;
12.3 UO -||- 无序异常位;
12.4 BR -||- 异常位二进制结果;
12.5 ==0-||- 结果位等于"0";
12.6 <>0-||- 结果位不等于"0";
12.7 >0-||- 结果位大于"0";
12.8 <0-||- 结果位小于"0";
12.9 >=0-||- 结果位大于等于"0";
12.10 <=0-||- 结果位小于等于"0";
13、定时器指令
13.1 S_PULSE 脉冲S5定时器;
13.2 S_PEXT 扩展脉冲S5定时器;
13.3 S_ODT 接通延时S5定时器;
13.4 S_ODTS 保持型接通延时S5定时器;
13.5 S_OFFDT 断电延时S5定时器;
13.6 -(SP) 脉冲定时器线圈;
13.7 -(SE) 扩展脉冲定时器线圈;
13.8 -(SD) 接通延时定时器线圈;
13.9 -(SS) 保持型接通延时定时器线圈;
13.10 -(SF) 断开延时定时器线圈;
14、字逻辑指令
14.1 WAND_W 字和字相"与";
14.2 WOR_W 字和字相"或";
14.3 WAND_DW 双字和双字相"与";
14.4 WOR_DW 双字和双字相"或";
14.5 WXOR_W 字和字相"异或";
14.6 WXOR_DW 双字和双字相"异或“
二、三菱FX系列PLC的基本逻辑指令
1、取指令与输出指令(LD/LDI/LDP/LDF/OUT)
1.1 LD(取指令) 一个常开触点与左母线连接的指令,每一个以常开触点开始的逻辑行都用此指令;
1.2 LDI(取反指令) 一个常闭触点与左母线连接指令,每一个以常闭触点开始的逻辑行都用此指令;
1.3 LDP(取上升沿指令) 与左母线连接的常开触点的上升沿检测指令,仅在指定位元件的上升沿(由OFF→ON)时接通一个扫描周期;
1.4 LDF(取下降沿指令) 与左母线连接的常闭触点的下降沿检测指令;
1.5 OUT(输出指令) 对线圈进行驱动的指令,也称为输出指令;
2、取指令与输出指令的使用说明:
2.1 LD、LDI指令既可用于输入左母线相连的触点,也可与ANB、ORB指令配合实现块逻辑运算;
2.2 LDP、LDF指令仅在对应元件有效时维持一个扫描周期的接通;
2.3 LD、LDI、LDP、LDF指令的目标元件为X 、Y 、M 、T、C、S;4)OUT指令可以连续使用若干次(相当于线圈并联),对于定时器和计数器,在OUT指令之后应设置常数K或数据寄存器;
2.4 OUT指令目标元件为Y、M、T、C和S,但不能用于X;
3、触点串联指令(AND/ANI/ANDP/ANDF)
3.1 AND(与指令) 一个常开触点串联连接指令,完成逻辑“与”运算;
3.2 ANI(与反指令) 一个常闭触点串联连接指令,完成逻辑“与非”运算;
3.3 ANDP 上升沿检测串联连接指令;
3.4 ANDF 下降沿检测串联连接指令;
4、触点串联指令的使用的使用说明:
4.1AND、ANI、ANDP、ANDF都指是单个触点串联连接的指令,串联次数没有限制,可反复使用;
4.2 AND、ANI、ANDP、ANDF的目标元元件为X、Y、M、T、C和S;
4.3 OUT M101指令之后通过T1的触点去驱动Y4称为连续输出;
5、触点并联指令(OR/ORI/ORP/ORF)
5.1 OR(或指令) 用于单个常开触点的并联,实现逻辑“或”运算;
5.2 ORI(或非指令) 用于单个常闭触点的并联,实现逻辑“或非”运算;
5.3 ORP 上升沿检测并联连接指令;
5.4 ORF 下降沿检测并联连接指令;
6、触点并联指令的使用说明:
6.1 OR、ORI、ORP、ORF指令都是指单个触点的并联,并联触点的左端接到LD、LDI、LDP或LPF处,右端与前一条指令对应触点的右端相连。触点并联指令连续使用的次数不限;
6.2 OR、ORI、ORP、ORF指令的目标元件为X、Y、M、T、C、S;
7、块操作指令(ORB / ANB)
7.1 ORB(块或指令) 用于两个或两个以上的触点串联连接的电路之间的并联;
7.2 ORB指令的使用说明:
7.2.1 几个串联电路块并联连接时,每个串联电路块开始时应该用LD或LDI指令;
7.2.2 有多个电路块并联回路,如对每个电路块使用ORB指令,则并联的电路块数量没有限制;
7.2.3 ORB指令也可以连续使用,但这种程序写法不推荐使用,LD或LDI指令的使用次数不得超过8次,也就是ORB只能连续使用8次以下;
7.2.4 ANB(块与指令) 用于两个或两个以上触点并联连接的电路之间的串联;
8、ANB指令的使用说明:
8.1 并联电路块串联连接时,并联电路块的开始均用LD或LDI指令;
8.2多个并联回路块连接按顺序和前面的回路串联时,ANB指令的使用次数没有限制。也可连续使用ANB,但与ORB一样,使用次数在8次以下;
9、置位与复位指令(SET/RST)
9.1 SET(置位指令) 它的作用是使被操作的目标元件置位并保持;
9.2 RST(复位指令) 使被操作的目标元件复位并保持清零状态,SET、RST指令的使用,当X0常开接通时,Y0变为ON状态并一直保持该状态,即使X0断开Y0的ON状态仍维持不变;只有当X1的常开闭合时,Y0才变为OFF状态并保持,即使X1常开断开,Y0也仍为OFF状态;
9.3 SET 、RST指令的使用说明:SET指令的目标元件为Y、M、S,RST指令的目标元件为Y、M、S、T、C、D、V 、Z。RST指令常被用来对D、Z、V的内容清零,还用来复位积算定时器和计数器;
9.4 对于同一目标元件,SET、RST可多次使用,顺序也可随意,但最后执行者有效;
10、微分指令(PLS/PLF)
10.1 PLS(上升沿微分指令) 在输入信号上升沿产生一个扫描周期的脉冲输出;
10.2 PLF(下降沿微分指令) 在输入信号下降沿产生一个扫描周期的脉冲输出;
10.3 PLS、PLF指令的目标元件为Y和M;
10.4 使用PLS时,仅在驱动输入为ON后的一个扫描周期内目标元件ON,M0仅在X0的常开触点由断到通时的一个扫描周期内为ON,使用PLF指令时只是利用输入信号的下降沿驱动,其它与PLS相同;
11、主控指令(MC/MCR)
11.1 MC(主控指令) 用于公共串联触点的连接,执行MC后,左母线移到MC触点的后面;
11.2 MCR(主控复位指令) 它是MC指令的复位指令,即利用MCR指令恢复原左母线的位置;
在编程时常会出现这样的情况,多个线圈同时受一个或一组触点控制,如果在每个线圈的控制电路中都串入同样的触点,将占用很多存储单元,使用主控指令就可以解决这一问题,MC、MCR指令利用MC N0 M100实现左母线右移,使Y0、Y1都在X0的控制之下,其中N0表示嵌套等级,在无嵌套结构中N0的使用次数无限制,利用MCR N0恢复到原左母线状态,如果X0断开则会跳过MC、MCR之间的指令向下执行;
MC、MCR指令的使用说明:
A:MC、MCR指令的目标元件为Y和M,但不能用特殊辅助继电器,MC占3个程序步,MCR占2个程序步;
B:主控触点在梯形图中与一般触点垂直,主控触点是与左母线相连的常开触点,是控制一组电路的总开关,与主控触点相连的触点必须用LD或LDI指令;
C:MC指令的输入触点断开时,在MC和MCR之内的积算定时器、计数器、用复位/置位指令驱动的元件保持其之前的状态不变,非积算定时器和计数器,用OUT指令驱动的元件将复位,22中当X0断开,Y0和Y1即变为OFF;
D:在一个MC指令区内若再使用MC指令称为嵌套,嵌套级数最多为8级,编号按N0→N1→N2→N3→N4→N5→N6→N7顺序增大,每级的返回用对应的MCR指令,从编号大的嵌套级开始复位;
12、堆栈指令(MPS/MRD/MPP)
堆栈指令是FX系列中新增的基本指令,用于多重输出电路,为编程带来便利,在FX系列PLC中有11个存储单元,它们专门用来存储程序运算的中间结果,被称为栈存储器;
12.1 MPS(进栈指令) 将运算结果送入栈存储器的第一段,同时将先前送入的数据依次移到栈的下一段;
12.2 MRD(读栈指令) 将栈存储器的第一段数据(最后进栈的数据)读出且该数据继续保存在栈存储器的第一段,栈内的数据不发生移动;
12.3 MPP(出栈指令) 将栈存储器的第一段数据(最后进栈的数据)读出且该数据从栈中消失,同时将栈中其它数据依次上移;
堆栈指令的使用说明:
A:堆栈指令没有目标元件;
B:MPS和MPP必须配对使用;
C:由于栈存储单元只有11个,所以栈的层次最多11层;
13、逻辑反、空操作与结束指令(INV/NOP/END)
13.1 INV(反指令) 执行该指令后将原来的运算结果取反,反指令的使用如图10所示,如果X0断开,则Y0为ON,否则Y0为OFF,使用时应注意INV不能象指令表的LD、LDI、LDP、LDF那样与母线连接,也不能象指令表中的OR、ORI、ORP、ORF指令那样单独使用;
13.2 NOP(空操作指令) 不执行操作,但占一个程序步,执行NOP时并不做任何事,有时可用NOP指令短接某些触点或用NOP指令将不要的指令覆盖,当PLC执行了清除用户存储器操作后,用户存储器的内容全部变为空操作指令;
13.3 END(结束指令) 表示程序结束,若程序的最后不写END指令,则PLC不管实际用户程序多长,都从用户程序存储器的第一步执行到最后一步,若有END指令,当扫描到END时,则结束执行程序,这样可以缩短扫描周期,在程序调试时,可在程序中插入若干END指令,将程序划分若干段,在确定前面程序段无误后,依次删除END指令,直至调试结束;
三、FX系列PLC的步进指令
1、步进指令(STL/RET)
步进指令是专为顺序控制而设计的指令,在工业控制领域许多的控制过程都可用顺序控制的方式来实现,使用步进指令实现顺序控制既方便实现又便于阅读修改,FX2N中有两条步进指令:STL(步进触点指令)和RET(步进返回指令),STL和RET指令只有与状态器S配合才能具有步进功能,如STL S200表示状态常开触点,称为STL触点,它在梯形图中的符号为-|| ||- ,它没有常闭触点;
我们用每个状态器S记录一个工步,例STL S200有效(为ON),则进入S200表示的一步(类似于本步的总开关),开始执行本阶段该做的工作,并判断进入下一步的条件是否满足。一旦结束本步信号为ON,则关断S200进入下一步,如S201步,RET指令是用来复位STL指令,执行RET后将重回母线,退出步进状态;
2、状态转移图
一个顺序控制过程可分为若干个阶段,也称为步或状态,每个状态都有不同的动作,当相邻两状态之间的转换条件得到满足时,就将实现转换,即由上一个状态转换到下一个状态执行,我们常用状态转移图(功能表图)描述这种顺序控制过程,用状态器S记录每个状态,X为转换条件,如当X1为ON时,则系统由S20状态转为S21状态;状态转移图中的每一步包含三个内容:本步驱动的内容,转移条件及指令的转换目标,步驱动Y0,当X1有效为ON时,则系统由S20状态转为S21状态,X1即为转换条件,转换的目标为S21步;
3、步进指令的使用说明
3.1 STL触点是与左侧母线相连的常开触点,某STL触点接通,则对应的状态为活动步;
3.2 与STL触点相连的触点应用LD或LDI指令,只有执行完RET后才返回左侧母线;
3.3 STL触点可直接驱动或通过别的触点驱动Y、M、S、T等元件的线圈;
3.4 由于PLC只执行活动步对应的电路块,所以使用STL指令时允许双线圈输出(顺控程序在不同的步可多次驱动同一线圈);
3.5 STL触点驱动的电路块中不能使用MC和MCR指令,但可以用CJ指令;
3.6 在中断程序和子程序内,不能使用STL指令;