伺服压力机 MCGS触摸屏:实时曲线,导出U盘,配方,历史数据存盘等功能, mcgs触摸屏:X...
伺服压力机 MCGS触摸屏:实时曲线,导出U盘,配方,历史数据存盘等功能, mcgs触摸屏:XY曲线,趋势图,历史数据记录,配方,导出U盘等功能, 昆仑通态触摸屏 带完整PLC程序(三菱FX5S)非常完整的注释
伺服压力机的控制系统开发,最有趣的部分莫过于触摸屏和PLC的默契配合。最近在调试一套基于三菱FX5S的伺服压装系统,用上了昆仑通态MCGS触摸屏的几个实用功能,顺手把玩了一把XY曲线动态追踪,记录些实战心得。

先说触摸屏的数据可视化——实时曲线和XY曲线的动态展示,这玩意儿比单纯看数字带劲多了。在MCGS的组态环境里,画布拖个趋势图控件,地址绑定到PLC的D寄存器区。比如压装过程的位移-压力曲线,PLC这边需要同时更新两个数据通道:
// 三菱FX5S结构化文本程序片段
VAR
ActualPressure : REAL := D100; //压力值存入D100开始的双字
ActualPosition : REAL := D104; //位置值存入D104
END_VAR
//伺服数据采集线程
WHILE TRUE DO
ActualPressure := GET_SERVO_PRESSURE(轴1); //从伺服驱动器读取实际压力
ActualPosition := GET_SERVO_POSITION(轴1); //读取实际位置
DELAY(10); //10ms采集周期
END_WHILE;
触摸屏上的XY曲线控件同时绑定D100和D104,立马就能看到动态绘制的散点图。调试时发现曲线刷新有卡顿,后来把PLC的数据发送周期和触摸屏采样率调成一致才流畅。
配方功能是生产线的刚需。用结构体封装压装参数,配合触摸屏的配方视图直接编辑:
TYPE Recipe :
STRUCT
TargetPos : REAL; //目标位置
Speed : INT; //压装速度
Threshold : REAL; //压力阈值
END_STRUCT
END_TYPE
VAR_GLOBAL
CurrentRecipe : Recipe := D200; //配方数据从D200开始存储
END_VAR
//配方切换执行
IF 触摸屏.配方选择完成 THEN
MOV_BLOCK(D200, 配方号*SIZEOF(Recipe)+D500, SIZEOF(Recipe)); //从配方库加载
END_IF
历史数据存储有个坑——直接频繁写U盘会缩短寿命。解决方案是在触摸屏脚本里设置缓存机制,积攒够500条记录后再批量导出。导出时用系统自带的时间戳命名文件,避免覆盖:
--MCGS Lua脚本片段
function on_export()
local filename = "Data/"..os.date("%Y%m%d_%H%M")..".csv"
local data = history.get_records(500)
file.write(filename, table.concat(data, "\n"))
sys.msgbox("导出完成,文件:"..filename)
end
PLC注释方面,坚持每个功能块开头写“军规”:
//压装过程状态机
//状态0:待机 1:下降中 2:压装中 3:保压 4:返回
//注意事项:状态切换需检测伺服使能信号
CASE StateMachine OF
0:
IF 启动信号 AND 无报警 THEN
StateMachine := 1;
伺服使能(轴1, TRUE);
END_IF
//...其余状态处理
END_CASE;
这套系统调试完最大的感触是:好的注释比代码本身更重要。特别是伺服压力控制中的平滑过渡算法,几个月后回头看注释还能立刻理解当时的处理逻辑,这才是工程代码该有的样子。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)