一、CODESYS SoftMotion编程实例
所有关于SoftMotion都会放在特定位置,可以参考学习,我自己的路径是:D:\CODESYS16\CODESYS\Projects\SoftMotion\4.6.3.0\Examples\Tutorial
功能块需要:使能功能块MC_Power
、绝对运动功能块MC_MoveAbsolute
。下面是编程步骤(极其繁琐)
Ctrl+N 新建一个工程:
因为我的设备是树莓派单核,所以选择CODESYS Control for Raspberry pi SL(...)
: 左侧的设备栏如下图所示:
找到
SoftMotion General Axis Pool
,右键添加设备
,选择虚拟驱动器,将这个设备重命名为drive
:
重命名不能用F2
,只能按照以下操作: 配置好了之后就可以编写程序了:点击文件
PLC_PRG
,将变量区声明内容写成如下:
PROGRAM PLC_PRG
VAR
iStatus:INT;
Power:MC_Power;//功能块MC_Power声明
MoveAbsolute:MC_MoveAbsolute;//绝对运动功能块MC_MoveAbsolute声明
p:REAL:=1000;//变量p,运动位置
END_VAR
代码区写入:
CASE iStatus OF
0:
Power(Enable:=TRUE,bRegulatorOn:=TRUE,bDriveStart:=TRUE,Axis:=Drive);
IF Power.Status THEN
istatus:=istatus+1;
END_IF
1:
MOVEAbsolute(Execute:=TRUE,Position:=p,Velocity:=100,Acceleration:=100,Deceleration:=100,Axis:=Drive);
IF MoveAbsolute.Done THEN
MOVEAbsolute(Execute:=FALSE,Axis:=Drive);
istatus:=istatus+1;
END_IF
2:
MOVEAbsolute(Execute:=TRUE,Position:=0,Velocity:=100,Acceleration:=100,Deceleration:=100,Axis:=Drive);
IF MoveAbsolute.Done THEN
MOVEAbsolute(Execute:=FALSE,Axis:=Drive);
iStatus:=1;
END_IF
END_CASE
连接我们的树莓派(一系列折腾)点击编译F11
编译,确定没有问题之后登录(登录之后就能看到"PLC"状态了): 启动:
点击Dirve设备,也就是我们刚刚创建出来的虚拟驱动器。
非常好可以看到我们轴确实按照我们预想往复运动:
再通过向Application添加一个监控功能来观察:
右上角点击配置,选中我们的任务MainTask
添加一个变量:
在track图表内点击下载跟踪:
可以看到跟踪内容: 你可以根据你的需要添加多个跟踪变量的值。