[西门子] 博途SCL编程实例一万台电机的顺启逆停

[复制链接]
查看251 | 回复0 | 2024-4-17 20:37:46 | 显示全部楼层 |阅读模式
1 | 题目


有10000台电机M0-M9999,按下启动按钮后,电机M0-M9999按顺序每隔5秒启动。按下停止按钮后,电机M9999-M0按顺序每隔5秒停止。当电机发生故障时,当前电机及其后面的电机立即停止,而前面的电机则按顺序每隔5秒停止。例如:当M99出现故障,M99-M9999立即停止,M98-M0按顺序每隔5秒停止。
在启动过程中允许按下停止按钮,已经启动运行的电机将按照顺序每隔5秒停止。
在停止过程中允许按下启动按钮,还未启动运行的电机将按照顺序每隔5秒启动。
编写程序实现以上功能,支持任意电机的数量,注意只允许使用一个定时器。



2 | 设计分析


采用循环语句。
启动时判断当前电机的前一个电机是否已经启动运行,如果已经启动运行则启动定时器,定时时间到后启动当前电机。
停止时判断当前电机的后一个电机是否已经停止运行,如果已经停止运行则启动定时器,定时时间到后停止当前电机。
故障时的处理方法和停止过程类似。


3 | 创建功能或功能块


创建功能块FB,命名为“MtrStSpInSeq”。




4 | 定义接口变量


具体接口变量定义见下图:
定义布尔型变量start:启动;
定义布尔型变量stop:停止;
定义布尔型一维可变限值数组变量mtrStSps:电机启停输出;
定义布尔型一维可变限值数组变量faults:电机故障;
定义多重实例instTimer:多台电机启停的间隔时间。


5 | 程序代码


编写程序代码。如下图:


第68行-87行代码控制电机按顺序每隔5秒启动,第88行-108行代码控制电机按顺序每隔5秒停止。可以通过对以上代码进行修改从而实现每台电机启动和停止采用不同的间隔时间。注意以上程序代码中只使用了一个定时器,如果电机数量众多,可以节约CPU资源。



6 | 代码测试


在循环OB中调用FB-“MtrStSpInSeq”。 如下图:
定义全局数据块,用来存储10000台电机的启停输出和故障信号并作为实参传递给以上子程序的形参。如下图:


在线监控。如下图:


以上截图仅为启动过程的一部分,停止过程和故障测试并未展示。




7 | 总结


学习FOR循环语句;
学习FOR循环语句嵌套;
学习IF..ELSE语句;
学习上升沿的使用方法;
学习可变限值一维数组的使用方法;
学习RETURN语句在程序代码中的作用;
学习在OB中调用FB和实参的传递方式。
- END -


今年1月,“TIA标准化训练营”第一期的培训正式开始了!有超过400来自全国的自动化工程师参与了第一期的培训。
在培训结束后,有多位优秀工程师提供的开源库文件正式收录到了TIA标准化社区中,作为开发者共创的资源和大家共享!
以下可对部分收录库的功能进行快速浏览:


LECO_FlowCompensation
功能:针对差压流量计开方后对应的工况流量,进行温度压力补偿






LECO_IncrementalPid
功能:可以实时仿真增量式 PID 控制,解决 S7-1200 无硬件,无法仿真系统 PID 的问题。(修改功能块同时适用于S7-1500)




LECO_MultiStaSeq
功能:在一套设备中,如果对应多工位作业场合(本块最多支持255个工位),可实现按工位预约的先后进行作业;避免设备长期在某一个工位作业,而其他工位一直等待的情况。





LECO_MachineRunningTimer
功能:通过设备的运行信号,记录设备的总运行时间总启动次数距离上次保养后的运行时间启动次数





LECO_ParameterAdjuster
功能:对于需要在HMI频繁修改数值的参数,可在HMI 上做加按钮或减按钮,当单击按钮时,可以实现参数按照点动值点动增加或减少。





LECO_RampAndS_Curve
功能:用于实现设定值从0开始到最大值的斜坡函数发生器和S曲线功能。适用于需要实现加速度斜坡输出的场景,如起重设备、比例阀等,可实现在输出时加速度的平滑过渡,防止冲击。





更多信息,可点击下图即直接跳转至小程序开发者共创版面:

如果您还不知道如何开始标准化之路,或者也想和更多优秀工程师一起学习讨论,欢迎参加我们精心准备的“标准化训练营”!已经有近800名工程师参与了训练营,完整参与培训并完成任务后还有证书和礼品
。即将开始第三期报名,快快这几个月爆火的ChatGPT点燃了全民转发的热情,大家也对各种生成式AI工具展开了讨论和思考。对于自动化领域,相信大家也产生了疑问:ChatGPT类的工具能应用于博途之中,提高我们编程组态的工作效率吗?
答案是一定的!(但不会发生在V19)

本篇内容先和大家分享一个短期内(可能)会帮助到大家的改变。


如果使用过高级语言编程的环境,那么对以下动图中展现的内容肯定不陌生了,输入不同的函数名后,可以选择提示中的内容帮你自动补齐代码。这种方式不但可以提高效率,并且也降低了出错的可能性,能够避免很多莫名其妙的语法错误。

Visual Studio还会非常贴心地在推荐使用函数上打上星标、小扳手、闪电等标识来确定这是函数、参数,或是与用户交互的Action等。
好消息是,TIA 博途也在考虑这个功能!从V18开始,博途会更加智能,并且更加强调高效工程(Efficiency Engineering)。从图形编辑器 (LAD/FBD) 迈出这个方向的第一步,并为内部全局变量的使用提出明智的建议:将它们按概率排序显示在已经存在的通用窗口的上部区域, 同样用一些提示来区分不同的对象。
(该图仅为测试图,还未应用)如上测试图中星标和高亮模块所示, 会将此处可能使用的相关 “_DB12XXX” 在对话框自动提示出来!
该功能还未开发完成,虽然和生成式AI没有太大关系,但却能实打实提高自动化工程效率!
话说回来,程序只有建立在标准化的基础上,才能采集到高质量、可追溯的数据,结合新技术,继而发挥出数据最大的价值!




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则