跃然纸上

#😎路漫漫其修远兮,吾将上下而求索!

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 ); (*复位状态寄存器*)

 

posted @ 2021-04-02 23:52  CCFWZ  阅读(1)  评论(0)    收藏  举报