本人小白,正在开始学习codesys,将自己的学习过程中的一些进行记录和分享,有问题一起交流学习呀
本文是运动控制的第一部分,在本文阅读前,默认已经安装好codesys软件了,那么我们开始吧
1.在SoftMotion General Axis Pool下方的设备树中插入一个名为drive的虚拟轴。
2.在设备树中添加一个名为MOTION_PRG 的POUs,类型选择程序,语言选择为ST,同时添加到MainTask中,将系统自建的PLC_PRG删除。
这一步是在双击MainTask,在图中框选的位置将PLC_PRG删除,将MOTION_PRG添加进来。
当然在这个位置也可以不做这一步的操作,直接在PLC_PRG中进行编程。为了更好的突出是进行的运动控制,故添加了其他的POUs。
3.在MOTION_PRG中,进行程序编写。在变量声明区域声明以下变量并对某些变量赋初值。
PROGRAM Motion_PRG
VAR
iStatus : INT;
Power :MC_Power;
MoveAbsolute: MC_MoveAbsolute;
p : REAL := 100;
END_VAR
在程序段中编写一些程序。
CASE iStatus OF
0:
Power(
Axis:= Drive,
Enable:= TRUE,
bRegulatorOn:= TRUE,
bDriveStart:= TRUE,
Status=> ,
bRegulatorRealState=> ,
bDriveStartRealState=> ,
Busy=> ,
Error=> ,
ErrorID=> );
IF power.Status THEN
iStatus := iStatus+1;
END_IF
1:
MoveAbsolute(
Axis:=Drive ,
Execute:= TRUE,
Position:= p,
Velocity:= 100,
Acceleration:= 100,
Deceleration:= 100,
Jerk:= ,
Direction:= ,
BufferMode:= ,
Done=> ,
Busy=> ,
Active=> ,
CommandAborted=> ,
Error=> ,
ErrorID=> );
IF MoveAbsolute.Done THEN
MoveAbsolute(axis := drive,execute := FALSE);
iStatus := iStatus +1;
END_IF
2:
MoveAbsolute(
Axis:= Drive,
Execute:= TRUE,
Position:= 0,
Velocity:= 100,
Acceleration:= 100,
Deceleration:= 100,
Jerk:= ,
Direction:= ,
BufferMode:= ,
Done=> ,
Busy=> ,
Active=> ,
CommandAborted=> ,
Error=> ,
ErrorID=> );
IF MoveAbsolute.Done THEN
MoveAbsolute(Axis := Drive,Execute := FALSE);
iStatus := 1;
END_IF
END_CASE
4.下载至控制器中,并启动它。
5.双击名为Drive的虚拟轴,在通用选项卡中的在线,可以看到轴在运动。
蓝色块即模拟的虚轴的位置,会在0–100之间进行运动。
有问题一起交流吧