(import ikernel.*)
(deftemplate OPCServerjopc    (declare (from-class OPCServerjopc)))
(deftemplate Tag  		(declare (from-class Tag)))

;******************************** OPC Servers **********************************
(defrule DATASRV-ON
	(Tag{label == "_dataserver" && value == "1"})
	=>
	(assert (DATASRV-ON uhcn))
	;(printout  t "DATASRV-ON " uhcn crlf)	
)
(defrule DATASRV-OFF
	(Tag{label == "_dataserver" && value == "0"})
	=>
	(printout gui12 "G1DATASRV#programmers#")
	(printout gui22 "G2DATASRV##")
	(printout gui32 "G3DATASRV##")
	(printout gui14 "gep-vermelho#sad-vermelho#srv-vermelho#sve-vermelho#sdt-vermelho#mgg-vermelho#mcb-vermelho#mgt-vermelho#") ;;;"gep-amarelo#sad-amarelo#srv-amarelo#sve-amarelo#sdt-amarelo#mgg-amarelo#mcb-amarelo#mgt-amarelo#")
	(printout gui24 "gep-amarelo#sad-amarelo#srv-amarelo#sve-amarelo#sdt-amarelo#mgg-amarelo#mcb-amarelo#mgt-amarelo#")
	(printout gui34 "gep-amarelo#sad-amarelo#srv-amarelo#sve-amarelo#sdt-amarelo#mgg-amarelo#mcb-amarelo#mgt-amarelo#")
	(printout  t "DATASRV-OFF " uhcn crlf)	
)
;***********************************  SIMPO  ************************************
(defrule SIMPO-ON
	(Tag{label == "_simpooff" && value == "0"})
	=>   
	(assert (SIMPO ON))
	;(printout  t "SIMPO ON" crlf)	        	        
)

(defrule SIMPO-OFF
	(Tag{label == "_simpooff" && value == "1"})
	=>         
	(assert (SIMPO OFF))    
	;(printout  t "SIMPO OFF" crlf)	        	        
)
;***********************************  UGHs  ************************************
;---------------------  UGHs OPERATIVOS e SIMPO ONLINE -------------------------
(defrule UGH1-OP
	(DATASRV-ON uhcn)
	(SIMPO ON)
	(Tag{label == "g1.maq.partida" && value == "1"})
	=>      
	(printout guiugh1 "g1.maq.partida")
	;(printout  t "UGH-01 OPP " ?value crlf)	        	        
)
(defrule UGH2-OP
	(DATASRV-ON uhcn)
	(SIMPO ON)
	(Tag{label == "g2.maq.partida" && value == "1"})
	=>         
	(printout guiugh2 "g2.maq.partida") 	
	;(printout  t "UGH-02 OPP " ?value crlf)	                 
)
(defrule UGH3-OP
	(DATASRV-ON uhcn)
	(SIMPO ON)
	(Tag{label == "g3.maq.partida" && value == "1"})
	=>        
	(printout guiugh3 "g3.maq.partida")	
	;(printout  t "UGH-03 OPP " ?value crlf)	                  
)

;---------------------------------  UGHs NAO OPERATIVOS  ------------------------------------

(defrule UGH1-NOP
	(DATASRV-ON uhcn)
	(Tag{label == "g1.maq.partida" && value == "0"})
	=>
	(printout gui12 "G1UGH1#programmers#")
	(printout gui14 "gep-amarelo#mcb-amarelo#mgg-amarelo#mgt-amarelo#srv-amarelo#sve-amarelo#")
	;(printout  t "UGH-01 NO " ?value crlf)	        
)   

(defrule UGH2-NOP
	(DATASRV-ON uhcn)
	(Tag{label == "g2.maq.partida" && value == "0"})
	=>  
	(printout gui22 "G2UGH2#programmers#")
	(printout gui24 "sad-amarelo#mgg-amarelo#mcb-amarelo#")   
	;(printout  t "UGH-02 NO " ?value crlf)	        
)   

(defrule UGH3-NOP
	(DATASRV-ON uhcn)
	(Tag{label == "g3.maq.partida" && value == "0"})
	=>  
	(printout gui32 "G3UGH3#programmers#")
	(printout gui34 "sad-amarelo#srv-amarelo#sve-amarelo#sdt-amarelo#mgg-amarelo#mcb-amarelo#mgt-amarelo#")  
	;(printout  t "UGH-03 NO " ?value crlf)	        
)     

;------------------------------  UGHs OPERATIVOS e SIMPO OFFLINE -------------------------------

(defrule g1.maq.partida
	(Tag{label == "g1.maq.partida" && value == "1"})
	=>
	(assert (g1.maq.partida 1))
	;(printout  t "g1.maq.partida 1" crlf)	  
)

(defrule g2.maq.partida
	(Tag{label == "g2.maq.partida" && value == "1"})
	=>
	(assert (g2.maq.partida 1))
	;(printout  t "g2.maq.partida 1" crlf)	  
)

(defrule g3.maq.partida
	(Tag{label == "g3.maq.partida" && value == "1"})
	=>
	(assert (g3.maq.partida 1))
	;(printout  t "g3.maq.partida 1" crlf)	  
)

(defrule UGH-OP
	(DATASRV-ON uhcn)
	(SIMPO OFF)
	(g1.maq.partida 1)
	(g2.maq.partida 1)
	(g3.maq.partida 1)
	;(Tag{label == "g1.maq.partida" && value == "1"})
	;(Tag{label == "g2.maq.partida" && value == "1"})
	;(Tag{label == "g3.maq.partida" && value == "1"})
	=>        
	(assert (Diagnostic SIMPO-OFF)) 
	;(printout  t "diagnostic SIMPO-OFF" crlf)	  
)

(defrule Decisao-SIMPO
	(Diagnostic SIMPO-OFF)
	=>        
	(printout gui12 "G1SIMPOOFF#programmers#")
	(printout gui22 "G2SIMPOOFF##")
	(printout gui32 "G3SIMPOOFF##")
	(printout gui14 "gep-amarelo#sad-amarelo#srv-amarelo#sve-amarelo#sdt-amarelo#mgg-amarelo#mcb-amarelo#mgt-amarelo#")
	(printout gui24 "gep-amarelo#sad-amarelo#srv-amarelo#sve-amarelo#sdt-amarelo#mgg-amarelo#mcb-amarelo#mgt-amarelo#")
	(printout gui34 "gep-amarelo#sad-amarelo#srv-amarelo#sve-amarelo#sdt-amarelo#mgg-amarelo#mcb-amarelo#mgt-amarelo#") 
	;(printout  t "diagnostic SIMPO-OFF --->>>" crlf)	  
)
