Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- macro_command main()
- bool open_close // 1 - opened, 0 - closed
- GetData(open_close, "Local HMI", LB, 3, 1)
- short counter
- int eventTime //LW3
- if eventTime + 3 <
- short openingButton
- short closingButton
- short stopButton
- GetData(closingButton, "Local HMI", LB, 0, 1)
- GetData(openingButton, "Local HMI", LB, 1, 1)
- GetData(stopButton, "Local HMI", LB, 2, 1)
- //declaration of states:
- short state // 0 - no move
- // 1 - opening
- // 2 - closing
- // 3 - stoped during work
- GetData(state, "Local HMI", LW, 10, 1)
- short previousState // potrzebne do stopu
- GetData(previousState, "Local HMI", LW, 20, 1)
- bool diode
- bool help
- select case state
- case 0 // jestesmy w stanie nomoving
- diode = 1
- SetData(diode, "Local HMI", LB, 20, 1)
- diode = 0
- SetData(diode, "Local HMI", LB, 10, 1)
- SetData(diode, "Local HMI", LB, 30, 1)
- //rozpoczynamy proces otwierania bramy - czyli zmieniamy stan
- if open_close == 0 and openingButton == 1 then
- state = 1
- SetData(state, "Local HMI", LW, 10, 1)
- GetData(eventTime, "Local HMI", LW, 3, 1)
- else if open_close == 1 and closingButton == 1 then
- state = 2
- SetData(state, "Local HMI", LW, 10, 1)
- GetData(eventTime, "Local HMI", LW, 3, 1)
- end if
- break
- case 1 //Proces otwierania
- if stopButton == 1 then //uwzglednij zatrzymanie bramy podczas pracy
- previousState = state //aby pozniej uwzglednic to przy puszczeniu stop
- SetData(previousState, "Local HMI", LW, 20, 1)
- state = 3
- SetData(state, "Local HMI", LW, 10, 1)
- break //przerwij aby nie wykonywac dalszych instrukcji
- end if
- help = 0
- SetData(help, "Local HMI", LB, 20, 1) // zgas diode not moving
- help = 1
- SetData(help, "Local HMI", LB, 10, 1) // zapal diode opening
- DELAY(3000)
- SetData(help, "Local HMI", LB, 20, 1) //zapal diode not moving
- help = 0
- SetData(help, "Local HMI", LB, 10, 1) // zgas diode opening
- help = 1
- SetData(help, "Local HMI", LB, 3, 1) // open/close --> opened (swieci)
- state = 0
- SetData(state, "Local HMI", LW, 10, 1) // zgas diode not moving
- break
- case 2 //Proces zamykania
- if stopButton == 1 then //uwzglednij zatrzymanie bramy podczas pracy
- previousState = state //aby pozniej uwzglednic to przy puszczeniu stop
- SetData(previousState, "Local HMI", LW, 20, 1)
- state = 3
- SetData(state, "Local HMI", LW, 10, 1)
- break //przerwij aby nie wykonywac dalszych instrukcji
- end if
- help = 0
- SetData(help, "Local HMI", LB, 20, 1) // zgas diode not moving
- help = 1
- SetData(help, "Local HMI", LB, 30, 1) // zapal diode closing
- DELAY(1500)
- bool absence_presence = 0
- if absence_presence == 1 then
- help = 0
- SetData(help, "Local HMI", LB, 30, 1) // turn off cloding diode
- help = 1
- SetData(help, "Local HMI", LB, 10, 1) // turn on opening diode
- DELAY(1500)
- SetData(help, "Local HMI", LB, 20, 1) // turn on not moving diode
- help = 0
- SetData(help, "Local HMI", LB, 10, 1) // turn off opening diode
- state = 1
- SetData(state, "Local HMI", LW, 10, 1)
- break //przerwij aby nie wykonywac dalszych instrukcji
- else
- DELAY(1500)
- SetData(help, "Local HMI", LB, 20, 1) //zapal diode not moving
- help = 0
- SetData(help, "Local HMI", LB, 30, 1) // zgas diode closing
- SetData(help, "Local HMI", LB, 3, 1) // open/close --> closed (nie swieci)
- state = 0
- SetData(state, "Local HMI", LW, 10, 1)
- end if
- break
- case 3 //brama zatrzymana podczas pracy
- if stopButton == 0 then
- state = previousState
- SetData(state, "Local HMI", LW, 10, 1)
- end if
- break
- end select
- end macro_command
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement