N年之前,用S7-300做一个小型DCS项目,选用wincc为人机界面。项目中电机、泵、风机类比较多,于是下功夫研究编写这个电机块。功能确实强大,在wincc中自动生成图标,拽出来直接用就可。
FUNCTION_BLOCK MOTOR1DIR_300
NAME:MOTOR1DIR
FAMILY:S7-300 BLOCK
AUTHOR:SDZYG2000
//VERSION:'1.01'
//FB620
// Typical-Attribute
{
S7_tasklist:='OB100';
S7_m_c:='true';
S7_blockview:='big'
}
// Parameterattribute
// S7_visible visible/unvisible (default='true')
// S7_m_c WinCC - Tag (default='false')
// S7_dynamic testmode (default='false')
VAR_INPUT
LOCK {S7_dynamic:='true'} : BOOL := FALSE; // Interlock
ERR_EXTERN {S7_dynamic:='true'} : BOOL := FALSE; // External Error
LIOP_SEL {S7_dynamic:='true'} : BOOL := FALSE; // 0=Operator 1=Linking
L_AUT {S7_dynamic:='true'} : BOOL := FALSE; // 0=Manual 1=Automatic
L_REMOTE {S7_dynamic:='true'} : BOOL := FALSE; // 0=Lokal 1=Remote
L_SIM {S7_dynamic:='true'} : BOOL := FALSE; // 0=Normal 1=Simulation
L_RESET {S7_dynamic:='true'} : BOOL := FALSE; // 1=Reset Error Peripherie
AUT_ON {S7_dynamic:='true'} : BOOL := FALSE; // 1=CMD ON Automatic
MAN_ON {S7_dynamic:='true'} : BOOL := FALSE; // 1=CMD ON Manual
SIM_ON {S7_dynamic:='true'} : BOOL := FALSE; // 1=CMD ON Simulation
FB_ON {S7_dynamic:='true'} : BOOL := FALSE; // Feedback Motor
L_MON {S7_dynamic:='true'} : BOOL := TRUE; // 1=Monitoring ON
MON_T {S7_dynamic:='true'; S7_m_c := 'true'} : REAL := 10.0; // Monitoring Time
MPS {S7_dynamic:='true'} : BOOL := FALSE; // 1=Motor Protecting Switch ON
L_FLOW_MON {S7_dynamic:='true'} : BOOL := FALSE; // 1=Monitoring Flow
FLOW {S7_dynamic:='true'} : REAL := 0.0; // Current Flow
FLOW_LL {S7_dynamic:='true'} : REAL := 5.0; // Low Level Flow
FLOW_MT {S7_dynamic:='true'; S7_m_c := 'true'} : REAL := 10.0; // Monitoring Time Flow
SAMPLE_T {S7_sampletime:='true'} : REAL := 0.0; // Sample Time
END_VAR
VAR_IN_OUT
OP_dwCmd {S7_dynamic := 'true'; S7_m_c := 'true'} : DWORD :=0; // control word wincc
END_VAR
VAR_OUTPUT
QdwState {S7_dynamic:='true'; S7_m_c:='true'}: DWORD:=0; // status wincc
QabyState AT QdwState : ARRAY [0..3] OF BYTE; // look at state byte-wise
QwState {S7_dynamic:='true'}: WORD:= 0; //0=off, 1=starting, 2=on, 3=stopping
QSTOPPING {S7_dynamic:='true'} : BOOL := FALSE; // 1=Stopping
QSTOP {S7_dynamic:='true'} : BOOL := FALSE; // 1=Stop
QSTARTING {S7_dynamic:='true'} : BOOL := FALSE; // 1=Starting
QRUN {S7_dynamic:='true'} : BOOL := FALSE; // 1=Run
QCMD_ON {S7_dynamic:='true'} : BOOL := FALSE; // 0=Stop 1=Start
QMON {S7_dynamic:='true'} : BOOL := FALSE; // 1=Monitoring Feedback
QMON_ERR {S7_dynamic:='true'} : BOOL := FALSE; // 1=Monitoring Error
QMON_T {S7_dynamic:='true'; S7_m_c := 'true'} : REAL := 0.0; // Current Monitoring Time Feedback
QFLOW_MON {S7_dynamic:='true'} : BOOL := FALSE; // 1=Monitoring Flow
QFLOW_MT {S7_dynamic:='true'; S7_m_c := 'true'} : REAL := 0.0; // Current Monitoring Time Flow
QFLOW_ERR {S7_dynamic:='true'} : BOOL := FALSE; // 1=Error Flow
QMPS {S7_dynamic:='true'} : BOOL := FALSE; // 1=Motor Protecting Switch
QERR {S7_dynamic:='true'} : BOOL := FALSE; // 1=ERROR
QMAN_AUT {S7_dynamic:='true'} : BOOL := FALSE; // 0=Hand 1=Au

本文介绍了一种使用S7-300 PLC实现的电机控制功能块,该功能块能够通过WinCC界面进行操作,并支持多种运行模式如手动、自动和模拟。此外,还详细介绍了故障监测及反馈机制。
最低0.47元/天 解锁文章
7923

被折叠的 条评论
为什么被折叠?



