mida 14 ;********************* C A R A C T E R I S T I C A S ********************************** ;******************************************************************************************** ; ;1-) funciona con un pulsador normamente cerrado ; ;2-) este prg funciono para protabaco usando un solo pulsador para aceptar el proceso y ;pulsar una vez para aceptar la caja vacia. ; ;3-) Contien rutina de creacion de nuevo producto ; ;4-) Almacena el valor de tara ; ;5-) Impresion del nombre del producto, que es recibido desde Labview ; ;6-) Reset si caja esta mal ( Se retira todo de sobre la plataforma y se presiona ; el pulsador) ; ;7-) Si esta por fuera de tolerancia se presiona y acepta peso, pero este peso ; debe estar dentro de un 20% (Rutina = fueratol) ;8-) Este programa corrige el error de llevar todo el peso de la caja para aceptar los fardos ; ; ;======================= no olvidar ==================================================== ; ; no olvidar si se hicieron pruebas locales borrar estos valores. ;====================================================================== ; ;DESCRIPCION DE TECLAS DE FUNCIONES ; ; Tara= ; ;Menú ====> + ; ;aceptar peso x fuera de tolerancia === ;================================================================== call varia ;llama rutina de declaracion de variables ;[nop] ;textos cajas lite "ne ca" ;nuevo para distinguir donde es caja vacia caja lite "caja" vacia lite "vacia" e/c lite "ent" fina lite "listo" remoto lite "ini" proces lite "proce" retire lite "reti" desvi lite "desv" llena lite "llena" entcle lite "e/c" prod lite "prod" imp lite "inpr" kg lite "kg" lot lite "lote:" pes lite "peso:" tar lite "tara: prota lite "Protabaco S.A." mus1 lite "mustang azul" mus2 lite "mustang rojo" premi lite "premier" tropical lite "tropical" gt lite "Gt" cali lite "CALI" bala lite "BALA" para lite "PARA pro lite "PROD" esta lite "Esta" ducto lite "Producto:" can lite "Cantidad:" tol lite "tOLE" fardos lite "fardos" textfe lite "Fecha:" texsscc lite "131100002400275" ;numero sscc consecutivo que entrega el Labview primer lite "192200302320021" ;Protabaco segunda lite "112200001970024" ;Producto tercera lite "131100001970106" ;Nombre producto cuarta lite "112200001730023" ;texto Cantidad quinta lite "131100001720107" ;dos ultimos numero de fardos sexta lite "112200001720149" ;texto fardos septima lite "112200001720213" ;texto fecha octava lite "102200001740265" ;digitos de la fecha novena lite "112200001470212Orden" decima lite "131100001460300" ;digitos numero de la orden once lite "112200001480021Peso:" doce lite "131100001470069" ;valor del peso trece lite "131100001470149Kg" ;texto KG catorce lite "1X1100000120013b0369" catorce1 lite "026800010001" quince lite "1X1100002160014l0368" quince1 lite "0001" dieseis lite "1E3304000630060B" ;barras diesiete lite "102200001750319" ;"102200001750319Linea" dieocho lite "112200001720358" ;falta el numero de la linea dienueve lite "1X1100001410014l0368" dienue1 lite "0001" veinte lite "1X1100001920014l0368" veinte0 lite "0001" veinte1 lite "1X1100001660014l0368" veinte11 lite "0001" veinte2 lite "1X1100001420205l0001" veinte21 lite "0050" veinte3 lite "1X1100001670316l0001" veinte31 lite "0024" ;**************************************************************** ;D11 ;W ;z ;PC ;SC ;H10 ;191100602590030Protabaco S.A. ;191100402150031Producto: ;191100402160112Mustang Azul cajetilla dura ;191100301790032Cantidad: ;19110030178009650 ;191100301770121Fardos ;191100301770181Fecha ;19110030177023006/11/2001 ;191100401370180ORDEN : ;191100501350269254789 ;191100401380032Peso: ;19110040136007712,385 ;191100401350136Kg ;1X1100000030028b0374029400010001 ;1X1100001310028l03720001 ;1F3309200120115770202345789 ;191100301770313Linea: ;1911003017703628 ;1X1100002080028l03720001 ;1X1100002470028l03720001 ;1X1100001710028l03720001 ;1X1100001310168l00010077 ;1X1100001710307l00010037 ; ; ;--------------------------------------------------------------------------------------- ;---------- programa principal ---------------------------------------------------- ;---------------------------------------------------------------------------------------- ;-------- parametros para rutina de estabilidad --------------------------------------- movci 20 ;numero de conteos calculo de media stoi fincon movci 20 ;numero conteo calculos de desviacion stoi fincon1 movci 500 ;indica cuanto permanece encendico el led118 stoi fincon2 setri tieapea 30 ;valor tiempo encendido bombillo verde setri tieapea1 500 reset outcaja reset bombillo reset flagent ;//////////////////// reset led120 ;//////////////////// setri ework 0 setri calibra 0 reset fouttole reset aceptar setri con5caja 0 reset finoutol reset fouttole movcf 0 stof ultacep1 movcf 0 stof pesomeno movcf 0 stof pesomen1 reset fcorregi setri outtole 0 paso7 ;call variable ;o j o solo para pruebas con el MIDAVISUAL movcf 0 ;inicio conteo de media stof pesofin movci 1 ;inicio contador de media stoi parcon movci 1 ;inicio contador de desviacion stoi parcon1 set finad ;siempre en 1 reset flag10 reset flagtol setri basc 0 set finalok setri anchotx 105 ;ancho buffer puerto para imprimir movci 0 stoi cont movci 0 stoi units movci 0 stoi unidades reset nuevopro ;movcf 0 ;stof ultacep movcf 0 stof pesomeno movcf 0 stof pesomen1 ;================= inicio programa principal ================================= inicio ld nuevopro ;flag que pregunta si lv solicito creacion de nuevo producto jz inicio_1 call newpro ;rutina de creacion nuevo producto inicio_1 ld inirmto jnz ini call waiting ;muestra en los displays 0 y 1 el mensaje que esta ;esperando el inicio remoto. ini ld inirmto out led119 ;si esta encendido llego inicio remoto ;=========================================================================================== ;== r u t i n a s a j u s t e y c a l i b r a c i o n d e b a l a n z a ==== ;===================== t a r a ======================================== ;tecla ink tarriba ; jz set_up func 7 basc ;autotara ;================= p a r a m e t r o s f u n c i o n a m i e n t o ======================= ;teclas set_up ld tenter ld tizq andld jz visual call balanza ;=== fin rutinas de ajuste y calibracion de la balanza ============= ;======================================================================== visual movrf peso ;muevo el valor de peso del canal analogo a pesof stof pesof ld display jnz proceso ;================================================================================== ;==================== rutina para 2 o 3 decimales ================================ siga ld inirmto jz inicio set okeeprom ;================================================================================== ; inicio rutina para tarar ;=========================== rutina caja vacia ================================== proceso ld finalok ;este flag inicie en 1 jz final ld inirmto jz inicio ld flag1 jnz paso2 set display encima3 ;ld tclear ;jz enci3_1 ;movri 110 ;valor cero absoluto de la celda ;stoi canal ;valor del canal a/d 110 ;movci 50 ;valor que se suma en puntos para que acepta la caja ;movri canal ;addi ;stoi canalmax ;registro entero eeprom ;movri canal ;movci 50 ;subi ;stoi canalmin ;registro entero eeprom ;enci3_1 ld flagtara ;flag que indica que se llamo la funcion de tara jnz cajin movri 110 ;comparacion canal conversor movri canalmax cpgei encima3 encima4 movri 110 ;comparacion canal conversor movri canalmin cplei encima3 encima func 7 basc ;taro set flagtara cajin clear ;cambio protabaco 28 dic com 0 clear disl caja com 1 clear disl vacia com 2 paso2 ld flag2 jnz paso3 ld bombillo jnz paso2_1 set out1 set 101 set bombillo paso2_1 ld outcaja jnz paso2_2 call apagar paso2_2 ld in0 jnz inicio ;espera pulsador reset outcaja reset temagr1 reset tiefina1 reset display reset bombillo movri 110 ;comparacion canal conversor movri canalmin ;movri canalmax cpgei paso2_3 ;cpgei paso10 jmp cajin paso2_3 movri 110 movri canalmax cplei paso10 jmp cajin paso10 call est ld led118 jnz paso10 ;movri 110 ;comparacion canal conversor ;movri canalmax ;cpgei paso10_1 ;jmp cajin paso10_1 movrf peso stof tara ;almacena peso de la tara func 7 basc ;taro. para entender el por que? mirar el set flag2 ;valor del peso despues que realiza esta funcion set flag1 reset flagtara ;=== fin rutina de tarar ======== paso3 ld flag3 ;bandera para que pase por aqui solo una vez jnz paso3_1 movci 1 stoi acepta ;indica las cantidades que han sido aceptadas movri acontar movri fardo divi stoi fardo1 movri fardo1 movci 1 addi stoi totacep ;movcf 0 ;stof ultacep set flag3 reset out1 ;apaga indicador inicia proceso de empaque ;====================================================================== paso3_1 ld flagtol jnz paso4 call estabi movcf 0 stof ultacep setri ework 0 set flagtol ;----------------------------------------------------------------------------------- ;-------- rutina calculo tolerancia ---------------------------------------------- ;----------------------------------------------------------------------------------- ;----------------------------------------------------------------------------------- ;rutina para saber si peso esta dentro de tolerancia y ademas estable ;----------------------------------------------------------------------------------- paso4 movrf peso movrf ultacep subf stof pesomen1 ;este para restar el valor del peso anterior y tratar de ;no llevar el error call dis call est ;llama rutina tolerancia call toleranc ;llama rutina de tolerancia para verificar si pico es un ;valor estable ink tclear ;////////////////////////////// jz pso4 set led120 ;////////////////////////////// set flagent ;////////////////////////////// pso4 ld in0 jnz paso4_0 movri 110 movri canal cplei cajamal jmp paso4_0 cajamal call reseteo jmp paso7 paso4_0 ld flagent ;////////////////////////////// jnz pso4_1 ;////////////////////////////// ld led122 ldnt led118 andld out 100 ld led122 ;pregunta led tolerancia ldnt led118 ;estabilidad andld out flagok ld flagok jnz paso4_2 ;pregunta si peso esta dentro de tolerancia y ademas estable nop ld fla_reta jnz verde ;salta a termporizador de indicador fardo aceptado jmp ini ;/////////////////////////////////////////////// pso4_1 ink tenter ;tclear ;pregunta si peso esta dentro de tolerancia , si no, pregunta ;si se presiono tecla jz ini ;enter que acepta pesos fuera de tolerancia paso4_1 call est ;llamado a estabilidad ld led118 jnz paso4_1 ;espera a que este estable para aceptar peso call fueratol ld aceptar ;este valor lo devuelve la rutina fueratol jz ini inc outtole 1 ;registro que cuenta las veces que ocurrio fuera de tolerancia movri outtole ;por caja movci 5 cpli pso4_2 set warn setri outtole 0 pso4_2 set fouttole ;flag que ocurrio fuera de tolerancia al menos una fez set fcorregi ;para que pase por estabi abajo ;cuando llega a este sitio es por que peso esta entre tolerancia y estable paso4_2 set led126 reset aceptar reset flagent ;////////////////////////////// reset led120 ;//////////////////// ;rutina para aceptar pesos ====================================================== movri fardo movri acepta muli stoi ework clear disri ework 2 ;muestra en display fardos aceptados com 1 movri acepta movci 1 ;adiciona 1 al numero de rondas aceptadas addi stoi acepta movri acepta movri totacep cpli acept1 jmp conta2 acept1 movrf peso stof ultacep ;actualiza el ultimo peso aceptado ld fcorregi jz acept1_0 call estabi ;recalcula tolerancias para la siguinte ronda reset fcorregi acept1_0 movrf peso movrf ultacep subf stof pesomen1 ;este para restar el valor del peso anterior y tratar de no ;llevar el error movrf peso stof pesomeno set fla_reta ;flag que indica que esta termporizando verde set out1 call retardo ;llamo temporizador que indica led aceptado este ;encendido x tiempo jmp ini ;jmp paso4 conta2 ;ld fcorregi ;jz conta2_0 ;call estabi ;recalcula tolerancias para la siguinte ronda ;reset fcorregi conta2_0 movrf peso stof ultacep movrf peso stof pneto fin set led124 reset led122 call 5cajas jmp paso5 5cajas ld finoutol jz 5cajas4 inc con5caja 1 ;== esta rutinita es para encender o apagar un led del equipo y saber si esta haciendo 5 cajas set led125 ================================================================================== 5cajas0 movri con5caja movci 6 cpei 5cajasok jmp 5cajas4 5cajasok setri con5caja 0 reset finoutol reset fouttole movcf 0 stof ultacep1 reset led125 5cajas4 ret ;========================================================================= ;cuando llega aqui se han termionado todas las rondas de pesaje para finalizar un caja paso5 ld led124 ;los registros y almacena el peso acumulado jz inicio reset led124 clear ;se mantienen inalterados. disl fina com 0 reset led124 reset led126 movri unidades stoi unit movrf pneto movrf tara addf stof pesofaux reset finalok reset led119 reset inirmto reset flag1 reset flag2 reset flag3 reset led124 reset led121 reset led122 reset led123 reset finalok clear com 1 clear com 2 set out1 ;finalizo proceso de empaque de una caja. se apagara cuando se ;retire la caja. set 101 ; call impres ;setri ework 0 final jmp paso7 end ;====================== FIN PROGRAMA PRINCIPAL ======================= ;====================================================================== ;====================================================================== ;=========== s u b r u t i n a s ========================== ;====================================================================== ;====================================================================== ;======================= rutina tolerancia ======================= ;====================================================================== toleranc reset led122 ;valor que retorna tolerancia movrf pesomen1 ;usa medio para calculo de tolerancia mas precision movrf tolmen cplf apague1 ; pesprov es menor que pesof1 ? movrf pesomen1 ;movrf peso movrf tolmax cpgf apague2 ;pesoprov mayor a pesof2 ? set led122 reset led121 reset led123 jmp apague3 apague1 set led123 reset led121 reset led122 jmp apague3 apague2 set led121 reset led123 reset led122 apague3 ret ;========================================================================= ;======== subrutina estabilidad ======================================== ;========================================================================= est nop ;------------ rutina para buscar la media ------------------------------ ; SUMATORIA ( canal analogo + pesofin) desde 1 hasta fincon ;donde pesofin inicia en cero iniest movif 110 ;lee canal analogo cero y lo almacena en peso1 stof peso1 ld finad ;pregunta por el led de fin ;de conversion que siempre esta en uno jz iniest movrf pesofin ;mueve valor de pesofin que para la primera vez esta en cero movrf peso1 ;mueve el valor del canal analogo addf ;pesofin+peso1 stof pesofin ;suma de pesos movif fincon stof finflot ;conversion de entero a flot numero muestras movri parcon ;contador y comparador movci 1 addi stoi parcon movri parcon movri fincon cplei iniest ;CALCULO EL VALOR DE LA MEDIA CON EL RESULTADO ;DE LA SUMATORIA movrf pesofin movrf finflot divf ;valor medio stof media ;================== fin rutina media ==================================== ;==================== rutinas de reseteo =============================== movcf 0 stof pesofin movci 1 ;resetee el contador stoi parcon movcf 1 stof findes ;================ fin rutinas de reseteo ================================= ;==================== rutina para la desviacion =========================== iniest1 ld finad jz iniest1 movif 110 stof pepe movrf pepe movrf media subf stof temdes ;resta que de la desviacion movrf temdes movrf temdes mulf stof temdes ;parentesis al cuadrado movrf temdes movrf findes addf stof findes ;sumatorias de los parentesis movri parcon1 ;contador y comparador movci 1 addi stoi parcon1 movri parcon1 movri fincon1 cplei iniest1 movci 1 ;resetee el contador stoi parcon1 movrf findes movrf finflot divf stof desvia ;calculo de desviacion ;================ fin rutina desviacion ========================================= ;========= inicio rutina de comparacion determina si esta estable ================ movrf desvia movrf setdesv cpgef iniest4 ;busca el maximo movrf setdesv movrf desvia cplef iniest4 ;busca el minimo reset led118 reset 101 jmp iniest5 iniest4 set led118 set 101 movri parcon2 ;contador y comparador movci 1 addi stoi parcon2 movri parcon2 movri fincon2 cplei iniest4 movci 1 stoi parcon2 ;========== fin rutina de comparacion =================================== iniest5 ret ;========================================================================== ;====== fin subrutina de estabilidad ==================================== ;=========================================================================== ;================== fin p r o c e s o ================================== ;=========================================================================== ;=========================================================================== ;= rutina para mostrar en display que esta en espera del inicio remoto ===== ;=========================================================================== waiting clear disl remoto com 0 clear disl proces com 1 clear disrf pesof 42 com 2 ret ;====== fin rutina display inicio remoto =================================== ;============================================================================== ;================== subrutina de display =================================== ;=============================================================================== dis ld led124 jnz dis2 clear disrf peso 42 ;muestra en display com 0 clear disri ework 3 com 1 dis2 movrf peso movrf punit divf stof uni movrf uni movif fardo mulf stof uni ;se obtiene el numero de productos que se van pesando ;clear ;disrf uni 40 ;com 2 movrf peso movrf pesomeno subf movrf punit divf stof uni_1 movrf uni_1 movif fardo mulf stof uni_1 clear disrf uni_1 40 com 2 difin ret ;================== fin rutina de display ======================================== ;con base al ultimo peso aceptado y el total de rondas aceptadas calcula los limites superior ; e inferior de la tolerancia en las variables tolmen y tolmax, para esto utiliza el valor ;del peso por unidad punit. estabi ld fouttole jz estabi2 ld finoutol ;final out tolerencia jnz estabi1 movrf ultacep stof ultacep1 set finoutol movrf ultacep1 movif ework divf movif fardo mulf stof punit_1 ;este peso cuando peso esta fuera de tolerancia estabi1 movrf punit_1 ;movrf ultacep1 ; stof punit estabi2 movrf punit movrf tole mulf movcf 100 divf stof rtole ;movrf ultacep movrf punit ;addf movrf rtole subf stof tolmen ;este el peso para comparar, restado la tolerancia ;movrf ultacep movrf punit ;addf movrf rtole addf stof tolmax ;peso para comparar sumado la tolerancia ret ;=========================================================================================== fueratol movif settole movcf 100 mulf movif fardo divf stof porc movrf punit movrf porc mulf movcf 100 divf stof rtole1 movrf ultacep movrf punit addf movrf rtole1 subf stof tolmen1 ;este el peso para comparar, restado la tolerancia movrf ultacep movrf punit addf movrf rtole1 addf stof tolmax1 ;peso para comparar sumado la tolerancia movrf peso movrf tolmen1 ;comparo para saber si peso esta dentro del 15% cplf noacept ;si es menor sale, demasiado peso por fuera de tolerancia movrf peso movrf tolmax1 cpgf noacept set aceptar jmp noacept1 noacept reset aceptar noacept1 ret ;======================================================================================== debug set debuger debug1 ld debuger jnz debug1 ret ;========================================================================================= ;rutina para la creacion de un nuevo producto, aqui llega por un flag que se activa desde lv ;primero pesa la caja vacia y luego pesa la caja llena, en ambos casos llama estabilidad para ;aceptar los pesos. los pesos aceptados los almacena donde los lee lv normalmente , tara y ;pneto. newpro clear com 0 clear disl cajas com 1 clear disl vacia com 2 nop call est ld led118 jnz newpro ld in0 ;espera pulsador jnz newpro movrf peso stof tara ;stof taranuep func 7 basc :ojo !!! mirar si hace falta flag para la tara nop nop newpro2 clear ;cambio protabaco 28 dic disrf peso 42 com 0 clear disl caja com 1 clear disl llena com 2 call est ld led118 jnz newpro2 ld in0 jnz newpro2 movrf peso movcf 1 cplf newpro2 movrf peso stof pneto reset nuevopro reset inirmto ret ;***** fin rutina nuevo producto ******* ;=========================================================================================== ;======================= r u t i n a d e i m p r e s i o n ============================ ;============================================================================================ impres ;770202345789 movcf 1770202 stof barra ;movcf 445789 ;stof barra1 setri D 11 setri h 10 setri r4 0 ;puntero setri r3 15 ;para posicionar el puntero en 15 movci 801 ;para apuntar al registro 1001 stoi r1 movri 800 ;tamano del texto stoi r2 ;tamano del lote setri r10 0 setri r6 15 movci 701 stoi r7 movri 700 stoi r9 clear disch 2 ;STX disch 76 ;L disch 13 ;CR disch 68 ;D disri d 2 ;11 disch 13 ;CR disch 87 ;W disch 13 disch 122 ;z disch 13 disch 80 ;P disch 67 ;C disch 13 disch 83 ;S disch 67 ;C disch 13 disch 72 ;H disri h 2 ;10 com 3 clear disl primer ;PROTABACO S.A loc 15 disl prota disch 13 com 3 clear disl segunda loc 15 disl ducto disch 13 com 3 ;rutina para imprimir nombre clear disl tercera loop locx r3 movix r1 stoi r5 discx r5 inc r1 1 inc r3 1 inc r4 1 movri r2 movri r4 cpei final0 jmp loop final0 disch 13 com 3 ;fin rutina para imprimir nombre clear disl cuarta loc 15 disl can ;texto de la cantidad de fardos disch 13 com 3 clear disl quinta loc 15 disri acontar 2 ;numero de fardos disch 13 com 3 clear disl sexta loc 15 disl fardos disch 13 com 3 clear disl septima loc 15 disl textfe disch 13 com 3 clear disl octava loc 15 date disch 13 disl novena disch 13 com 3 clear disl decima loc 15 movrf orden movcf 1 subf stof orden disrf orden 70 disch 13 disl once disch 13 com 3 clear disl doce loc 15 disrf pneto 33 disch 13 disl trece disch 13 com 3 clear disl catorce loc 20 disl catorce1 disch 13 com 3 clear disl quince loc 20 disl quince1 disch 13 com 3 clear disl dieseis loc 16 disrf barra 60 loc 23 disrf barra1 70 disch 13 com 3 clear disl diesiete loc 15 time disch 13 com 3 ; disl dieocho ; loc 36 ; disri linea 2 ; disch 13 clear disl dienueve loc 20 disl dienue1 disch 13 com 3 clear disl veinte loc 20 disl veinte0 disch 13 com 3 clear disl veinte1 loc 20 disl veinte11 disch 13 com 3 clear disl veinte2 loc 20 disl veinte21 disch 13 com 3 clear disl veinte3 loc 20 disl veinte31 disch 13 com 3 clear disl texsscc disrf sscc 70 disch 13 com 3 clear disch 69 ;E com 3 ret ;esta opcion se habilitara cuando sea necesario, lo unico que ; se hace es pasar esta ruina en cualquier parte de la empresion. ;clear ;disl septima ;numero de LOTE ;loop1 ;locx r6 ;r3 ;movix r7 ;r1 ;stoi r8 ;r5 ;discx r8 ;r5 ;inc r7 1 ;r1 1 ;inc r6 1 ;r3 1 ;inc r10 1 ;r4 1 ;movri r9 ;r2 ;movri r10 ;r4 ;cpei final1 ;jmp loop1 ;final1 ;com 3 ret enviar2 clear ret ;============== fin rutina impresion ========================== ;================================================================== ;rutina para cambiar el nombre del producto para ser impreso ;================================================================= campro setri txt 17 setri contxt 17 campro1 clear disl prod com 0 clear disl entcle com 1 clear com 2 ink tclear jnz outcam ink tenter jz campro1 campro2 clear dislx txt com 1 ink tarriba jz campro3 inc txt 1 inc contxt 1 ;auxiliar para saber que numero de txt se esta esligiendo movri contxt movci 22 ;este valor por que es el ultimo de la tabla de textos ;si se menten mas textos este valor se debe cambiar cpei igual campro3 ink tenter jnz campro1 jmp campro2 igual setri txt 17 setri contxt 17 jmp campro2 outcam ret ;======= fin rutina cambiar nombre ;======== R U T I N A S D E B A L A N Z A ============================ ;================================================================ ;Esta subrutina cuenta con un menu en donde se encuentra calibracion ;y parametros de funcionamiento de la plataforma. balanza0 nop balanza ld tenter jnz balanza0 ;esto para qie no siga de largo cuando entra a los menus clear disl cali ;disl bala ;al entrar muestra en el LCD 0: bala com 0 clear disl entcle ; muestra en LCD 1 enter o clear com 1 clear com 2 ink tclear ;si se desea salir sin hacer nada jnz outbala ;se presiona CLEAR para salir o ENTER para aceptar ink tizq jnz outbala ld in0 jz outbala ink tarriba jnz menu1 ld tenter jz balanza balanza1 clear ;lo primero que muestra es menu para calibrar disl cali com 0 ink tclear ;ENTER= acepta CLEAR= salir jnz outbala ink tarriba ;con la tecla ARRIBA navego el menu jnz outbala ld in0 jz outbala ink tenter jz balanza1 inc calibra 1 balan1_0 nop ld tenter jnz balan1_0 nop ink tenter jz balan1_0 inc calibra 1 movri calibra movci 2 cpei balan1_1 setri calibra 0 jmp balanza1 balan1_1 func 8 0 movri 110 ;valor cero absoluto de la celda stoi canal ;valor del canal a/d 110 movci 100 movri canal addi stoi canalmax ;registro entero eeprom movri canal movci 100 subi stoi canalmin ;registro entero eeprom setri calibra 0 ;para que se presione dos veces enter para calibrar menu1 clear disl para ;rutina que muestra los parametros com 0 ;de funcionamiento de la plataforma ink tclear jnz outbala ld in0 jz outbala ink tarriba jnz menu2 ink tenter jz menu1 func 9 1 jmp balanza ;========= fo r m a t o s d e i m p r e s i o n =============================== menu2 clear disl esta com 0 clear disl entcle com 1 ink tarriba jnz menu3 ink tclear jnz outbala ld in0 jz outbala ink tenter jz menu2 menu2_0 clear disl desvi com 0 movrf setdesv movcf 10 divf stof 411 clear disrf 411 40 com 1 inf 2 0 stof varf movrf varf movcf 0 cpef menu2_0 movrf varf stof setdesv movrf setdesv movcf 10 mulf stof setdesv movrf setdesv movcf 0 cpef menu2_0 clear com 1 clear com 2 jmp menu2 menu3 clear disl imp com 0 ink tclear jnz outbala ld in0 jz outbala ink tarriba jnz produc ink tenter jz menu3 clear disri formato 2 com 1 clear ini 2 stoi formato jmp menu3 ;====================================================================== ;Cambia nombre de producto a IMPRIMIR ; produc clear disl pro com 0 clear disl entcle com 1 ink tclear jnz outbala ld in0 jz outbala ink tarriba jnz funtol ;jnz balanza////////////////////// ink tenter jz produc call campro ;llama rutina para cambiar el producto para imprimir jmp produc ;====================================================================== ;Rutina para configurar TOLE, variable que indica el numero de fardos ;para rango de desvio aceptado por tclear ; funtol clear disl tol ;Mensaje "tole" com 0 clear disl entcle com 1 ink tclear jnz outbala ld in0 jz outbala ink tarriba jnz balanza ink tenter jz funtol call funtole ;llama rutina para cambiar variable tole jmp funtol outbala ret ;-========================================================== ;Rutina para cambiar tole ;=========================================================== funtole movri settole clear disri settole 3 com 1 ini 2 stoi settole1 movri settole1 movci 0 cpei funtole movri settole1 stoi settole clear com 1 clear com 2 ret ;-========================================================== ;Rutina de tiempo encendido indicador fardo aceptado ;=========================================================== retardo ld temagr ;temporizado encendido timr 50 tieapea ;tieapea=tiem.ape.agregado out tiefina ;ya termino? set temagr ld tiefina jnz reta1 ret reta1 reset out1 ;indicador fardo aceptado reset temagr ;inicializador de temporizador reset tiefina ;estado de temporizador reset fla_reta ;flag que indica que esta temporizando ret ;fin rutina encendido indicador fardo aceptado ;======================================================= apagar ld temagr1 ;temporizado encendido timr 51 tieapea1 ;tieapea=tiem.ape.agregado out tiefina1 ;ya termino? set temagr1 ld tiefina1 jnz apagar1 ret apagar1 reset out1 ;indicador fardo aceptado reset 101 reset temagr1 ;inicializador de temporizador reset tiefina1 ;estado de temporizador set outcaja ret ;fin==================================== ;rutina para cundo una cja esta mal y se desea perder reseteo reset led118 reset led119 ;reset led120 reset led123 reset led121 reset led124 reset led125 reset led126 reset led122 reset display reset inirmto reset auxlv reset flag1 reset flag2 reset flag3 reset flagtara reset flag10 reset flag11 reset flagok reset flagtol setri ework 0 set finalok reset okeeprom reset escritu reset aceptar setri con5caja 0 reset finoutol reset fouttole movcf 0 stof ultacep1 movcf 0 stof pesomeno movcf 0 stof uni_1 movcf 0 stof pesomen1 ret ;========================================================= ;========================================================= ;RUTINA para pruebas con M I D A V I S U A L ;rutina para setear variables con valores fijos y realizar pruebas desde midavisual variable movcf 1.38 stof punit movci 50 stoi acontar movcf 3 stof tole setri fardo 25 movci 12345 stoi lote setri linea 3 set inirmto call datos ret datos setri 800 3 setri 801 74 setri 802 79 setri 803 82 setri 700 3 setri 701 49 setri 702 50 setri 703 51 movcf 59 stof producto ;setri venci1 10 ;setri venci2 2004 movcf 3659 stof orden movcf 59862 stof sscc1 movcf 8000537 stof ean ret ; FIN rutina para pruebas con M I D A V I S U A L ;================================================================================= ;================================================================= ;================= D E F I N I C I O N D E V A R I A B L E S ============ ;================================================================================= ;================================================================================= varia nop ;[reg_relays] tenter equ 30 tclear equ 31 tarriba equ 32 tizq equ 33 led118 equ 118 ;indica inestabilidad led119 equ 119 ;indica el final ok led120 equ 120 ;significa que esta funcionando el protocolo libre por el com 1 led123 equ 123 ;led peso por debajo led121 equ 121 ;led peso por encima led124 equ 124 ;led que indica que ya se contaron las unidades que se deben contar led125 equ 125 led126 equ 126 ;se enciende al final del proceso led122 equ 122 ;led tolerancia ;--------------------------------------------------------------------------------------- display equ 134 finalok equ 132 ;este rele inicio en on y cundo termina el proceso se pone a off inirmto equ 133 ;relay que activa labview para iniciar el proceso auxlv equ 131 ;este relay no lo utiliza para nada el plc pero labview si ;lo requiere fin_ad equ 110 ;rele fin de conversion a/d finad equ 135 ;fin de conversion a/d ;-------------------------------------------------------------------------------------- flag1 equ 127 ;estas banderas se utilizan para que el programa no pase de nuevo por flag2 equ 128 ;partes que no sea necesario que pase de nuevo, ejemplo, calculo de la flag3 equ 129 ;tolerancia, poner caja vacia, etc flagtara equ 137 ;la utilizo para que pase una vez por el sitio dode pregunta si la ;caja esta encima de bascula flag10 equ 139 ;flag para contador de aceptar peso dentro de tolerancia flag11 equ 140 ;este flag se activa cunado el peso esta en tolerancia y estable(conta1) flagok equ 141 ;la utilizo para saber si esta estable y dentro de tolerancia (paso 4) flagtol equ 144 debuger equ 145 nuevopro equ 146 ;flag que activa lv para nuevo producto fouttole equ 147 ;indica que termino rutina de nuevo producto fla_reta equ 148 ;flag que inidca que inicio termporizado de led fardo aceptado (verde) temagr equ 149 ;inicializador de temporizador tiefina equ 150 ;indica el estado del temporizador temagr1 equ 151 ;inicializador de temporizador tiefina1 equ 152 ;indica el estado del temporizador outcaja equ 153 bombillo equ 154 escritu equ 160 ;rele para lv que indica que escribio en la EEPROM okeeprom equ 161 ;inidica quew se escribio en la EEprom finoutol equ 171 aceptar equ 172 ;flag para saber si aceptar por fuera de tolerancia fcorregi equ 173 flagent equ 174 ;indica si se oprimio el tclear warn equ 175 prolibre equ 856 ;indica cuando el protocolo libre esta activo. ;------------------------------------------------------------------------------------ ;entradas in0 equ 1 ;esta entrada se utiliza para aceptar el peso in3 equ 3 ;para saber si se reseteo el equipo ;-------------------------------------------------------------------------------------- ;salidas out1 equ 100 ;salida para encender que puede iniciar proceso y que termino proceso ;------------------------------------------------------------------------------------ ;[reg_integers] ch0 equ 110 ;canal analogo 0 basc equ 150 units equ 153 ;auxiliar unidades contadas cont equ 154 ;contador para el rele fin de conversor acontar equ 155 ;unidades a contar fardo equ 156 ;unidades por fardo unidades equ 157 ;total unidades unit equ 158 ;unidades contadas, esta variable la lee labview parcon equ 160 ;parcial conteo parcon1 equ 162 ;para estabilidad parcon2 equ 164 ;para estabilidad acepta equ 168 ;cantidades aceptadas totacep equ 169 ; ework equ 170 fardo1 equ 171 ;(unidades a contar/ fardo) , calcula cuantas contadas tengo que realizar outtole equ 172 ;almacena las veces que hubo fuera de tolerancia lote equ 173 ;lote anchotx equ 127 ;tamaño del ancho de transmision ;txt equ 175 ;puntero para rotar textos del nombre del producto contxt equ 176 ;puntero para rotar textos del nombre de producto tieapea equ 177 ;inidica el valor del tiempo encendido bombillo verde tieapea1 equ 178 calibra equ 179 ;para que se presione enter dos veces para calibrar linea equ 180 ; Numero de linea D equ 183 h equ 184 r1 equ 194 r2 equ 195 r3 equ 196 r4 equ 197 r5 equ 198 r6 equ 199 r7 equ 200 r8 equ 201 r9 equ 202 r10 equ 203 con5caja equ 221 settole1 equ 222 canalmax equ 1100 ;almacena el valor del canal para retirar caja canalmin equ 1101 canal equ 1102 ;almacena el cero en puntos de conversion despues de calibrar fincon2 equ 1103 ;contador de tiempo de estabilizacion fincon equ 1104 ;fin de conteo contador media fincon1 equ 1105 ;contador desviacion formato equ 1106 ;indica que numero de formato se desea imprimir de dos posibles. txt equ 1107 pasword equ 1108 pasword1 equ 1109 pasword2 equ 1110 settole equ 1111 hora equ 97 ;hora minuto equ 98 ;-------------------------------------------------------------------------------------- ;[reg_floats] peso equ 0 ;peso leido directamente del conversor pesof equ 5 ;peso que se muestra en display tara equ 10 ;peso en tara o "caja vacia" pneto equ 11 ;peso neto del producto al final del proceso punit equ 12 ;peso por unidad tole equ 17 ;tolerancia pesprov equ 21 ;peso-provicional.se utiliza para hacer la comparacion y saber ;si esta en tolerancia producto equ 15 tolmen equ 19 ;peso minimo de la tolerancia tolmax equ 22 ;peso max de la tolerancia rtole equ 23 ; (punit*tolerancia)/ 100 pesofin equ 24 ;suma de pesos para buscar media finflot equ 25 ;numero de muestras en conteo a flotante media equ 26 ;media temdes equ 27 ;desviacion de cada muestra con signo posest equ 28 ;desviacion de cada muestra positivo findes equ 29 ;suma de desviacion desvia equ 31 ;desviacion final peso1 equ 32 ;= a peso para calcular acumulados pesofaux equ 38 ;peso total caja + tara uni equ 40 ;peso/ punit=unidades ultacep equ 43 ;corresponde al ultimo peso estable aceptado barra equ 44 barra1 equ 45 orden equ 46 ;Numero de orden ultacep1 equ 49 rtole1 equ 50 tolmax1 equ 51 tolmen1 equ 52 pesomeno equ 53 uni_1 equ 54 pesomen1 equ 55 punit_1 equ 56 sscc1 equ 57 ean equ 58 porc equ 59 varf equ 60 pepe equ 406 ;variable aux para inestabilidad password equ 409 setdesv equ 410 ;cuanto se permite en desviacion sscc equ 174 ;sscc ret ;-------------------------------------------------------------------------------------