博途的多重背景数据块, 类似于C# 中的单例模式. 通过一个静态变量即可访问到目标对象的所有方法.
UDT为用户定制数据类型, 可以使用结构体等方法, 使编程结构化和简单化.
以电机控制为例.
1, 先做一个电机控制的模版…
Input
IStartBtn Bool false 非保持
IStopBtn Bool false 非保持
IResetBtn Bool false 非保持
IEmergencyBtn Bool false 非保持
IContact Bool false 非保持
IAi1 Int 0 非保持
Output
QRunning Bool false 非保持
QMonitorStatus Int 0 非保持
QAo1 Real 0.0 非保持
Static
StRunFlag Bool false 非保持
StAlarmFlag Bool false 非保持
StMotorStatus Int 0 非保持
IEC_Timer_0_Instance TON_TIME 非保持
UpperiLimit Real 0.0 非保持
LowLimit Real 0.0 非保持
IEC_Timer_0_Instance_1 TON_TIME 非保持
Temp
Temp1 Real

REGION 电机启动信号
#StRunFlag := (#IStartBtn OR #StRunFlag) AND NOT #IStopBtn AND NOT #IEmergencyBtn AND NOT #StAlarmFlag;
//(启动按钮 或者 正在运行(自锁)) 且 没有按下停止 且没有按下急停 且没有报警
END_REGION
REGION 电机故障
#IEC_Timer_0_Instance_1(IN:=#StRunFlag AND #IStopBtn,
PT:=t#3s);
IF #IEC_Timer_0_Instance_1.Q THEN
#StAlarmFlag := 1;
END_IF;
#IEC_Timer_0_Instance

本文介绍了西门子博途软件中如何利用多重背景数据块实现类似C#的单例模式,以及如何通过用户定制数据类型(UDT)进行结构化编程。以电机控制为例,详细阐述了输入输出变量的设置、电机状态的判断及模拟量转换,并展示了如何在PLC数据类型中创建UDT变量和电机控制集合。尽管博途在多态方面仍有待提升,但其封装特性已经使得PLC编程更加接近面向对象的编程理念。
最低0.47元/天 解锁文章
6421

被折叠的 条评论
为什么被折叠?



