今天在家清理电脑,在硬盘中找到了2014年刚毕业那会用 OtoStudio(CoDeSys)写的一个三轴运动控制模拟程序。



概述

代码设计:

OtoStudio可视化界面开发示例_运动控制

OtoStudio可视化界面开发示例_最小值_02

OtoStudio可视化界面开发示例_固高_03

界面设计:

OtoStudio可视化界面开发示例_.net_04

界面

有下面几个界面:

OtoStudio可视化界面开发示例_固高_05

OtoStudio可视化界面开发示例_固高_06

OtoStudio可视化界面开发示例_CoDeSys_07

OtoStudio可视化界面开发示例_运动控制_08

OtoStudio可视化界面开发示例_最小值_09

OtoStudio可视化界面开发示例_固高_10


效果

【登陆过程】

OtoStudio可视化界面开发示例_CoDeSys_11

【控制过程】

OtoStudio可视化界面开发示例_固高_12


代码

PLC_PRG

PROGRAM PLC_PRG
VAR
checking: BOOL; (*密码检验结果*)
warning:BOOL; (*报警状态*)
normal:BOOL := TRUE; (*系统状态*)
PwdWarning:BOOL:=TRUE; (*密码错误提示*)
InitOK:BOOL; (*初始化成功与否标志*)

(*定义系统各种极限值*)

PosMin_N:INT := -250; (*负限位最小值*)
PosMax_N:INT := -200; (*负限位最大值*)
PosMin_P:INT := 200; (*正限位最小值*)
PosMax_P:INT := 250; (*正限位最大值*)

SpeedMin:INT := 0; (*速度最小值*)
SpeedMax:INT := 6000; (*速度最大值*)
SpeedRTZ:INT := 5400; (*回零速度*)

DisplacementMin:INT := 0; (*点动位移量最小值*)
DisplacementMax:INT := 10; (*点动位移量最大值*)

Speed:REAL := 0; (*移动速度*)
Displacement:REAL := 0; (*点动位移*)

StartOK: BOOL;
CheckLimit: LIMIT_CHECK;

LEDAxisX:BOOL; (*X轴状态指示*)
LEDAxisY:BOOL; (*Y轴状态指示*)
LEDAxisZ:BOOL; (*Z轴状态指示*)

LEDHandMove:BOOL; (*手动方式状态指示*)
LEDClickMove:BOOL; (*点动方式状态指示*)
LEDRetToZero:BOOL; (*回零方式状态指示*)


AlarmType: INT; (*记录报警状态*)
RTZ_retain: BOOL; (*记录回零状态*)

HandP_TON: TON;
HandN_TON: TON;
MH_OFF: BOOL;
MH_ON: BOOL;
RTZ_TON: TON;
normal2: BOOL; (*显示故障清除情况*)
LimitStatus: BOOL; (*记录是否有超出限位的情况,保留使用*)
CheckPwd: BOOL; (*密码输入确定按钮下降沿触发*)

(*按键下降沿触发处理*)
SBAxisX_FT: F_TRIG;
SBAxisY_FT: F_TRIG;
SBAxisZ_FT: F_TRIG;
SBClickMove_FT: F_TRIG;
SBHandMove_FT: F_TRIG;
SBRetToZero_FT: F_TRIG;
Positive_RT: R_TRIG;
Negative_RT: R_TRIG;
PwdButton_FT: F_TRIG;
WarningBtn_FT: F_TRIG;
END_VAR

VAR_INPUT
PwdButton: BOOL; (*输入密码确定按钮*)
WarningBtn:BOOL; (*报警框确定按钮*)
start: BOOL; (*上电按钮*)
stop:BOOL; (*急停按钮*)

SBHandMove:BOOL; (*手动方式按钮*)
SBClickMove:BOOL; (*点动方式按钮*)
SBRetToZero:BOOL; (*回零方式按钮*)

SBAxisX:BOOL; (*X轴使能按钮*)
SBAxisY:BOOL; (*X轴使能按钮*)
SBAxisZ:BOOL; (*X轴使能按钮*)

positive:BOOL; (*正向运动按钮*)
negative:BOOL; (*负向运动按钮*)

password: STRING(16) := ' '; (*记录登陆密码*)
AlarmInfo:STRING(80) := 'Everybody up !'; (*记录报警信息*)
END_VAR
VAR_OUTPUT

END_VAR

。。。太多了,不贴代码啦,需要的自己下载吧!