呼伦贝尔市SIEMENS华北地区代理商-西门子(授权)自动化与驱动代理商-西门子变频器-西门子PLC工业模块
| 更新时间 2025-01-08 09:10:00 价格 请来电询价 变频器 西门子代理商 触摸屏 西门子一级代理 伺服电机 西门子一级总代理 联系电话 18126392341 联系手机 15267534595 联系人 梁涛 立即询价 |
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 -
在培训结束后,有多位youxiu工程师提供的开源库文件正式收录到了TIA标准化社区中,作为开发者共创的资源和大家共享!
以下可对部分收录库的功能进行快速浏览:
LECO_FlowCompensation
功能:针对差压流量计开方后对应的工况流量,进行温度压力补偿。
LECO_IncrementalPid
功能:可以实时仿真增量式 PID 控制,解决 S7-1200 无硬件,无法仿真系统 PID 的问题。(修改功能块同时适用于S7-1500)
LECO_MultiStaSeq
功能:在一套设备中,如果对应多工位作业场合(本块Zui多支持255个工位),可实现按工位预约的先后进行作业;避免设备长期在某一个工位作业,而其他工位一直等待的情况。
LECO_MachineRunningTimer
功能:通过设备的运行信号,记录设备的总运行时间、总启动次数、距离上次保养后的运行时间和启动次数。
LECO_ParameterAdjuster
功能:对于需要在HMI频繁修改数值的参数,可在HMI 上做加按钮或减按钮,当单击按钮时,可以实现参数按照点动值点动增加或减少。
LECO_RampAndS_Curve
功能:用于实现设定值从0开始到Zui大值的斜坡函数发生器和S曲线功能。适用于需要实现加速度斜坡输出的场景,如起重设备、比例阀等,可实现在输出时加速度的平滑过渡,防止冲击。
联系方式
- 电 话:18126392341
- 联系人:梁涛
- 手 机:15267534595
- 微 信:15267534595