[西门子] 博图实现电动机两种控制方法的集成

[复制链接]
查看40288 | 回复0 | 2024-2-3 17:33:10 | 显示全部楼层 |阅读模式
关键词:西门子PLC 博图 电动机 控制方式


       普通电动机的控制方式主要有:单输出保持和双输出脉冲式。

       两种方式各有优缺点,为了实现功能块通用,本文介绍把两种控制方式集成在一个功能块中的方法。
一、不用变量收起       一台电动机只会采用一种控制方式,把不用的隐藏起来,使程序显示显得整洁:


设置这个功能后,不用的变量可以收起:





二、双输出的逻辑实现       双输出的逻辑如下:  #Motor_Data.BOOL_Run_1 := (#Motor_Data.Block_Enable AND #Motor_Data.Block_Run_Condition) OR NOT (#Motor_Data.Block_Enable);  ///联锁和解除联锁        #Motor_Data.BOOL_Run_6 := #Motor_Data.Sim_Enable AND #Motor_Data.Sim_Central;  ///   仿真集中信号        #Motor_Data.BOOL_Run_7 := #Motor_Data.Sim_Enable AND #Motor_Data.Sim_Power;    ///    仿真电源信号        #Motor_Data.BOOL_Run_8 := #Motor_Data.Sim_Enable AND #Motor_Data.Sim_KH;       ///    仿真热继电器        #Motor_Data.BOOL_Run_2 := (#Central OR #Motor_Data.BOOL_Run_6) AND (#Power OR #Motor_Data.BOOL_Run_7) AND (NOT (#Fail_KH) OR #Motor_Data.BOOL_Run_8);  /// 启动条件        #Motor_Data.BOOL_Run_3 := #Motor_Data.Automatic AND #Motor_Data.Auto_Run;  ///  自动控制        #Motor_Data.BOOL_Run_4 := #Motor_Data.Manual AND (#Motor_Data.SF OR #Motor_Data.StartUp_Hold);  /// HMI手动控制          #Motor_Data.BOOL_Run_5 := #Motor_Data.Force_Enable AND #Motor_Data.Force_Run;  /// 强制输出运行信号              #Motor_Data.BOOL_Stop_1 := (#Motor_Data.Block_Enable AND #Motor_Data.Block_Stop_Condition) OR NOT (#Motor_Data.Block_Enable);  /// 联锁和解除联锁        #Motor_Data.BOOL_Stop_2 := #Motor_Data.Automatic AND #Motor_Data.Auto_Stop;  //////  自动控制        #Motor_Data.BOOL_Stop_3 := #Motor_Data.Manual AND (#Motor_Data.SS OR #Motor_Data.Stop_Hold);  ///HMI手动控制        #Motor_Data.BOOL_Stop_4 := #Motor_Data.No_KM_ForceStop; ///   无反馈停车        #Motor_Data.BOOL_Stop_5 := #Motor_Data.Force_Enable AND #Motor_Data.Force_Stop;  /// 强制输出停止信号        #Engine_Run := (#Motor_Data.BOOL_Run_1 AND #Motor_Data.#BOOL_Run_2 AND (#Motor_Data.#BOOL_Run_3 OR #Motor_Data.#BOOL_Run_4)) OR #Motor_Data.BOOL_Run_5;        #Engine_Stop := (#Motor_Data.BOOL_Stop_1 AND (#Motor_Data.#BOOL_Stop_2 OR #Motor_Data.#BOOL_Stop_3)) OR #Motor_Data.#BOOL_Stop_4 OR #Motor_Data.#BOOL_Stop_5;     由于增加了很多附加功能,程序逻辑条件有点多,具体不用可以省略。 三、单输出的逻辑实现     单 输出的逻辑如下:        #Motor_Data.BOOL_Hold_1 := (#Motor_Data.Block_Enable AND #Motor_Data.Block_Run_Condition) OR NOT (#Motor_Data.Block_Enable);  ///联锁和解除联锁        #Motor_Data.BOOL_Hold_2 := (#Central OR #Motor_Data.BOOL_Run_6) AND (#Power OR #Motor_Data.BOOL_Run_7) AND (NOT (#Fail_KH) OR #Motor_Data.BOOL_Run_8) AND NOT #Motor_Data.SS;  /// 启动条件        #Motor_Data.BOOL_Hold_3 := #Motor_Data.Automatic AND #Motor_Data.Auto_Start_Hold;  ///  自动控制        #Motor_Data.BOOL_Hold_4 := #Motor_Data.Manual AND (#Motor_Data.SF OR #Feedback_KM OR #Motor_Data.StartUp_Hold);  /// HMI手动控制          #Motor_Data.BOOL_Hold_5 := #Motor_Data.Force_Enable AND #Motor_Data.Force_Run;  /// 强制输出运行信号          #Engine_Hold_Out := (#Motor_Data.BOOL_Hold_1 AND #Motor_Data.BOOL_Hold_2 AND (#Motor_Data.BOOL_Hold_3 OR #Motor_Data.BOOL_Hold_4)) OR #Motor_Data.BOOL_Hold_5;       单输出的自动条件是不是要保持也与具体的控制方式有关,可以采用设备运行反馈点自保,也可以采用自动条件一致保持。 四、基本的保护逻辑       1)输出保持:#Motor_Data.Time_Run_Delay_Dint := #Motor_Data.Time_Run_Delay * 1000;#Motor_Data.Time_Stop_Delay_Dint := #Motor_Data.Time_Stop_Delay * 1000;#Pulse_SF.IN := #Motor_Data.SF;   ///集中启动#Pulse_SF();IF#Pulse_SF.Q THEN#Motor_Data.StartUp_Hold := 1;    ///保持按钮状态,2秒后复位#Motor_Data.STATUS_Device_11 := FALSE;    END_IF;#TON_StartUp_Hold(IN := #Motor_Data.StartUp_Hold,                      PT := DINT_TO_TIME(#Motor_Data.Time_Run_Delay_Dint),                      Q => #Auto_Start_Hold);IF#Auto_Start_Hold  AND #Feedback_KM THEN#Motor_Data.StartUp_Hold := 0;  /// 状态保持复位    END_IF;IF#Auto_Start_Hold AND  NOT #Feedback_KM THEN#Motor_Data.STATUS_Device_10 := TRUE;   //启动故障#Motor_Data.StartUp_Hold := 0;  /// 状态保持复位    END_IF;   安装启动按钮后,保持几秒,防止鼠标快速点击时没有反应。   2)运行时间记录:#Pulse_Run_Time.IN := #Feedback_KM AND "FC1201_DB".Minute_1;   ///运行计时#Pulse_Run_Time();IF#Pulse_Run_Time.Q THEN#Motor_Data.Run_minutes_ThisTime := #Motor_Data.Run_minutes_ThisTime + 1;#Motor_Data.Run_minutes_Total := #Motor_Data.Run_minutes_Total + 1;    END_IF;IF#Motor_Data.Run_minutes_ThisTime >60 THEN#Motor_Data.Run_minutes_ThisTime := 0;#Motor_Data.Run_Hours_ThisTime := #Motor_Data.Run_Hours_ThisTime + 1;    END_IF;IF#Motor_Data.Run_minutes_Total > 60 THEN#Motor_Data.Run_minutes_Total := 0;#Motor_Data.Run_Hours_Total := #Motor_Data.Run_Hours_Total + 1;    END_IF;      设备运行时间是设备的一个重要数据,需要知道设备的本次运行时间 和总的运行时间,也可以作为维护保养的提示。 五、小结       每一个功能的实现,都要反复验证、测试,有些保护是在生产中总结出来的。

本帖子中包含更多资源

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

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

本版积分规则