看英文文档理解为这几个函数是给所有的显示设备发送消息,不同的是,_alarmSId不需要确认,_alarmSqId,需要确认,_alarmScId就是无触发的发送消息。不知道这样理解对不对。
(有兴趣的朋友加我QQ381728740,一起讨论)
但是他的参数structalarmID什么意思,在哪可以找到这个类型的说明,怎么使用,返回值具体是什么意思没看懂。
大家帮忙看看下面程序,红色字体的变量,我在系统里没有找到这些变量(可能是系统保留字,但我在文档中都没找到),请教一下这些变量的意在哪里定义,这些函数作用后对系统的影响或改变有哪些?谢谢指教
FUNCTION_BLOCK FB_ErrorShow
VAR_INPUT
i_i32LowerLimitErrorNumber : INT; //startnumber of shown errors
i_i32UpperLimitErrorNumber : INT; //endnumber of shown errors
END_VAR
VAR_TEMP
i32CountErrorNumber : INT := 0; //counter
RetValAlarmSc : DWORD; //temp return value
RetValAlarmSq : DWORD; //temp return value
END_VAR
FOR i32CountErrorNumber := i_i32LowerLimitErrorNumber TO i_i32UpperLimitErrorNumber DO //only work with specified errors
RetValAlarmSc := 16#7FFF;
RetValAlarmSq := 16#0;
//show each error and taste the state
CASE i32CountErrorNumber OF //take no.1 as an example
1: //ErrorPositiveLimitSwitchFrontbarX
RetValAlarmSq := _alarmSq (aErrorList[i32CountErrorNumber].boSignal, m_ErrorAxisAlarm);
RetValAlarmSc := _alarmSc (m_ErrorAxisAlarm);
(* 2: //ErrorNegativeLimitSwitchFrontbarX
RetValAlarmSq := _alarmSq (aErrorList[i32CountErrorNumber].boSignal, m_ErrorNegativeLimitSwitchFrontbarX);
RetValAlarmSc := _alarmSc (m_ErrorNegativeLimitSwitchFrontbarX);
3: //ErrorPositiveLimitSwitchRearbarX
RetValAlarmSq := _alarmSq (aErrorList[i32CountErrorNumber].boSignal, m_ErrorPositiveLimitSwitchRearbarX);
RetValAlarmSc := _alarmSc (m_ErrorPositiveLimitSwitchRearbarX);
4: //ErrorNegativeLimitSwitchRearbarX
RetValAlarmSq := _alarmSq (aErrorList[i32CountErrorNumber].boSignal, m_ErrorNegativeLimitSwitchRearbarX);
RetValAlarmSc := _alarmSc (m_ErrorNegativeLimitSwitchRearbarX);
5: //ErrorBreakFuseFrontbarX
RetValAlarmSq := _alarmSq (aErrorList[i32CountErrorNumber].boSignal, m_ErrorBreakFuseFrontbarX);
RetValAlarmSc := _alarmSc (m_ErrorBreakFuseFrontbarX);
*)
END_CASE;
//check the return-value of _alarmSc
IF ( RetValAlarmSc AND 16#8000 ) = 0
THEN
IF (RetValAlarmSc = 16#0000) //comming,gone
THEN
aErrorList[i32CountErrorNumber].eState := ERROR_STATE_CG;
ELSIF (RetValAlarmSc = 16#0001) //comming,
THEN
aErrorList[i32CountErrorNumber].eState := ERROR_STATE_C;
ELSIF (RetValAlarmSc = 16#0010) //comming,gone,acknowledge
THEN
aErrorList[i32CountErrorNumber].eState := ERROR_STATE_NULL;
ELSIF (RetValAlarmSc = 16#0101) //comming,acknowledge
THEN
aErrorList[i32CountErrorNumber].eState := ERROR_STATE_CA;
END_IF;
END_IF;
END_FOR;
END_FUNCTION_BLOCK
END_PROGRAM