st_1基本指令应用
(*基本指令应用*)
OUT((X10 OR Y20) AND NOT X12 , Y20); (*自锁电路*)
RST(M0, Y0); (*复位y0*)
SET(X20, Y50);
RST(X20, Y51);
SET(X21, Y51);
RST(X21, Y50);
ZRST( M1 , Y50 , Y51 ); (*批量复位Y50和Y51*)
SET(LDP( TRUE , X40 ), Y60); (*x40上升沿置位Y60*)
RST(LDF( TRUE , X40 ), Y60); (*x40下降沿复位Y60*)
PLS(X30, M5); (*x30接通M5接通一个扫描周期*)
PLF(X30, M6); (*x30断开M6接通一个扫描周期*)
(*8台电机顺序启动程序*)
SET(LDP( TRUE , M40 ) AND Y66 , Y67); (*LDP是上升沿时接通*)
SET(LDP( TRUE , M40 ) AND Y65 , Y66); (*LDP是上升沿时接通*)
SET(LDP( TRUE , M40 ) AND Y64 , Y65); (*LDP是上升沿时接通*)
SET(LDP( TRUE , M40 ) AND Y63 , Y64); (*LDP是上升沿时接通*)
SET(LDP( TRUE , M40 ) AND Y62 , Y63); (*LDP是上升沿时接通*)
SET(LDP( TRUE , M40 ) , Y62); (*LDP是上升沿时接通*)
OUT_T( X5 , TC0 , K20 ); (*X5导通定时器0计时*)
SET(TC0, Y21); (*TN是定时器当前值,TC是线圈,TS是触点*)
(*定时器实现亮灯交替点亮程序*)
(*触点、线圈和当前值分别用TS、TC和TN表示*)
(*FX系列PLC中不能用Q系列PLC高速定时器指令OUTH_T指令,FX系列只有一个指令*)
OUT( (X40 OR M0) AND NOT X41, M0);
OUT_T( (M0 AND NOT TS1) , TC0 , K20 );
OUT_T( (M0 AND TS0) , TC1 , K20 );
OUT( (M0 AND TS0) , Y50 );
OUT( (M0 AND NOT TS0) , Y51 );
(*断电保持定时器应用*)
OUT_T( X30 , TC250 , K50 ); (*FX3U 断电保持定时器 100MS T250~T255*)
OUT( TS250 , Y5 );
RST( X31, TC250); (*累计定时器只能用RST指令清零复位*)
(*高速定时器应用*)
OUT( (X20 OR Y20) AND NOT X21 , Y20 );
OUT_T( Y20 , TC200 , K100 ); (*FX3U 高速定时器 10MS T200~T245*)
D0:= TN200; (*定时器当前值赋给D0*)
(*计数程序*)
(*触点、线圈和当前值分别用CS、CC和CN表示 *)
OUT_C( X0 , CC0 , K10 );
OUT( CS0, Y0);
RST( X1, CC0); (*复位计数器*)
(*16位连续传送指令 MOV*)
MOV( X40 , K1630 , D0 );
MOV( NOT X40 , K5150 , D0 );
OUT(((X20 OR Y50) AND NOT X21) AND NOT TS0 , Y50 );
OUT_T( Y50 , TC0 , D0 );
D1:= TN0;
(*16位脉冲传送指令 MOVP,交换D10和D11中的数据*)
MOVP( X11 , D10 , D80 );
MOVP( X11 , D11 , D10 );
MOVP( X11 , D80 , D11 );
(*用传送指令进行组元件拆分和合并*)
(*K4M0表示M0~M15
K3M0表示M0~M11
K2表示2*4=8
K1表示1*4=4*)
MOVP( X15 , K5150 , K4M0 ); (*数据送入位组元件进行拆分*)
MOVP( X15 , K2M0, D110 ); (*将低8位数据存入D110*)
MOVP( X15 , K2M8 , D111 ); (*将高8位数据存入D111*)
MOVP( X10 , D110, K2M100 ); (*将需要合并的数据放入组合元件*)
MOVP( X10 , D111, K2M108 ); (*将需要合并的数据放入组合元件*)
MOVP( X10 , K4M100 , D200); (*将组合元件的高8位数据,和低8位数据送入D200*)
(*FX系列不支持浮点数传送指令*)
(*批量块传送指令*)
MOVP( M8002 , 3258 , D5 );
BMOVP( X0 , D0 , 10 , D210 ); (*批量块传送D0-D9到D210-D219*)
(*16位多点传送指令FMOV*)
(*将同一数据传送到指定点数的软元件中的多点传送的指令*)
FMOV( X1 , K110 , D210 , K50 ); (*把110数值传送到D210~D610中*)
(*异或指令*)
(*8按钮点动控制8个灯输出,但是8个按钮有常开和常闭*);
MOVP( M8002 , K2X0 , K2M0 ); (*上电把x输入开关的状态读取到K2M0*)
WXOR( M8000 , K2X0 , K2M0 , K2Y0 ); (*两者相同为把0,不同为1。*)
(*8个按钮中有一个按下,其它按钮被锁定,必须再按下这个按钮解锁*)
MOVP( M8002 , K2X0 , K2M0 ); (*上电把x输入开关的状态读取到K2M0*)
WXOR( TRUE, K2X0 , K2M0 , K2M10 ); (*两者相同为0,不同为1。*)
M20:= K2M10<>k0 AND (K2Y0=K0 OR K2M10=K2Y0 );
WXORP( M20, K2M10 , K2Y0 , K2Y0 ); (*再次按下相同锁定按键,两者值相同为0*)
(*步进指令应用*)
SET(M8002,S3); (*开机启动S3*)
STL(TRUE, S3);
Y000:=TRUE;
SET(X0, S20);
STL(TRUE, S20);
Y001:=TRUE;
OUT_T(TRUE, TC1, K100);
SET( TS1 , S21 );
STL(TRUE, S21);
Y002:=TRUE;
SET( X1 , S25 );
STL(TRUE, S25);
RET(TRUE);
OUT( X5 , Y5 );
ZRST( X6, S0 , S100 ); (*复位状态寄存器*)

浙公网安备 33010602011771号