;------------------------------------------------------------- ;Aplicación -> control transferencia energia ;Fecha -> julio 17 2003 ;listado subrutinas ;redon, funcionamiento trans en normal con presencia de red ;plaon,entrada de planta 1 y control funcionamiento ;plaof, salida planta1 ;horo, horometros ;sali,control salidas digitales ;even,eventos a db y alarmas ;sema, arranque semanal ;tempo, temporizador general ;ala, errores ;------------------------------------------------------------- mida 64 scan equ 399 ;programa principal--------------------------------------- &ini ld scan jz &lea jmp ini &lea call &leavar ini ini0 ld vigrm ;cuando se reinicicia entra a ini00 xor vigrma ;inicia en reset out vigrmb ld vigrmb ;cambio vigrm !!!! jnz ini00 jmp ini1 ini00 clear ;cuando cambia vigrm entra aqui disl carel com 0 ;call moto ;call horo ;call plc ;call sali call ala call even ld vigrm ;hay red? jnz ini01 jmp ini02 ini01 call redon ;si hay red jmp ini03 ini02 call plaon ;no hay red ini03 ld vigrm out vigrma jmp ini0 ini1 ld vigrm ;aqui mientras no cambie virgm jnz ini10 jmp ini11 ini10 clear disl estared ;aviso de red estable com 0 ini11 ld vig1m jnz ini12 jmp ini13 ini12 clear disl estapla1 ;aviso planta 1 estable com 0 ini13 ld vig2m jnz ini14 jmp ini15 ini14 clear disl estapla2 ;aviso planta2 estable com 0 ini15 call ala call moto call horo setri temgeni 20 call tempo ;call plc ;call sali ;call plaon call apapla setri temgeni 20 call tempo fin end ;=================================================================== uno clear disl unol com 0 ;ld 340 ;jz uno unof ret dos clear disl dosl com 0 ;ld 341 ;jz dos dosf ret tres clear disl tresl com 0 ;ld 342 ;jz tres tresf ret cuatro clear disl cuatrol com 0 ;ld 343 ;jz cuatro cuatrof ret ;======================================================================== ;plc monitor de errores del plc========================== plc movri 10 ;error general? movci 0 cpgi plc1 movri 11 ;error placa base? movci 0 cpgi plc2 movri 12 ;error cartas? movci 0 cpgi plc3 jmp plc4 ;no hay error todo normal plc1 reset vigplcct ;si..error general reset salipar call sali reset vigplcc clear disl plc1l com 0 jmp plcf plc2 reset vigplcct ;si..error placa base reset salipar call sali reset vigplcc clear disl plc2l com 0 jmp plcf plc3 reset vigplcct ;si...error cartas reset salipar call sali reset vigplcc clear disl plc3l com 0 jmp plcf plc4 set vigplcc plcf ;ala alarmas============================================ ala ld manaut out ledf4 ;manaut ld conrm ;actualiza led panel out ledf5 ld con1m out ledf6 ld con2m out ledf7 ld vigrm out ledf9 ld vig1m out ledf10 ld vig2m out ledf11 ld salipar out ledf12 ;salipar ld pla1c out ledf13 ld pla2c out ledf14 ld manaut ;cambio manaut? xor manauta out manautb ld manautb ;si cambio... jnz alaa jmp ala0 alaa ld manaut ;entro aqui cuando cambio... out manauta ld manaut ;es manual o auto ? jnz alab jnz alac alab reset salipar ;es manual..... call sali clear disl manautl com 0 alac set salipar ;es auto.... call sali ala0 ld mot2d ;moto2 se disparo jnz ala0a jmp ala0b ala0a set alamot ;prenda alarma jmp ala0c ala0b reset alamot ;se restauro moto2 ala0c ld mot0d ;moto1 o 0 se disparo? or mot1d jnz ala00 jmp ala03 ala00 ld conrct ;si.....guarde estados de contac out conrctt ld con1ct out con1ctt ld con2ct out con2ctt ala01 reset conrct ;resetee contactors reset con1ct reset con2ct call sali ala010 ld mot0d ;se restauraron moto 1 o 0? or mot1d outnt aux5 ld aux5 jnz ala02 set alamot ;dispare alarma clear disl erromot ;!!! ojo !!! queda en loop com 0 jmp ala010 ala02 ld conrctt ;si....rstaure los estados iniciales de cont out conrct ld con1ctt out con1ct ld con2ctt out con2ct call sali reset alamot ;resetee alarma ala03 ld prump ;no entraron plantas? jnz ala1 jmp ala2 ala1 clear ;no entraron..... disl alar com 0 set alapla set apaplat ld 340 ;!!!! ojo !!!! es temporal...que hago? jz ala1 ala2 reset prump ;reseteo entrada plantas reset alapla ala3 alaf ret ;even eventos============================================ ;parametros para even1 ;eveni fin de calculo=0 se reinicia ;event direccion memoria even clear disl guevl com 0 movci 0 ;reinicia eveni (respuesta final) stoi eveni movci 0 ;mueve registro que se quiere leer 0-7 stoi event call even1 ;corre subr para leer bit a bit movri eveni stoi even0e guarda resultados de los 8 bits movci 0 stoi eveni movci 8 ;8-15 stoi event call even1 movri eveni stoi even7e movci 0 stoi eveni movci 1000 ;1000-1007 stoi event call even1 movri eveni stoi even10e movci 0 stoi eveni movci 1008 ;1008-1014 stoi event call even1 movri eveni stoi even18e movci 0 stoi eveni movci 1100 ;1100-1107 stoi event call even1 movri eveni stoi even31e movci 0 stoi eveni movci 1108 ;1108-1115 stoi event call even1 movri eveni stoi even38e movci 0 stoi eveni movci 100 ;100-107 stoi event call even1 movri eveni stoi even100e movci 0 stoi eveni movci 108 ;108-115 stoi event call even1 movri eveni stoi even108e write 0 1 clear disri 50 4 com 3 evenf ret ;even1 temporal de event ciclico=========================== even1 movci 0 stoi even1i movci 0 stoi even2i movci 0 stoi even3i movci 0 stoi even4i movci 0 stoi even5i movci 0 stoi even6i movci 0 stoi even7i movci 0 stoi even8i ldx event jnz even2 jmp even3 even2 movci 1 ;guarda valor de 2 a la n stoi even1i even3 inc event 1 ldx event jnz even4 ;el bit es uno? jmp even5 even4 movci 2 ;guarda el 2 a la n en registro stoi even2i even5 inc event 1 ldx event jnz even6 jmp even7 even6 movci 4 stoi even3i even7 inc event 1 ldx event jnz even8 jmp even9 even8 movci 8 stoi even4i even9 inc event 1 ldx event jnz even10 jmp even11 even10 movci 16 stoi even5i even11 inc event 1 ldx event jnz even12 jmp even13 even12 movci 32 stoi even6i even13 inc event 1 ldx event jnz even14 jmp even15 even14 movci 64 stoi even7i even15 inc event 1 ldx event jnz even16 jmp even17 even16 movci 128 stoi even8i even17 movri even1i ;suma todos los registros movri even2i addi stoi eveni movri eveni movri even3i addi stoi eveni movri eveni movri even4i addi stoi eveni movri eveni movri even5i addi stoi eveni movri eveni movri even6i addi stoi eveni movri eveni movri even7i addi stoi eveni movri eveni movri even8i addi stoi eveni even1f ret ;tempo temporizador generico para tiempos cortos=============== ;parametros: temgeni=registro valor de tiempo tempo reset auxgen1 reset auxgen2 tempo1 ld auxgen1 timr timgen temgeni out auxgen2 set auxgen1 ld auxgen2 jz tempo1 tempof ret ;moto vigila motorizados================================== ;pareametros camtra=cambio transferencia =1 trans vieja =0 transf nueva moto ld camtra1 ;auxiliar para cambio de estado de camtra jz moto2 moto1 moto2 ld camtra ;si camtra y camtrat son diferentes o iguales xor camtrat out camtra1 ld camtra1 ;camtra cambio !!!!!!! jnz moto3 jmp motof moto3 ld camtra out camtrat call redon ;primero entra la red ld camtra jnz moto4 ;camtra es 1 entra frasf vieja jmp moto5 ;camtra es 1 entra frasf nueva moto4 clear ;tranf vieja disl camol com 0 set salipar setri temgeni 50 call tempo set mot1cft ;abre moto1 call sali setri temgeni 20 call tempo reset mot1cft ;fin pulso de moto1 ld mot1cft out ledf15 call sali setri temgeni 50 call tempo set mot2cnt ;cierra moto2 ld mot2cnt out ledf16 call sali setri temgeni 20 call tempo reset mot2cnt ;fin pulso call sali reset salipar call sali call even ;evento moto41 clear ;si esta tranf vieja se queda en este loop disl trful1 loc 17 disl trful2 com 0 ld camtra ;!!!!!!!!!!!!!! ojo !!!!!!!!!!!!! jnz moto41 jmp motof moto5 clear ;transf nueva disl camol com 0 set salipar setri temgeni 50 call tempo set mot2cft ;abre moto2 call sali setri temgeni 20 call tempo reset mot2cft ;fin pulso ld mot2cft out ledf16 call sali setri temgeni 50 call tempo set mot1cnt ;cierra moto1 ld mot1cnt out ledf15 call sali setri temgeni 20 call tempo reset mot1cnt ;fin pulso call sali call even ;evento motof set salipar ret ;sali control salidas digitales======================= ;parametros salipar=0 no hay salidas 1=hay salidas sali clear disl casal com 0 ld salipar jz sali2 sali1 ld conrct ;pasa temporales a salidas digitales salipar=1 out conrc ld con1ct out con1c ld con2ct out con2c ld pla1ct out pla1c ld pla2ct out pla2c ld mot1cnt out mot1cn ld mot1cft out mot1cf ld mot2cnt out mot2cn ld mot2cft out mot2cf ld alamat out alama ld alaplct out alaplc ld alaplat out alapla ld alamott out alamot ld sirt out sir ld lict out lic ld vigplcc out vigplcct jmp salif sali2 reset conrc ;resetea todas las salidas salipar=0 reset con1c reset con2c reset pla1c reset pla2c reset mot1cn reset mot1cf reset mot2cn reset mot2cf reset alama reset alaplc reset alapla reset alamot reset sir reset lic reset vigplcc salif ret ;horo carga horometros y selecciona planta=============== ;entrega....selpla rele si=0 arranca planta2 si=1 arranca planta1 horo set ledf8 movri horario ;mira horario y compara movri horariot cpgi horo1 jmp horo4 horo1 ld vigrm ;hay red? jnz horo11 jmp horo2 horo11 movcf 1 ;si hay red acumula un minuto movrf horored addf stof horored horo2 ld vig1m ;hay planta1? jnz horo21 jmp horo3 horo21 movcf 1 ;si hay planta1 acumuna un minuto movrf horop1 addf stof horop1 horo3 ld vig2m ;hay planta2 jnz horo31 jmp horo4 horo31 movcf 1 ;si hay planta2 acumula 1 minuto movrf horop2 addf stof horop2 horo4 movrf horop1 ;cual planta tiene mas tiempo movrf horop2 cpgf horo41 jmp horo42 horo41 reset selpla ;arranca planta2 !!!!!! jmp horof horo42 set selpla ;arranca planta1 !!!!!!!! horof setri temgeni 10 call tempo reset ledf8 movri horario movri horariot cpgi horoff jmp horofff horoff movri horario guarda horario1 stoi horariot horofff ret ;redon funcionamiento con red ============================= ;parametro redonp=1 si es 1 cambio el estado de la red y llego. redon clear disl enrel com 0 reset auxt1 ;tiempo espera estabilidad red reset auxt2 redon01 ld auxt1 timr timvr ttimvr out auxt2 set auxt1 ld vigrm jz redonf ;si se fue la red....no hace nada ld auxt2 jz redon01 reset con1ct ;abre contactor de planta reset con2ct set apaplat ;param para apagar las 2 plantas call sali setri temgeni 50 call tempo reset conrct ;cierra contactor de planta call sali call even redonf ret ;plaon entrada de planta=============================== ;pruent(i) numero de pruebas de entrada plantas plaon clear disl enpll com 0 setri pruent 0 reset prump ;pruebas mayor que 2 veces parametros set pla1ct ;enciende las 2 plantas set pla2ct call sali reset auxt1 ;tiempo espera estabilidad red reset auxt2 plaon01 ld auxt1 timr timpon ttimpon out auxt2 set auxt1 ld vigrm jnz plaon011 ;si se fue la red....no hace nada jmp plaon012 plaon011 set apaplat jmp plaonf plaon012 ld auxt2 jz plaon01 set conrct ;sale el contactor de red call sali call horo ;selecciono cual planta entra plaon02 ld selpla setri pruent 0 jnz plaon1 ;selecciono planta 1 jmp plaon2 ;selecciono planta 2 plaon1 inc pruent 1 ;arrranca planta1 clear disl intpla1 loc 20 disri pruent 3 com 0 movri pruent movri pruentp ;prueba numero de arranques cpgi plaon3 ;mas de x arranques programados reset auxt1 ;tiempo entre reintentos reset auxt2 plaon10 ld auxt1 timr timrei ttimrei out auxt2 set auxt1 ld auxt2 jz plaon10 ld vig1m ;pregunta por el vig de planta1 jnz plaon11 ;si entro el vig. jmp plaon1 ;no entro el vig, prueba nuevamente plaon11 reset prump set con1ct ;entra el contactor de planta 1 call sali set apapla2 ;setea para apagar planta2 call even jmp plaonf plaon2 inc pruent 1 ;arranca planta 2 clear disl intpla2 loc 20 disri pruent 3 com 0 movri pruent movri pruentp ;prueba numero de arranques cpgi plaon3 ;mas de x arranques programados reset auxt1 ;tiempo entre reintentos reset auxt2 plaon20 ld auxt1 timr timrei ttimrei out auxt2 set auxt1 ld auxt2 jz plaon20 ld vig2m ;pregunta por el vig de planta2 jnz plaon21 ;si entro el vig. jmp plaon2 ;no entro el vig. prueba nuevamente plaon21 reset prump set con2ct ;entra el contactor de planta 2 call sali set apapla1 ;setea para apagar planta1 call even jmp plaonf plaon3 ld prump ;si es la primera vez=0 jnz plaon4 ;si ya paso por aca error grave set prump ld selpla ;cambia seltra para que arranque con otra outnt selpla jmp plaon02 ;prueba arranque con otra plaon4 plaonf ret ;=========================================================================== ;apapla apaga las plantas despues de minutos ;param apaplat=1 apaga las 2 plantas ; apapla1=1 apaga planta1 apapla2=1 apaga planta 2 apapla ld apaplat jnz apapla03 jmp apapla04 apapla03 clear ;selecciona apagado de 2 plantas disl appll com 0 reset auxt3 reset auxt4 apa031 ld vigrm ;si se fue la red jz apaplaf call moto call horo ld auxt3 timr timpof ttimpof out auxt4 set auxt3 clear disl appll com 0 ld auxt4 jz apa031 reset pla1ct ;apaga las plantas..... reset pla2ct call sali jmp apapla08 apapla04 ld apapla1 ;selecciona apagar planta 1 jnz apapla05 jmp apapla06 apapla05 clear disl appll com 0 reset auxt3 reset auxt4 apa051 ld vigrm ;si se fue la red jz apaplaf call moto call horo ld auxt3 timr timpof ttimpof out auxt4 set auxt3 ld auxt4 jz apa051 reset pla1ct call sali jmp apapla08 apapla06 ld apapla2 jnz apapla07 jmp apapla08 apapla07 clear disl appll com 0 reset auxt3 reset auxt4 apa071 ld vigrm ;si se fue la red jz apaplaf call moto call horo ld auxt3 timr timpof ttimpof out auxt4 set auxt3 ld auxt4 jz apa071 reset pla2ct call sali apapla08 reset apaplat reset apapla1 reset apapla2 apaplaf ret ;&leavar============================================= &leavar ;[REG_RELAYS] ;entradas digitales-------------------------- manaut equ 1015 ;***** 0 manual automatico manaut1 equ manaut2 equ 2 camtra equ 1013 ;cambio transferencias vig1m equ 1 ;**** 1011 vigilante planta1 monitoria vig2m equ 1012 ;vigilante planta2 monitoria vigrm equ 0 ;*** 1003 vigilante red monitoria conrm equ 1004 ;contactor red monitoria con1m equ 1014 ;contactor planta1 monitoria con2m equ 1015 ;contactor planta2 monitoria mot0d equ 1003 ;defecto moto aariba contac red mot1m equ 3 ;motorizado barra1 monitoria mot1d equ 1000 ;motorizado defecto barra1 mot2m equ 4 ;motorizado barra2 monitoria mot2d equ 1001 ;motorizado defecto barra2 mot3m equ 5 mot3d equ 1102 reset equ ;reset alarmas vigr2m equ ;vigilante red2 monitoria vigplcm equ 1103 ;vigilante plc pla1m equ ;planta1 monitoria encendido pla2m equ ;planta2 monitoria encendido cond1 equ 6 cond2 equ 7 cond3 equ 8 cond4 equ 9 cond5 equ 10 cond6 equ 11 cond7 equ 12 cond8 equ 13 cond9 equ 14 cond10 equ 15 ;salidas digitales---------------------------- conrc equ 100 ;contactor red control con1c equ 101 ;contactor planta1 control con2c equ 102 ;contactor planta2 control pla1c equ 103 ;planta 1 encendicdo control pla2c equ 104 ;planta 2 encendido control mot1cn equ 105 ;motorizado barra1 control on mot1cf equ 108 ;motorizado barras control off mot2cn equ 106 ;motorizado barras control on mot2cf equ 109 ;motorizado barras control off alama equ 111 ;alarma de manual auto segun documento alaplc equ 113 ;alarma falla plc alapla equ 112 ;alarma falla plantas alamot equ 114 ;alarma falla motorizados sir equ 107 ;sirena lic equ 110 ;licuadora vigplcc equ 115 ;vigilante plc control ;aux salidas--------------------------------------------- conrct equ 400 ;contactor red control con1ct equ 401 ;contactor planta1 control con2ct equ 402 ;contactor planta2 control pla1ct equ 403 ;planta 1 encendicdo control pla2ct equ 404 ;planta 2 encendido control mot1cnt equ 405 ;motorizado barra1 control on mot1cft equ 408 ;motorizado barras control off mot2cnt equ 406 ;motorizado barras control on mot2cft equ 409 ;motorizado barras control off alamat equ 411 ;alarma de manual auto segun documento alaplct equ 413 ;alarma falla plc alaplat equ 412 ;alarma falla plantas alamott equ 414 ;alarma falla motorizados sirt equ 407 ;sirena lict equ 410 ;licuadora vigplcct equ 415 ;vigilante plc control ;mas reles--------------------------------------------------------- ledf4 equ 323 ledf5 equ 324 ledf6 equ 325 ledf7 equ 326 ledf8 equ 327 ledf9 equ 328 ledf10 equ 329 ledf11 equ 330 ledf12 equ 331 ledf13 equ 332 ledf14 equ 333 ledf15 equ 334 ledf16 equ 335 selpla equ 420 ;call horo selecciona planta =1 planta1 =0 planta2 semhab equ 421 ;habilita arranque semanal=1 auxgen1 equ 430 ;aux para tempo general auxgen2 equ 431 ;aux para tempo general salipar equ 432 ;=1 cambia salidas =0 reset salidas camtrat equ 434 ;temporal anterior camtra1 equ 435 ;resultado del xor auxt1 equ 436 auxt2 equ 437 auxt3 equ 438 auxt4 equ 439 aux5 equ 440 apaplat equ 450 ;indica que debe entrar a apapla las 2 plantas apapla1 equ 451 ;indica que debe entrar a apapla apaga planta1 apapla2 equ 452 ;indica que debe entrar a apapla apaga planta2 ;seltra equ 453 ;parametro salida horo seleccion plantas vigrma equ 454 vigrmb equ 455 prump equ 456 ;plaon hace que arranque la otra planta en caso de fallo conrctt equ 457 ;temporal cuando se disparan los motos en ala con1ctt equ 458 con2ctt equ 459 manauta equ 460 ;auxiliares para manaut detecta cambio call ala manautb equ 461 ;[REG_INTEGERS] horario equ 43 ;horario horariot equ 300 ;temp horario call horo ttimvr equ 310 ;temp. de vig. red antes de hacer trasnf ttimpon equ 311 ;temp toma carga por plantas ttimpof equ 312 ;temp apagado plantas minutos ttimrei equ 313 ;temp entre reintentos de encendido planta ttimcon equ 314 ;temp para mover contactores ppales.5 ttimsem equ 315 ;temp arranque semanal horasem equ 316 ;en horario hora arranque semanal diasem equ 317 ;dia arranque semanal reint equ 320 ;reintentos arranque plantas temgeni equ 321 timp1 equ 322 eveni equ 400 ;resultado de cada ciclo de calculo event equ 401 ;direccion de entrada even0e equ 402 ;resul entrada 0-7 even7e equ 403 ;resul entrada 8-15 even10e equ 404 ;resul entrada 1000-1015 even18e equ 405 ;resul entrada 1016-1030 even31e equ 406 ;resul entrada 1100-1115 even38e equ 407 ;resul entrada 1116-1130 even100e equ 408 ;resul salida 100-107 even108e equ 409 ;resul salida 108-115 even1i equ 410 ;dato x1 even2i equ 411 ;dato x2 even3i equ 412 ;dato x4 even4i equ 413 ;dato x8 even5i equ 414 ;dato x16 even6i equ 415 ;dato x32 even7i equ 416 ;dato x64 even8i equ 417 ;dato x128 pruent equ 420 ;# de reintentos de entrar contac de planta pruentp equ 421 ;parametro de # pruebas de entrada ;[REG_FLOATS] horored equ 100 ;horometro red en minutos horop1 equ 101 ;horometro planta1 horop2 equ 102 ;horometro planta2 ;[TIM] timvr equ 250 ;temp. de vig. red antes de hacer trasnf timpon equ 251 ;temp toma carga por plantas timpof equ 252 ;temp apagado plantas minutos timrei equ 253 ;temp entre reintentos de encendido planta timcon equ 254 ;temp para mover contactores ppales. timsem equ 255 ;duracion arranque semanal timgen equ 256 ;temporizador general con entero 321 ;[CNT] ;[NOP] ;[TEXTOS] plc1l lite "ERROR LOGICO SOFTWARE" plc2l lite "ERROR HARDWARE PLC" plc3l lite "ERROR ENTRADAS/SALIDAS" unol lite "uno" dosl lite "dos" tresl lite "tres" cuatrol lite "cuatro" alar lite "No entro Planta" intpla1 lite "Intentos Planta1" intpla2 lite "Intentos Planta2" carel lite "Cambio en la red" estared lite "Estable Red" estapla1 lite "Estable Planta 1" estapla2 lite "Estable Planta 2" guevl lite "Guardando Eventos" camol lite "Cambio Motorizados" casal lite "Cambio Salidas" cahol lite "Cargando Horometros" enrel lite "Entrando Red" enpll lite "Entrando Plantas" appll lite "Apagando Plantas" trful1 lite "Transferencia" trful2 lite "Fuera" erromot lite "Disparo Motorizados" manautl lite "Tranf. Manual" ;iniciar variables-------------------------------- file 0,600D,610T,402i,403i,404i,405i,406i,407i,408i,409i,len=300,TYPE=C movri horario stoi horariot ld camtra ;guarda el estado actual en camtra out camtrat reset vigrma setri pruentp 3 reset apaplat reset apapla1 reset apapla2 ld camtra jnz &var1 set ledf15 jmp &var2 &var1 set ledf16 &var2 ;ojo ojo ojo para quitar despues------------------- setri ttimpon 50 setri ttimvr 50 setri ttimpof 100 setri ttimrei 50 set salipar ret ;======================================================