博文

台达AS系列PLC通讯台达A2-M伺服-第二波-(全网首发)

约 1 分钟

本文是林建原创博文,转载需注明出处!谢谢~

昨天发布了《台达AS系列PLC通讯台达A2-M伺服<第一波>(全网首发)》今天继续为大家带来第二波,第二波是在第一波之后的后续。

AS全局变量

Class	Identifiers	      Address	Type	Initial Value	Comment
VAR	g_i_DICtrlWord        D25032	WORD
VAR	g_i_PrCtrl            D25033	WORD
VAR	g_i_AccSpeed          D25034	WORD	20
VAR	g_i_RunSpeed	      D25035	WORD	100
VAR	g_Di_JogSpeed	      D25036	DWORD
VAR	g_Di_RelPos	          D25038	DWORD
VAR	g_Di_AbsPos	          D25040	DWORD
VAR	g_i_AlarmCode         D24032	WORD
VAR	g_i_DICtrlWordReturn  D24033	WORD
VAR	g_i_PrCtrlReturn	  D24034	WORD
VAR	g_Di_ActPos	          D24035	DWORD
VAR	g_i_AxisCtrlWord                INT
VAR	g_b_AxisJogF                    BOOL
VAR	g_b_AxisJogB                    BOOL
VAR	g_Di_AxisJogSpeed               DWORD
VAR	g_i_AxisCtrl	                INT
VAR	g_b_McMoveVel	                BOOL
VAR	g_b_McMoveAbs		            BOOL
VAR	g_b_McMoveHome	                BOOL
VAR	g_Di_SetRelPos                  DWORD
VAR	g_Di_SetAbsPos                  DWORD

PLC程序

(*
Rx
g_i_DICtrlWord  P4-07;
g_i_PrCtrl      P5-07;
g_i_AccSpeed    P5-20;
g_i_RunSpeed    P5-60;
g_Di_JogSpeed   P6-03;
g_Di_RelPos     P6-05;
g_di_AbsPos     P6-07;
Tx
g_i_AlarmCode        P0-01;
g_i_DICtrlWordReturn P4-07;
g_DI_ActPos          P5-16;
*)

CASE g_i_AxisCtrlWord OF
    1:
    g_i_DICtrlWord := 1 ; (*使能*)
    2:
    g_i_PrCtrl := 1000 ;
    g_i_DICtrlWord := 3 ; (*复位*)
ELSE
    g_i_DICtrlWord := 0 ;
END_CASE;

(*寸动*)
IF g_b_AxisJogF AND NOT g_b_AxisJogB THEN
    g_Di_JogSpeed := g_Di_AxisJogSpeed ;
    g_i_AxisCtrl := 1;
ELSIF g_b_AxisJogB AND NOT g_b_AxisJogF THEN
    g_Di_JogSpeed := 0 - g_Di_AxisJogSpeed ;
    g_i_AxisCtrl := 1;
ELSE
    g_i_PrCtrl := 1000 ;
    g_Di_JogSpeed := 0 ;
END_IF;

(*回位*)
IF g_b_McMoveHome then
     g_i_AxisCtrl := 10 ;
ELSE
     g_i_AxisCtrl := 0 ;
END_IF ;

(*相对*)
IF g_b_McMoveVel then
    g_Di_RelPos := g_Di_SetRelPos ;
     g_i_AxisCtrl := 2 ;
ELSE
     g_i_AxisCtrl := 0 ;
END_IF ;
(*绝对*)
IF g_b_McMoveAbs then
     g_Di_AbsPos := g_Di_SetAbsPos ;
     g_i_AxisCtrl := 3 ;
ELSE
     g_i_AxisCtrl := 0 ;
END_IF ;

CASE g_i_AxisCtrl OF
   1:  g_i_PrCtrl := 1 ;
        IF g_i_PrCtrlReturn = 20001 THEN
            g_i_AxisCtrl := 0 ;
        ELSE
            g_i_AxisCtrl := 1 ;
        END_IF;
   2:  g_i_PrCtrl := 2 ;
        IF g_i_PrCtrlReturn = 20002 THEN
            g_i_AxisCtrl := 0 ;
        ELSE
            g_i_AxisCtrl := 2 ;
        END_IF;
   3:  g_i_PrCtrl := 3 ;
        IF g_i_PrCtrlReturn = 20003 THEN
            g_i_AxisCtrl := 0 ;
        ELSE
            g_i_AxisCtrl := 3 ;
        END_IF;
   10: g_i_PrCtrl := 0 ;
        IF g_i_PrCtrlReturn = 20000 THEN
            g_i_AxisCtrl := 0 ;
        ELSE
            g_i_AxisCtrl := 10 ;
        END_IF;
ELSE
    g_i_PrCtrl := 1000 ;
END_CASE;

以上就是台达AS系列PLC通讯台达A2-M伺服的第一种方法。(针对本文中如有对PR模式下的不清楚,可以评论下交流)。 明天会继续会大家带来其他方法。

本文是林建原创博文,转载需注明出处!谢谢~

Log: 2019-06-05 发布本文

相关阅读

← 返回博文列表