本文是林建原创博文,转载需注明出处!谢谢~
昨天发布了《台达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 发布本文
网友评论