注意:本文中默认的电机连接是使用断路器和接触器的直接启动电路。对于逆变器控制,需要进行一些配置才能使用。
控制要求如下:
每台电机的额定运行时间均可设定。当电机实际运行时间大于额定运行时间时,自动停机并调度下一个可用电机;
当电机出现故障(如断路器跳闸或超时无反馈)时,电机状态将变得不可用。不可用的电机不参与调度;
当故障排除复位后,电机状态又恢复可用,可以重新参与调度;
详情如下:
打开Portu开发环境,新建工程,添加用户自定义数据类型:typeMotorSchedule,如下图:
在:
命令:包括启动和停止,用于启动或停止电机;
Para:电机控制参数,包括反馈时间和额定运行时间,单位,秒;
ExtraSignal:外部信号,包括断路器和接触器反馈;
State:状态,包括:输出位(Q)、错误位(错误)、释放(表示电机是否可用)、selected(表示电机是否选中)、status(状态,电机状态,非0等于error) )、实际运行时间(actualRunningTime,单位,秒);
添加功能块,命名为:FB5017_MotorScheduler,并声明变量,如下所示:
功能块代码比较长,我分为多个区域:
功能说明;
初始化;
重置;
调度(调度程序);
详情如下:
功能说明:
初始化:
重置:
日程安排:
使用该功能块时,需要先对其进行初始化,然后再启用。当发生错误时,需要重置。
可以在全局数据块中创建电机数组(typeMotorSchedule),然后将断路器和接触器的信号写入电机数组的ExtraSignal,并将电机状态State.Q输出到硬件的输出通道。
我创建了一个测试功能块和一个全局数据块来测试电机调度器,包括断路器错误测试,结果还可以。
审稿人:刘庆