一、任务描述:
(1)点动控制(速度10u/s,加减速为100u/s²)
1)按下点动正转按钮,电机正转;松开后,电机停止。
2)按下点动反转按钮,电机反转;松开后,电机停止。
(2)速度控制(速度10u/s,加减速为100u/s²)
1)按下速度运行正转按钮,电机匀速正转运行。
2)按下速度运行反转按钮,电机匀速反转运行。
(3)绝对位置控制(速度10u/s,加减速为100u/s²)
1)按下绝对位置正转按钮,电机正向运行并停在绝对位置90°位置
2)按下绝对位置反转按钮,电机反向运行并停在绝对位置-90°位置
(4)相对位置控制(速度10u/s,加减速为100u/s²)
1)按下绝对位置正转按钮,电机正向运行并停在相对位置60°位置
2)按下绝对位置反转按钮,电机正向运行并停在相对位置-60°位置
(5)停止控制。在上述(2)~(4)运行过程中,按下停止按钮,电机减速后停止运行
二、任务实施流程:
指令介绍:
MC_Power 用于启动和禁用轴
MC_Jog 用于点动控制轴运动
MC_MoveVelocity用于控制轴做匀速运动
MC_MoveAbsolute用于控制轴以指定的动态值(速度、加减速、加加速度)移动到绝对位置
MC_MoveRelative用于控制轴以指定的动态值(速度、加减速、加加速度)移动到相对位置
MC_Halt 用于控制轴的停止
三、新建工程:
选择设备时,选择“Codesys SoftMotion Win V3”,则在产生的工程项目树中自动添加“SoftMotion General Axis Pool”,通过它可进行添加和设置轴驱动,编程语言选择ST。
四、添加轴驱动
在设备树下右击选择“SoftMotion General Axis Pool”,在弹出的窗口中选择"添加设备..",将弹出"添加设备窗口,选择"虚拟驱动器-SM_Drive_Virtual"后,单击"添加设备",此时"SM_Drive_Virtual"将添加到设备树"SoftMotion General Axis Pool"下面。
五、轴驱动设置
在设备树选中并单击SM_Drive_Virtual,弹出设置窗口,选择"SoftMotion 驱动:通用",可进行轴类与限位、动态限制、速率斜坡类型设置,本示例仅将动态限制下的速度和加速度进行修改。
六、程序:
变量部分:
PROGRAMPLC_PRGVARFB_MP :MC_Power;bJog_Backward :BOOL;bStop:BOOL;bJog_Forward :BOOL;bMV_Forward :BOOL;bMV_Backward :BOOL;bMA_Forward :BOOL;bMA_Backward :BOOL;bMR_Forward:BOOL;bMR_Backward :BOOL;FB_MJ :MC_Jog;FB_MV_0 :MC_MoveVelocity;FB_MV_1 :MC_MoveVelocity;FB_MA_0:MC_MoveAbsolute;FB_MA_1:MC_MoveAbsolute;FB_MR_0:MC_MoveRelative;FB_MR_1:MC_MoveRelative;FB_MH:MC_Halt;END_VAR
主程序部分:
FB_MP(Axis:=SM_Drive_Virtual,Enable:=TRUE,bRegulatorON:=TRUE,bDriveStart:=TRUE);//使能FB_MH(Axis:=SM_Drive_Virtual,Execute:=bStop,Deceleration:=100);//停止FB_MJ(Axis:=SM_Drive_Virtual,JogForward:=bJog_Forward,JogBackward:=bJog_Backward,Velocity:=10,Acceleration:=100,Deceleration:=100);FB_MV_0(Axis:=SM_Drive_Virtual,Execute:=bMV_Forward,Velocity:=10,Acceleration:=100,Deceleration:=100,Direction:=1);FB_MV_1(Axis:=SM_Drive_Virtual,Execute:=bMV_Backward,Velocity:=10,Acceleration:=100,Deceleration:=100,Direction:=-1);FB_MA_0(Axis:=SM_Drive_Virtual,Execute:=bMA_Forward,Position:=90,Velocity:=10,Acceleration:=100,Deceleration:=100,Direction:=1);FB_MA_1(Axis:=SM_Drive_Virtual,Execute:=bMA_Backward,Position:=-90,Velocity:=10,Acceleration:=100,Deceleration:=100,Direction:=-1);FB_MR_0(Axis:=SM_Drive_Virtual,Execute:=bMR_Forward,Distance:=60,Velocity:=10,Acceleration:=100,Deceleration:=100);FB_MR_1(Axis:=SM_Drive_Virtual,Execute:=bMR_Backward,Distance:=-60,Velocity:=10,Acceleration:=100,Deceleration:=100);
七、可视化:
测试效果:
注意:
记得开仿真机
本文案例取自于《CODESYS编程应用与仿真》
同类文章:
Codesys学习 模拟量单位转换
Codesys练习-基于频率和占空比设置的双灯控制
Codesys练习-基于状态机思路的循环灯控制 |