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

2019-06-05  本文已影响0人  TomatoTor

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

昨天发布了《台达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 发布本文

上一篇 下一篇

猜你喜欢

热点阅读