Вы находитесь на странице: 1из 18

PROJECT MLF844 PLC MLF PROCESSOR CPU PROGRAM alarmh 3 (* Structured text *) PARAM Resource := 2 Group := 0 Compile_Options := 1 Changed

:= 1295626434 Make_Options := 0 Exc_Irq_Number := 0 Moduletype := 0 Mode := 0 Status := 0 Install_Number := 7 Description := "HMI Alarm handling" Version := 32 Revision := 113 TargetMemory := 2 Compiler_Options := 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0 0 00 00 00 00 00 00 END_PARAM CODE_INIT (* init program *) iFunction:= 1; cSeperator:= 59; (* initialize semicolon (;) as seperator *) cDateTimeFormat:= 0; alize DateTimeFormat *) END_CODE_INIT CODE_CYCLIC (* cyclic program *)

(* initi

(*************************************** *******************************************************************************) (* Object name: alarmh *) (* Author: Roman Haslinger, B&R *) (* Site: Eggelsberg *) (* Created: 12-Aug-2003 *) (* Restriction: consider task order; see also template help file *) (* Description: Alarm handling *) (* *) (*-------------------------------------------------------------------------------------------------------------------*) (* Version 1.10 17-Nov-2003 Roman Haslinger Official release *) (*-------------------------------------------------------------------------------------------------------------------*) (* Version 1.11 03-Dec-2003

Roman Haslinger *)

Changed handling (alarm buffer)

(*-------------------------------------------------------------------------------------------------------------------*) (* Version 1.12 11-Dec-2003 Roman Haslinger Actual alarm list in HMI structure *) (*-------------------------------------------------------------------------------------------------------------------*) (* Version 2.00 11-Nov-2004 Roman Haslinger Changeover to new VC *) (*------------------------------------------------------------------------------------------------------------------ *) (* Version 2.02 22-Dec-2004 Andreas Hager Development for relased version V2.0 *) (*------------------------------------------------------------------------------------------------------------------ *) (* Version 2.03 26-Jan-2005 Andreas Hager Integration to read out the history-alarmlist *) (*-------------------------------------------------------------------------------------------------------------------*) (* Version 2.04 03-Feb-2005 Christoph Trappl changed alarm history listing *) (*-------------------------------------------------------------------------------------------------------------------*) (* Version 2.05 21-Feb-2005 Arthur Boosten Adaptions to unichaoscode *) (*-------------------------------------------------------------------------------------------------------------------*) (* Version 2.06 11-Apr-2005 Arthur Boosten Change the read out from the panel alarm object *) (* Now only 3 alarms at one cycle will be read out *) (*-------------------------------------------------------------------------------------------------------------------*) (* Version 2.07 07-Dec-2005 Arthur Boosten Updated all calls to the lib. function WCS_Cxxx to wcscxxxx, *) (* because the library was updated with automation studio v2.5.1.9. *) (* Blocked the alarms when node number 251 is selected and when *) (* calibration is active. *) (*-------------------------------------------------------------------------------------------------------------------*) (* Version 2.07.1 21-jan-2011 John Slaets Updated the task to be compatible with visapi library V3 .34.4. *) (* Added local variable ActualAlarmEvent as USINT[50]. *) (* Changed local variable ActualAlarmGroupNumber to type UINT[50]. *)

(* Changed local variable ActualAlarmNumber to type UINT[50]. *) (*-------------------------------------------------------------------------------------------------------------------*) (* Development tool: B&R Automation Stud io V2.5.1.9 *) (*-------------------------------------------------------------------------------------------------------------------*) (* Comment: *) (*************************************** *******************************************************************************) IF RMS OR AlarmHandlingStep = CALL_DIALOG) THEN orking:= 0; ELSE HMI_Config.Alarmh.AlarmHandlingW orking:= 1; END_IF (* flashing of Alarmbutton *) IF HMI_Config.Alarmh.ActAlarmListInfo = 1 THEN IF FlashingCounter < 40 THEN FlashingCounter:= Flashi ngCounter + 1; ELSE FlashingCounter:= 0; END_IF IF FlashingCounter < 20 THEN HMI_Config.Alarmh.ColorA larmButton:= RED; ELSE HMI_Config.Alarmh.ColorA larmButton:= WHITE; END_IF END_IF IF HMI_Config.Alarmh.ActAlarmListInfo = 2 THEN HMI_Config.Alarmh.ColorAlarmButt on:= RED; END_IF IF HMI_Config.Alarmh.ActAlarmListInfo = 0 THEN HMI_Config.Alarmh.ColorAlarmButt on:= WHITE; END_IF (* Alarmhandling is disabled when node n umber is 251 and when calibration is active (ButStartCalibration = 3) *) (AlarmHandlingStep = CONTROL_ALA HMI_Config.Alarmh.AlarmHandlingW

IF ( HMI_Config.Dialogh.DialogHandlingWo rking = 0 ) AND ( HMI_Config.Cpusys.NodeNumber <> 251 ) AND ( HMI_Config.Sysset.ButStart Calibration <> 3 ) THEN CASE AlarmHandlingStep OF INI_HANDLE: IF HMI_C onfig.Pageh.VC_Handle = 0 THEN HMI_Config.Pageh.VC_Handle:= VA_Setup(1, HMI_Config.Panel.PanelObjectName); ELSE AlarmHandlingStep := READ_FIRST; END_IF READ_FIRST: memset(A DR(ActualAlarmEvent), 0, SIZEOF(ActualAlarmEvent)); memset(A DR(ActualAlarmGroupNumber), 0, SIZEOF(ActualAlarmGroupNumber)); memset(A DR(ActualAlarmNumber), 0, SIZEOF(ActualAlarmNumber)); iFunctio n:= READ_FIRST_ALARM; 0; ActualAlarms:= 0; dlingStep:= READ_NEXT; READ_NEXT: Status.V A_Saccess:= VA_Saccess (1,HMI_Config.Pageh.VC_Handle); IF Statu s.VA_Saccess = 0 THEN FOR zcnt:= 0 TO 2 DO (* Copy data from alarm buffer to array *) LenAlarmLine:= SIZEOF(HMI_Config.Alarmh.ActAlarmList[xcnt].AlarmArray)/2; ActAlarmListStatus:= VA_wcGetActAlarmList(1, HMI_Config.Pageh.VC_Handle, ADR(HMI_Config.Alarmh.ActAlarmList[xcnt]), ADR(LenAlarmLine), iFunction, cSepera tor, cDateTimeFormat); (* Last alarm from buffer is read out *) IF ActAlarmListStatus = 240 THEN iFunction:= READ_FIRST_ALARM; (* Select first alarm to be read *) xcnt := (* Reset pointer *) NumberOf (* Reset number of actual alarms *) AlarmHan

AlarmHandlingStep := CONTROL_ALARMS; readed out, check if alarms are acknowledged *) xcnt := 0; EXIT; (* Stil alarms to be read out, select next alarm *) ELSIF ActAlarmListStatus = 0 THEN iFunction:= READ_NEXT_ALARM;

(* Last alarm is

(* Check in alarminfo string if the alarm is acknowledged. If not increase var ' NumberOfActualAlarms' *) FOR ycnt:= 0 TO ( LenAlarmLine-1 ) DO pUINT ACCESS(ADR(HMI_Config.Alarmh.ActAlarmList[xcnt]) + (ycnt*2)); IF pUINT = 59 THEN SeperatorCounter:= SeperatorCounter + 1; ELSE IF SeperatorCounter = 4 THEN AlarmEvent[scnt]:= pUINT; scnt:= scnt +1; END_IF END_IF IF (AlarmEvent[0] = 110) AND (AlarmEvent[1] = 65) THEN AlarmEvent[0]:= 0; NumberOfActualAlarms:= NumberOfActualAlarms + 1; EXIT; END_IF END_FOR (* Reset seperate counter *) SeperatorCounter:= 0; scnt:= 0;

IF (xcnt < 49) THEN (* if not last from list the read next *) xcnt := xcnt + 1; (* Else select next alarm in array *) ELSE iFunction:= READ_FIRST_ALARM; NumberOfActualAlarms:= 0; AlarmHandlingStep := CONTROL_ALARMS; out, check if alarms are acknowledged *) xcnt := 0; EXIT; END_IF END_IF END_FOR END_IF ( * End of active alarm *) (* Relea se the Visapi handle *) VA_Srele ase(1,HMI_Config.Pageh.VC_Handle); CONTROL_ALARMS: FOR xcnt:= 0 TO ((SIZEOF(HMI_Config.Alarmh.ActAlarmList) / SIZEOF(HMI_Config.Alarmh.ActAlarmList [0])) - 1) DO pUINT AC CESS(ADR(HMI_Config.Alarmh.ActAlarmList[xcnt].AlarmArray)); IF pUINT <> 0 THEN (* Analyze one alarmstring *) AlarmLen:= 149; FOR ycnt:= 0 TO AlarmLen DO pUINT ACCESS(ADR(HMI_Config.Alarmh.ActAlarmList[xcnt].AlarmArray)+ (ycnt*2)); IF pUINT = 0 THEN EXIT; (* No data in string *) (* Reset number of actual alarms *) (* Last alarm is readed

END_IF IF pUINT = 59 THEN (*if semicolon is found -> increase counter *)

SeperatorCounter:= SeperatorCounter + 1; ELSE IF SeperatorCounter = 1 THEN GroupNumberString[gcnt]:= pUINT; gcnt:= gcnt + 1; END_IF IF SeperatorCounter = 2 THEN AlarmNumberString[acnt]:= pUINT; acnt:= acnt + 1; END_IF IF SeperatorCounter = 4 THEN AlarmEvent[scnt]:= pUINT; scnt:= scnt +1; END_IF END_IF END_FOR (* End analyze one alarm string *) SeperatorCounter:= 0; gcnt:= 0; acnt:= 0; scnt:= 0; wcsconv( ADR(tempCString), ADR(GroupNumberString), 1 ); ActualAlarmGroupNumber[xcnt] := DINT_TO_USINT(atoi(ADR(tempCString))); wcsconv( ADR(tempCString), ADR(AlarmNumberString), 1 ); ActualAlarmNumber[xcnt]:= DINT_TO_USINT(atoi(ADR(tempCString)));

memset(ADR(GroupNumberString),0,SIZEOF(GroupNumberString)); memset(ADR(AlarmNumberString),0,SIZEOF(AlarmNumberString)); (* Check if alarm is not acknowledged n(110) A(65) *) IF (AlarmEvent[0] = 110) AND (AlarmEvent[1] = 65) THEN AlarmEvent[0]:= 0; AlarmEvent[1]:= 0; HMI_Config.Alarmh.ActAlarmListInfo:= 1; AlarmHandlingStep:= CALL_DIALOG; EXIT; ELSIF (xcnt = 49) THEN AlarmHandlingStep:= READ_FIRST; EXIT; END_IF ELSE (* if no alarmstring *) IF xcnt = 0 THEN HMI_Config.Alarmh.ActAlarmListInfo:= 0; ELSE HMI_Config.Alarmh.ActAlarmListInfo:= 2; END_IF AlarmHandlingStep:= READ_FIRST; EXIT; END_IF END_FOR CALL_DIALOG: IF CheckStep = 0 THEN wcscpy(A DR(ActAlarmString), ADR(HMI_Config.Alarmh.ActAlarmList[xcnt].AlarmArray)); AlarmLen := 149; FOR ycnt := 0 TO AlarmLen DO pUINT ACCESS(ADR(ActAlarmString)+ (ycnt*2));

(* If detect semicolon (;)) increase SeperatorCounter *) IF (pUINT = 59) THEN SeperatorCounter:= SeperatorCounter + 1; (* Char 32 = <space> *) IF (SeperatorCounter = 1) THEN pUINT:= 32; END_IF (* Char 45 = '-' *) IF (SeperatorCounter = 2) THEN pUINT:= 45; END_IF (* Char 32 = <space> *) IF (SeperatorCounter = 3) THEN pUINT:= 32; END_IF (**) IF (SeperatorCounter = 4) THEN pUINT:= 0; END_IF (* Reset all*) IF (pUINT = 0) THEN SeperatorCounter:= 0; gcnt:= 0; acnt:= 0; scnt:= 0; EXIT; END_IF

END_IF END_FOR CheckSte p:= 1; END_IF IF CheckStep = 1 THEN (* call the Alarmbox *) AlarmInf ormation.HeaderTextGroupNumber:= TEXTGROUP_DIALOG_HEADERTEXT; AlarmInf ormation.HeaderTextNumber:= DHT_WARNING_ALARM; wcscpy(A DR(AlarmInformation.AlarmText), ADR(ActAlarmString)); AlarmInf ormation.ButtonTextGroupNumber:= TEXTGROUP_DIALOG_BUTTONTEXT; IF Numbe rOfActualAlarms = 1 THEN AlarmInformation.NumberOfButton:= 1; AlarmInformation.ButtonTextNumberOne:= DBT_ACK; ELSE AlarmInformation.NumberOfButton:= 2; AlarmInformation.ButtonTextNumberOne:= DBT_ACK; AlarmInformation.ButtonTextNumberTwo:= DBT_ACKALL; END_IF Status.A larmDialog:= CallAlarm(ADR(AlarmIdent), ADR(AlarmInformation), ADR(HMI_Config.Di alogh.DialogRingBuffer)); IF Alarm Information.Return_PressedButton = 1 THEN CheckStep:= 0; AlarmHandlingStep:= ACKNOWLEDGE_ALARM; ELSIF Al armInformation.Return_PressedButton = 2 THEN CheckStep:= 0; AlarmHandlingStep:= ACKNOWLEDGE_ALLALARMS; END_IF END_IF ACKNOWLEDGE_ALARM: Status.VA_Sacces s:= VA_Saccess (1,HMI_Config.Pageh.VC_Handle); IF Status.VA_Sac cess = 0 THEN

Status.V A_Quit:= VA_Quit(1, HMI_Config.Pageh.VC_Handle, ActualAlarmGroupNumber[xcnt], Ac tualAlarmNumber[xcnt]); IF (Stat us.VA_Quit <> 247) THEN AlarmHandlingStep:= READ_FIRST; END_IF; VA_Srele ase(1,HMI_Config.Pageh.VC_Handle); END_IF ACKNOWLEDGE_ALLALARMS: Status.VA_Sacces s:= VA_Saccess (1,HMI_Config.Pageh.VC_Handle); IF Status.VA_Sac cess = 0 THEN IF xcnt < NumberOfActualAlarms THEN Status.VA_Quit:= VA_QuitAlarms(1, HMI_Config.Pageh.VC_Handle, 65535); (* Quit AL L alarms *) IF Status.VA_Quit <> 247 THEN AlarmHandlingStep:= READ_FIRST; xcnt := 0; END_IF VA_Srelease(1,HMI_Config.Pageh.VC_Handle); END_IF END_IF END_CASE END_IF END_CODE_CYCLIC TYPE hmi_fdconfig : STRUCT E_MailReceive : USINT ; E_MailSend : USINT ; Help : USINT ; Video : USINT ; VNC_Operate : USINT ; VNC_Viewer : USINT ; WebServer : USINT ; END_STRUCT UnicodeAlarmList : STRUCT AlarmArray : ARRAY[0..149] OF U INT ; END_STRUCT hmi_alarmh : STRUCT ActAlarmList : ARRAY[0..49] OF U

nicodeAlarmList ; ActAlarmListInfo : USINT ; AlarmHandlingWorking : BOOL ; ColorAlarmButton : UINT ; END_STRUCT hmi_alarmi : STRUCT AlarmInformationWorking : BOOL ; ButtonAlarmInfo : BOOL ; END_STRUCT hmi_backup : STRUCT EnableConfig : USINT ; EnableRecipe : USINT ; EnableData : USINT ; StatusConfigHotSpot : UINT ; StatusConfigOutpBmp : UINT ; EnableAll : USINT ; Command : UINT ; HideConfigUserLevel : UINT ; Status : UINT ; RebootHmiSysUpdate : USINT ; END_STRUCT hmi_cpusys : STRUCT BatteryStatus : UINT ; Dummy : UINT ; NodeNumber : USINT ; LogBook : ARRAY[0..38] OF ST RING(80) ; END_STRUCT dialoginfo : STRUCT HeaderTextGroupNumber : UINT ; HeaderTextNumber : UINT ; DialogTextGroupNumber : UINT ; DialogTextNumber : UINT ; NumberOfButton : USINT ; ButtonTextGroupNumber : UINT ; ButtonTextNumberOne : UINT ; ButtonTextNumberTwo : UINT ; ButtonTextNumberThree : UINT ; ButtonTextNumberFour : UINT ; DialogMaskNumber : USINT ; Return_PressedButton : USINT ; END_STRUCT alarminfo : STRUCT HeaderTextGroupNumber : UINT ; HeaderTextNumber : UINT ; AlarmText : ARRAY[0..149] OF U INT ; NumberOfButton : USINT ; ButtonTextGroupNumber : UINT ; ButtonTextNumberOne : UINT ; ButtonTextNumberTwo : UINT ; Return_PressedButton : USINT ; END_STRUCT dialogringbuffer : STRUCT RingBufferSize : UINT ; ActualDrawedDialog : UINT ; LastToDrawDialog : UINT ; ActualDialogAlarm : ARRAY[0..9] OF BOOL ; DialogInformation : ARRAY[0..9]

OF dialoginfo ; AlarmInformation : ARRAY[0..9] O F alarminfo ; END_STRUCT hmi_dialogh : STRUCT DialogDelayTimeInMS : UINT ; DialogHandlingWorking : BOOL ; DialogRingBuffer : dialogringbuf fer ; TaskClassInMS : UINT ; END_STRUCT hmi_hardware : STRUCT Acopos : USINT ; CAN : USINT ; Powerlink : USINT ; X2X : USINT ; END_STRUCT hmi_lockh : STRUCT StatusForLockingButtons : UINT ; LockingDirectJump : UINT ; StatusForLockingInputFields : UI NT ; END_STRUCT hmi_netweth : STRUCT EthernetAdrReady : USINT ; AddressChanged : BOOL ; BroadcastAddressValue : ARRAY[0. .3] OF USINT ; DefGatewayValue : ARRAY[0..3] OF USINT ; EthBaudrate : USINT ; EthDeviceName : STRING(11) ; EthernetInitMode : USINT ; IPAddressValue : ARRAY[0..3] OF USINT ; LeaveMenu : BOOL ; NextPage : USINT ; SaveEthSettings : BOOL ; OptionVolatile : UDINT ; SubnetMaskValue : ARRAY[0..3] OF USINT ; END_STRUCT PLSYSCONF_IF_typ : STRUCT station : USINT ; slot : USINT ; subslot : USINT ; interface : USINT ; pl_cycle : UDINT ; pl_prescale : UDINT ; uptimeout : UDINT ; bus : USINT ; MuxStationsPerCycle : USINT ; MuxPrescaler : USINT ; reservedbyte : USINT ; reservedlong : UDINT ; END_STRUCT hmi_netwplca : STRUCT CANBaud1 : USINT ; CANBaudSet1 : USINT ; CANDeviceName1 : STRING(11) ;

CANNodeNumber1 : USINT ; LeaveMenu : BOOL ; NextPage : UINT ; PLDeviceName : STRING(11) ; PLIFParameters : PLSYSCONF_IF_ty p ; SaveCanSettings1 : BOOL ; SettingsChanged : BOOL ; END_STRUCT hmi_pageh : STRUCT ButBackFromAlarming : BOOL ; ButBackFromShortcut : BOOL ; ButShortcut : ARRAY[0..5] OF BOO L ; DataObjectName : STRING(8) ; LastPage : UINT ; ShortcutPage : ARRAY[0..5] OF UI NT ; VC_Handle : UDINT ; END_STRUCT button : STRUCT ButAlarm : BOOL ; ButHome : BOOL ; ButExpertPasswordOn : BOOL ; AutoLogoutOn : UINT ; Logout : BOOL ; StatusHomeButton : UINT ; StatusAlarmButton : UINT ; END_STRUCT statusvariable : STRUCT ActualLanguage : UINT ; ActualPage : UINT ; ActualHomePage : UINT ; ActualHomePicture : UINT ; StatusInputFieldActualPage : UIN T ; StatusTextNumber : UINT ; StatusTextColor : UINT ; END_STRUCT userdata : STRUCT UserName : STRING(13) ; UserPassword : STRING(10) ; UserLevel : USINT ; PasswordEntered : USINT ; SearchComplete : USINT ; END_STRUCT header : STRUCT Button : button ; StatusVariable : statusvariable ; UserData : userdata ; END_STRUCT hmi_panel : STRUCT KeyLevel : UINT ; ActualPage : UINT ; Header : header ; PanelObjectName : STRING(8) ; PanelSize : USINT ; SwitchToPage : UINT ; END_STRUCT

hmi_password : STRUCT ChangPassword : ARRAY[0..8] OF S TRING(10) ; DataObjectName : STRING(8) ; NewPassword : ARRAY[0..10] OF US INT ; OpenPasswordAlphaPad : BOOL ; Password : ARRAY[0..8] OF STR ING(10) ; StatusChangePasswordInput : ARRA Y[0..8] OF UINT ; StatusPasswordInput : UINT ; END_STRUCT csvfileheader : STRUCT MachineNumber : STRING(30) ; Comment : STRING(30) ; Version : STRING(30) ; END_STRUCT hmi_recipeconfig_typ : STRUCT CSV_FileHeader : csvfileheader ; CSV_StructureName : STRING(32) ; Online_StructureName : STRING(32 ) ; Offline_StructureName : STRING(3 2) ; Default_StructureName : STRING(3 2) ; DeviceName : STRING(32) ; FolderName : STRING(32) ; Page_OnlineData : UINT ; Page_OnlineOpen : UINT ; Page_OfflineData : UINT ; Page_OfflineOpen : UINT ; Page_OfflineDelete : UINT ; END_STRUCT hmi_recipeh : STRUCT RecipeConfiguration : ARRAY[0..9 ] OF hmi_recipeconfig_typ ; CMD_Recipe : USINT ; RecipeTypeIndex : USINT ; FilehandlingStatus : UINT ; SelectRecipeType : ARRAY[0..9] O F USINT ; RecipeNumberColor : UINT ; RecipeNumberStatus : UINT ; InputChanged : UINT ; StatusRecipeMainPage : UINT ; StatusScrollButtonPageDown : UIN T ; StatusScrollButtonPageUp : UINT ; TouchListbox : USINT ; UpdateRecipeDataReady : USINT ; END_STRUCT hmi_vclean : STRUCT CleaningTime : USINT ; END_STRUCT DTStructure : STRUCT year : UINT ; month : USINT ;

day : USINT ; wday : USINT ; hour : USINT ; minute : USINT ; second : USINT ; millisec : UINT ; microsec : UINT ; END_STRUCT hmi_sysset : STRUCT BrightnessValue : UINT ; ButChangeLanguage : BOOL ; ContrastValue : UINT ; DateOut : STRING(8) ; DateTimeActual : DTStructure ; DateTimeChange : BOOL ; MaxNumberOfLanguage : USINT ; TimeOut : STRING(8) ; PageLimitation : UINT ; AutoLogoutTimeInMin : USINT ; ButStartCalibrationFlag : BOOL ; ButStartCalibration : USINT ; END_STRUCT hmi_update : STRUCT ButUpdateUSB : UINT ; ButRestoreUSB : UINT ; ButDeleteTemp : UINT ; END_STRUCT hmi_config : STRUCT HMI_SW_Version : STRING(24) ; HMI_Version : STRING(24) ; HMI_Date : STRING(24) ; FD_Config : hmi_fdconfig ; Alarmh : hmi_alarmh ; Alarmi : hmi_alarmi ; Backup : hmi_backup ; Cpusys : hmi_cpusys ; Dialogh : hmi_dialogh ; Hardware : hmi_hardware ; Lockh : hmi_lockh ; Netweth : hmi_netweth ; Netwplca : hmi_netwplca ; Pageh : hmi_pageh ; Panel : hmi_panel ; Password : hmi_password ; Recipeh : hmi_recipeh ; VClean : hmi_vclean ; Sysset : hmi_sysset ; Update : hmi_update ; END_STRUCT alarmhstatus : STRUCT VA_Saccess : UINT ; VA_GetActAlarmList : UINT ; AlarmDialog : UINT ; VA_GetAlarmList : UINT ; VA_Quit : UINT ; END_STRUCT END_TYPE VARIABLE VAR_EXTERNAL HMI_Config %MB :hmi_config

; ! END_VAR VAR_LOCAL xcnt ! AlarmIdent %MW ! Status us ; ! AlarmInformation %MB :alarminfo ; ! ycnt ! ActualAlarmGroupNumber %MW :ARRA Y [0..49] OF UINT ; ! ActualAlarmNumber %MW :ARRAY [0. .49] OF UINT ; ! GroupNumberString %MW :ARRAY [0. .3] OF UINT ; ! CheckStep ! ACKNOWLEDGE_ALARM %CB :USINT = 5; ! FlashingCounter %MW :UINT ! WHITE = 15; ! RED = 51; ! iFunction ! cDateTimeFormat %MB :USINT ! cSeperator %MB ! AlarmEvent %MW 3] OF UINT ; ! CALL_DIALOG %CB = 4; ! AlarmHandlingStep %MB :USINT ; ! LenAlarmLine %MB ! ActAlarmListStatus %MW :UINT ; ! ActAlarmString %MW 149] OF UINT ; ! scnt ! acnt ! AlarmNumberString %MW :ARRAY [0. .3] OF UINT ; ! gcnt ! SeperatorCounter %MB :USINT ! CONTROL_ALARMS %CB = 3; ! ActualAlarmEvent %MB :ARRAY [0.. :USINT : ; %MB :USINT ; %MB :USINT ; %MB :USINT ; :ARRAY [0.. :DINT ; :USINT : :ARRAY [0.. :USINT ; ; %MW :UINT ; %CB :USINT : %CB :USINT : ; : %MB :USINT ; %MB :DINT ; %MB :alarmhstat :UINT ; %MW :UINT ;

49] OF USINT ; ! AlarmLen ! zcnt ! NumberOfActualAlarms %MW :UINT ; ! ACKNOWLEDGE_ALLALARMS %CB :USINT := 6; ! DBT_ACKALL %CB = 10; ! tempCString %MB ; ! INI_HANDLE %CB = 0; ! READ_NEXT = 2; ! READ_FIRST %CB = 1; ! END_VAR VAR_CONSTANT READ_FIRST_ALARM %CB :USINT = 1; ! READ_NEXT_ALARM %CB :USINT = 2; ! TEXTGROUP_DIALOG_HEADERTEXT %CB :USINT := 10; ! DHT_WARNING_ALARM %CB :USINT = 3; ! TEXTGROUP_DIALOG_BUTTONTEXT %CB :USINT := 12; ! DBT_ACK = 4; ! END_VAR VAR_DYNAMIC pUINT ! END_VAR END_VARIABLE END_PROGRAM END_PROCESSOR END_PLC END_PROJECT %MW :UINT ; %CB :USINT : : : : :USINT : %CB :USINT : :USINT : :STRING(10) :USINT : %MB :USINT ; %MW :UINT ;

Вам также может понравиться