博途使用多重背景数据块+SCL+UDT实现过程控制标准化

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

博途的多重背景数据块, 类似于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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘诺西亚的火山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值