mida 14 ;********************* CARACTERISTICAS ******************************************* ; ;funciona con un pulsador normamente abierto ; ;este programa utiliza para la inestabilidad el concepto de desviacion estandar ; ;contien rutina de creacion de nuevo producto ; ;almacena el valor de tara ; ;contiene tecla acepta pesos por fuera de tolerancia -,recalcula peso de la unidad ; ;indicador que es en funcionamiento protocolo libre con led 120 ; ;reset si caja esta mal ; ;Acepta quitando el valor ultimo aceptado, corrige el eror de llevar todo el peso acumulado ; ;Corrige el error de la impresion del EAN en la barra, partiendo el valor del registro en dos ;Trata de solucionar que se pueda pesar en numeros que no sean multiplos. ;se le borro todos los comentarios y se inicia el proceso de depuracion ;************************ no olvidar *************************************************** = ; = ; no olvidar si se hicieron pruebas locales borrar estos valores. = ;====================================================================== ; ;DESCRIPCION DE TECLAS DE FUNCIONES ; ; Tara= ; Correccion de cero= ;Parametros general====> ;calibracion========== > PARA ;formatos de impresion = TODOS ;nombre producto a imprimir = ESTE MENU , ;estabilidad= ;aceptar peso x fuera de tolerancia === ;================================================================== arran ld scan jz lea jmp inicio lea call varia ;llama rutina de declaracion de variables call textos ;llama la tabla de textos call seteo ;llama todos los seteos previos a iniciar programa, cuando se reseta o se apaga el equipo ;---------------------------------------------------------------------------------------------------------------------------------- ;-------------------------------------- programa principal -------------------------------------------------------------- ;----------------------------------------------------------------------------------------------------------------------------------- ;paso7 ;call variable ;solo para pruebas con el MIDAVISUAL ; call seteo1 ;rutina que setea las variables cada vez que termina una caja ;================= 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 ld 179 jnz cle0 ink tclear jnz tatar cle0 call waiting ;muestra en los displays 0 y 1 el mensaje que esta jmp ini ;esperando el inicio remoto. tatar func 7 taro 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 ======================================== ; ld in0 jz set_up call cajatara ;llama rutina que realiza el proceso de tara ya sea cuando esta ;en proceso una caja o cuando no lo esta ose sin inicio remoto ;================= 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 cajamal call balanza ;pare set 125 ;jmp pare ;=============== reseteo de una caja ================================== ;reseteo de una caja cajamal ld in0 ld tenter andld jz visual call reseteo call seteo1 jmp fppal ;============ fin reseto de una caja ====================================== ;======================================================================== ;================== 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 fppal ;rutina para escribir datos en la eeprom set okeeprom ;========================================================================== ; inicio rutina para tarar ;=========================== rutina caja vacia ================================== proceso ld finalok ;este flag inicie en 1, y se resetea cuando se termina un caja jz final ;esta etieutq esta alfinal del programa y lwe indica que salte a paso7 ld inirmto jz fppal ld flag1 ;este valor lo retorna la rutina cj_vacia jnz paso3 call cj_vacia ;**** rutina para mostrar caja vacia y aceptar caja vacia ld flag1 ;este valor lo devuelve la rutina cj_vacia jz fppal ;=========================================================================== ;=========== llama rutina para calcular la TOLERANCIA sobre la cual debera aceptar ======= ;=========================================================================== paso3 ld flagtol jnz paso4 call estabi movcf 0 stof pesomeno movcf 0 stof ultacep setri ework 0 set flagtol ;========================= fin rutina calculo tolerancia =========================== ;=========================================================================== ;======================= rutina aceptar Peso Estables y en Tolerancia =============== ;=========================================================================== paso4 call sintara movrf ultacep movrf pesomeno subf stof pesomen1 call dis call toleranc ;llama rutina de tolerancia para verificar si peso es un valor estable ;y esta en tolerancia paso4_02 ld flagok ;este valor lo devuelve aceptar que esta dentro de toleranc jnz paso4_2 ;si esta en 1 peso esta en tolerancia y estable ;==================== fin rutina aceptar Peso Estables y en Tolerancia =============== ;=========================================================================== ;==================== CAJA DE SALDO ==================== ;boton pulsado acepta cantidad como saldos ink tarriba jz noboton call est ld led118 jnz paso4 movrf uni_1 movif ework addf stofi saldo set relesal jmp conta2 ;=========== fin boton de saldos =============================== ;========== auto-ajuste de PESO tecla CLEAR ===================== noboton ld 179 jnz cle1 jmp cle2 cle1 jmp ini cle2 ink 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 inc outtole 1 ;registro que cuenta las veces que ocurrio fuera de tolerancia por caja set fouttole ;flag que ocurrio fuera de tolerancia al menos una fez set calcular ;flag para que entre de nuevo a est ;=============== fin auto-ajuste de peso ========================= ;cuando llega a este sitio es por que peso esta entre tolerancia y estable paso4_2 set led126 ;=============== rutina para aceptar UNIDADES ================== call aceptand ;rutina para aceptar unidades y determinar si existe residuo ;tambien recalcula peso si se presiono tecla antes de finalizar ;osea antes de que se termine de llenar la caja jmp ini ;============ fin rutina para aceptar UNIDADES =================== conta2 movrf ultacep ;movrf peso stof pneto fin set led124 reset led122 call 5cajas ; si no se presiono la tecla entonces no hace nada esta rutina ;========================================================================= ;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 fppal reset led124 call concajas clear ;se mantienen inalterados. disl fina com 0 reset led124 reset led126 movri unidades stoi unit movrf peso stof pestotal ;peso de la caja ld relesal ;si no es saldo jnz paso5_0 movri acontar stoi saldo paso5_0 movcf peso ;0 ejmo stof tara1 reset finalok reset led119 reset flag1 reset flag2 reset flag3 reset led124 reset led121 reset led122 reset led123 reset finalok reset oksaldo reset residuo ld valofar jz paso5_01 movri fardo2 stoi fardo reset valofar paso5_01 clear com 2 set out1 ;finalizo proceso de empaque de una caja. se apagara cuando se retire la caja. set 101 movrf sscc stof sscc1 call impres ld relesal ;para preguntar si fue saldo y reeimprimir jnz paso5_1 reset inirmto paso5_1 movrf peso movcf 0.10 cpgf paso5_2 jmp final_0 paso5_2 ink tenter jz paso5_1 call impres jmp paso5_1 final_0 ld relesal jz final_01 reset inirmto final_01 reset jorgeta final call seteo1 jmp fppal fppal end ;====================== FIN PROGRAMA PRINCIPAL ======================== ;====================================================================== ;****************************************************************************************** ;====================================================================== ;======================= s u b r u t i n a s ============================= ;====================================================================== ;====================================================================== ;======================= rutina tolerancia ================================= ;====================================================================== toleranc call est ;ejmo nov 11 modif para demorar 2 seg la toma de peso ld led118 ;este valor lo devuelve est , si est en 1 peso esta inistable jnz apague4 toler1 call est ld 118 jz toler2 reset aux2 reset aux3 toler2 reset led122 ;valor que retorna tolerancia call sintara movrf ultacep movrf pesomeno subf stof pesomen1 movrf pesomen1 movrf tolmen cplf apague1 ; pesprov es menor que pesof1 ? movrf pesomen1 movrf tolmax cpgf apague2 ;pesoprov mayor a pesof2 ? set led122 reset led121 reset led123 ld aux2 tim 52 10 ;ejmo toma de peso feb20 2003 out aux3 set aux2 ld aux3 jz toler1 jmp apague3 apague1 reset aux2 reset aux3 set led123 reset led121 reset led122 jmp apague3 apague2 reset aux2 reset aux3 set led121 reset led123 reset led122 apague3 reset aux2 reset aux3 call aceptar ret apague4 reset aux2 reset aux3 reset flagok 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 ;O J O suceptible de borrar 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 peso 52 com 2 ret ;========== fin rutina display inicio remoto ============================================ ;============================================================================== ;================== subrutina de display ============================================ ;=============================================================================== dis ld led124 jnz dis2 clear disrf peso 52 ;muestra en display com 0 clear disri ework 3 com 1 dis2 movrf ultacep 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 residuo jz estabi0 ;llama rutina de recalcuo para el residuo call calresi jmp estabi4 ;salta a salir de la subrutina estabi estabi0 ld fouttole jz estabi3 ld finoutol ;final out tolerencia jnz estabi2 ;era estabi1 movrf ultacep stof ultacep1 set finoutol estabi1 movrf ultacep1 movif ework divf movif fardo mulf stof punit1 ;este peso cuando peso esta fuera de tolerancia estabi2 movrf punit1 stof punit estabi3 movrf punit movrf tole mulf movcf 100 divf stof rtole movrf punit movrf rtole subf stof tolmen ;este el peso para comparar, restado la tolerancia movrf punit movrf rtole addf stof tolmax ;peso para comparar sumado la tolerancia estabi4 ret ;========================================================= ;rutina para calcular la tolerancia y peso para el residuo ;========================================================= calresi ld valofar ;para pasar el valor original de fardo y no afectar Labview jnz calresi1 movri fardo ;valor original de fardo que envio Labview stoi fardo2 ;copia valor original de fardo que envio labview set valofar calresi1 movrf pesomeno movif ework divf stof Y ;valor de peso de una unidad para el residuo movrf Y movif X ;unidaees de residuo mulf stof punit ;nuevo valor de la fajilla, con las unidades de residuo movri X stoi fardo ;nuevo valor de fardo, son las unidades de residuo movrf Y ;recalculo de la tolerancia para las unidades de residuo movcf 100 mulf movrf punit divf stof tole movrf tole movcf 1 subf stof tole movrf tole movrf punit mulf movcf 100 divf stof rtole movrf punit movrf rtole subf stof tolmen ;nuevo valor minimo de peso que tiene que aceptar para el residuo movrf rtole movrf punit addf stof tolmax ;nuevo valor maximo que tiene que aceptar para el residuo 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 caja com 1 clear disl new com 2 nop call est ld led118 jnz newpro ld in0 ;espera pulsador jz newpro movrf peso stof tara ;stof taranuep func 7 basc :ojo !!! mirar si hace falta flag para la tara nop newpro2 clear ;cambio protabaco 28 dic disrf peso 52 com 0 clear disl caja com 1 clear disl llena com 2 call est ld led118 jnz newpro2 ld in0 jz 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 movcf 770223 stof barra movcf 449420 stof barra1 setri d 11 setri h 10 movrf pestotal movcf 100 mulf stof pesbarra ;variables para rutina de nombre 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 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 call impesp clear disl primer loc 15 disl merck com 3 call impesp clear disl segunda loc 15 disl merck com 3 call impesp clear disl segunda1 loc 15 disl merck1 com 3 call impesp clear disl segunda2 loc 15 disl merck2 com 3 call impesp clear disl tercera loc 15 disl ducto com 3 call impesp clear disl bogo loc 15 disl bogota com 3 call impesp ;RUTINA PARA IMPRIMIR NOMBRE clear disl tercera1 ;rutina nombre del producto 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 com 3 call impesp clear disl cuarta loc 15 disl codi com 3 call impesp clear disl cuarta1 loc 15 movrf producto movcf 9 cpgf 2cifras disch 48 disch 48 disch 48 disch 48 disrf producto 10 com 3 call impesp jmp vencimie 2cifras movrf producto movcf 99 cpgf 3cifras disch 48 disch 48 disch 48 disrf producto 20 com 3 call impesp jmp vencimie 3cifras movrf producto movcf 999 cpgf 4cifras disch 48 disch 48 disrf producto 30 com 3 call impesp jmp vencimie 4cifras movrf producto movcf 9999 cpgf 5cifras disch 48 disrf producto 40 com 3 call impesp jmp vencimie 5cifras disrf producto 50 com 3 call impesp vencimie clear disl cuarta2 loc 15 disl ven com 3 call impesp clear disl cuarta3 loc 15 ld tipodate jnz fecha1 movri venci1 movci 10 cpli 2numero disri venci1 2 ;fecha de vencimiento loc 17 disch 47 loc 18 disri venci2 4 com 3 call impesp jmp fecha2 2numero disch 48 disri venci1 1 loc 17 disch 47 loc 19 disri venci2 4 com 3 call impesp jmp fecha2 fecha1 movri venci1 movci 10 cpli 2numero1 disri venci2 4 loc 19 disch 47 loc 20 disri venci1 2 com 3 call impesp jmp fecha2 2numero1 disri venci2 4 loc 19 disch 47 loc 20 disch 48 disri venci1 1 com 3 call impesp fecha2 clear disl quinta loc 15 disl can com 3 call impesp clear disl quinta1 ;texto cantidad loc 15 disri saldo 4 ;unidades en caja com 3 call impesp clear disl quinta2 ;texto UN com 3 call impesp clear disl sexta com 3 call impesp clear disl septima ;numero de LOTE loop1 locx r6 movix r7 stoi r8 discx r8 inc r7 1 inc r6 1 inc r10 1 movri r9 movri r10 cpei final1 jmp loop1 final1 com 3 call impesp clear disl novena com 3 call impesp clear disl novena1 loc 15 disrf orden 60 ;Numero de orden com 3 call impesp clear disl once com 3 call impesp clear disl doce loc 15 disrf pestotal 32 com 3 call impesp clear disl trece ;texto Kg. com 3 call impesp clear disl catorce loc 20 disl catorce1 com 3 call impesp clear disl quince loc 20 disl quince1 com 3 call impesp clear disl dienueve loc 20 disl dienue1 com 3 call impesp clear disl veinte loc 20 disl veinte0 com 3 call impesp clear disl veinte1 loc 19 disl veinte11 com 3 call impesp clear disl veinte4 loc 15 disrf sscc1 70 com 3 call impesp clear disl veinte2 loc 20 disl veinte21 com 3 call impesp clear disl veinte3 loc 20 disl veinte31 com 3 call impesp clear disl dieseis loc 15 disl dieseis1 loc 22 disri ean 4 ;codigo ean del producto loc 26 movri ean1 movci 9 cpgi 2cifras1 disch 48 disch 48 disri ean1 1 jmp conbar 2cifras1 movri ean1 movci 99 cpgi 3cifras1 disch 48 disri ean1 2 jmp conbar 3cifras1 disri 602 3 conbar loc 29 disch 48 loc 30 disri venci1 2 loc 32 disri venci2 4 loc 36 disch 48 loc 37 disri saldo 3 ;unidades en caja loc 41 disch 48 call lotesa loc 52 disch 48 disrf pesbarra 40 disch 13 disch 69 ;E com 3 call impesp ret lotesa setri r10 0 setri r6 42 ;posicion puntero movci 701 stoi r7 movri 700 stoi r9 loop2 locx r6 movix r7 stoi r8 discx r8 inc r7 1 inc r6 1 inc r10 1 movri r9 movri r10 cpei final2 jmp loop2 final2 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 ld 179 jnz cle3 ink tclear jnz outcam cle3 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 ;rutina impesp tiempo de espera entre envios a com3 impesp reset auxesp1 reset auxesp2 impesp1 ld auxesp1 tim auxesp 2 out auxesp2 set auxesp1 ld auxesp2 jz impesp1 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 ld 179 jnz cle4 ink tclear ;si se desea salir sin hacer nada jnz outbala ;se presiona CLEAR para salir o ENTER para aceptar cle4 ink tizq jnz outbala ld in0 jnz outbala ink tarriba jnz menu1 ld tenter jz balanza balanza1 clear ;lo primero que muestra es menu para calibrar disl cali com 0 ld 179 jnz cle5 ink tclear ;ENTER= acepta CLEAR= salir jnz outbala cle5 ink tarriba ;con la tecla ARRIBA navego el menu jnz outbala ld in0 jnz outbala ink tenter jz balanza1 inc calibra 1 balan1_0 nop ld tenter jnz balan1_0 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 movri mascaja ;valor que se suma en puntos para que acepta la caja movri canal addi stoi canalmax ;registro entero eeprom movri canal movri mascaja 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 ld 179 jnz cle6 ink tclear jnz outbala cle6 ld in0 jnz 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 ld 179 jnz cle7 ink tclear jnz outbala cle7 ld in0 jnz outbala ink tenter jz menu2 menu2_0 clear disl desvi com 0 movrf setdesv ;movcf 10 ;divf stof setdesvt clear disrf 410 40 com 1 inf 2 0 stof setdesv movrf setdesv movcf 0 cpef menu2_0 movrf setdesv ;movcf 10 ;mulf ;stof setdesv clear com 1 clear com 2 jmp menu2 menu3 clear disl imp com 0 ld 179 jnz cle8 ink tclear jnz outbala cle8 ld in0 jnz outbala ink tarriba jnz produc ink tenter jz menu3 call impres jmp menu3 ;====================================================================== ;Cambia nombre de producto a IMPRIMIR ; produc clear disl pro com 0 clear disl entcle com 1 ld 179 jnz cle9 ink tclear jnz outbala cle9 ld in0 jnz outbala ink tarriba jnz balanza ink tenter jz produc call campro ;llama rutina para cambiar el producto para imprimir jmp produc outbala clear com 0 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====================================0 ;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 escritu reset okeeprom reset tipodate reset display reset flag1 reset flag2 reset flag3 reset flagtara reset flag10 reset flag11 reset flagok reset flagtol set finalok reset residuo setri ework 0 reset inirmto reset auxlv movcf 0 stof pesojo movcf 0 stof tara movcf 0 stof ultacep movcf 0 stof pesomeno movcf 0 stof uni_1 reset valofar ret ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ;rutina para esperara cuatro segundos el pulsador de S A L D O S ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 4seg ld temsaldo ;temporizado encendido timr 53 temsaldo ;tieapea=tiem.ape.agregado out tiesaldo ;ya termino? set temsaldo ld tiesaldo jnz 4seg1 ret 4seg1 ld in0 jz 4seg0 set oksaldo ;flag aux que indica que termino tempori 4seg0 reset tiesaldo ;indicador fardo aceptado reset temsaldo ;inicializador de temporizador reset tiesaldo ;estado de temporizador reset flasaldo ;flag que indica que esta temporizando ret ;fin rutina tiempo pulsdor S A L D O S ;========================================================= ;rutina para que tare hasta cero no adimite valores negativos tarando movrf peso movrf taranega ;rango para que no se pueda tarar, si pero es mayor no tara cpgef tarando1 jmp tarando tarando1 func 7 basc retardo7 nop ld temagr7 ;temporizado encendido timr 57 tieapea7 ;tieapea=tiem.ape.agregado out tiefina7 ;ya termino? set temagr7 ld tiefina7 jnz reta7 jmp retardo7 reta7 reset temagr7 ;inicializador de temporizador reset tiefina7 movrf peso movrf tarameno cplf tarando1 movrf peso movrf taramas cpgef tarando1 movrf peso movrf tarameno cplf tarando1 ret ;*************** R U T I N A S P A R A C A L C U L O D E P E S O S I N T A R A R ************* ;********************************************************************************************************** ;********************************************************************************************************** ;rutinas para calcular peso y tara ;esta rutina calcula el peso para mostrar las unidades que existen dentro de la caja, no necesariamente ;son las unidades aceptadas por el sistema, ademas este peso es el que se toma para calcular toņlerancias sintara movrf peso movrf tara subf stof ultacep ret ;esta rutina calcula el valor de la tara, para este almecena el ultimo valor aceptado, al contrario de el anterior ;este no cambia el peso en forma continua. sintara1 movrf peso movrf tara subf stof pesojo ret ;********* Fin rutinas calculo de peso sin tarar ************************************************************ ;*************************************************************************************************************** ;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 30 stoi acontar movcf 5 stof tole setri fardo 9 movcf 12345 stof lote 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 52397 stof producto setri venci1 10 setri venci2 2004 movcf 3658 stof orden movcf 59862 stof sscc1 movci 8000 stoi ean movci 537 stoi ean1 ret ; FIN rutina para pruebas con M I D A V I S U A L ;==================================================================== ;realiza todo el seteo de las variables, previas a inciar el programa ;===================================================================== ;------------------- parametros para rutina de estabilidad --------------------------------------------------------------- seteo nop movci 500 stoi mascaja ;puntos conversor + 110 para cajavacia ejmo 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 10 ;valor tiempo encendido bombillo verde setri tieapea1 500 ;50 segundos setri temsaldo 40 setri tieapea7 5 ;1 segundos reset outcaja reset bombillo setri ework 0 setri calibra 0 reset relesal movci 0 stoi saldo movcf 0 stof tara1 movcf -0.1 ; -0.05 ejmo stof taranega movcf 0.004 stof taramas movcf -0.004 stof tarameno reset jorgeta movcf 0 stof pesojo reset fouttole reset okeeprom reset escritu reset finoutol movcf 0 ;OJO la reseteo cuando llamo estabi stof pesomeno movcf 0 stof ultacep setri totacep 0 setri acepta 0 movcf 0.1 stof vac_min ;ejmo peso m,inimo de caja para aceptar vacia movci 0 stoi taro ret ;================================================================= ;Setea valores para cuando inicia el proceso o termina una caja ;llama rutina para setear variables cuando termina una caja seteo1 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 movcf 0 stof pesojo movcf 0 stof tara movci 0 stoi cont movci 0 stoi units movci 0 stoi unidades setri outtole 0 movcf 0 stof pesomen1 setri acepta 0 setri totacep 0 reset nuevopro ret ;======================================================================== cajatara nop ta1 ld inirmto jz ta ta0 nop movrf punit movcf 5 mulf stof optara movrf optara movcf 100 divf stof optara movrf punit movrf optara subf stof optara movrf optara movcf 1 mulf stof optara movrf peso movrf optara cplf outaraca call est ld led118 jnz ta0 movrf peso movrf pesojo subf stof tara jmp outaraca ta func 7 basc ;autotara outaraca ret ;=================================================================== ;rutina para mostrar CAJA VACIA y aceptar la caja vacia ;=================================================================== cj_vacia ld flag1 jnz paso2 set display encima3 ld tizq jz enci3_1 movri 110 ;valor cero absoluto de la celda stoi canal ;valor del canal a/d 110 movri mascaja ;valor que se suma en puntos para que acepta la caja movri canal addi stoi canalmax ;registro entero eeprom movri canal movri mascaja 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 enci4_0 nop call est ld led118 jnz enci4_0 encima call tarando func 7 basc ;taro set flagtara cajin call est ld 179 jnz cajin_1 ink tclear jz cajin_1 func 7 0 ;ejmo tara en caja vacia cajin_1 clear disrf peso 52 com 0 clear disl caja com 1 clear disl vacia com 2 ld taracaja jnz paso2 func 7 basc set taracaja 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 jz ou_vacia ;espera pulsador movrf peso movrf vac_min ;240 gramos ejmo minimo de peso caja vacia ;cplef ou_vacia ;inicio reset outcaja reset temagr1 reset tiefina1 reset display reset bombillo paso10 call est ld led118 jnz paso10 paso10_1 movrf peso stof tara ;almacena peso de la tara set flag2 ;valor del peso despues que realiza esta funcion set flag1 reset flagtara reset taracaja ;para quen tare cuando muestra caja vacia ou_vacia ret ;===================================================================== ;================ rutina para saber si peso esta estable y dentro de tolerancia ;===================================================================== aceptar ld led122 ldnt led118 andld out 100 ld led122 ;pregunta led tolerancia ldnt led118 ;estabilidad andld out flagok ;si est estable y dentro de tolerancia se pone a 1 ret ;======================================================================== ;=============== rutina para aceptar UNIDADES que esten dentro de tolerancia y estable ;======================================================================== ;esta rutina sabe si hay un residuo y calcula cuantas unidades son y recalcula la tolerancia ;sobre esas unidades aceptand movri ework movri fardo addi stoi ework clear disri ework 2 ;muestra en display fardos aceptados com 1 movri acontar movri ework subi stoi X ;valor del residuo, si es cero pues no hay residuo movri X movci 0 cpei conta2 ;no hubo residuo se termino la caja movri X movri fardo cpli faltante jmp acept1 ;si no es menor es porque no existe un resisuo y sigue el proceso normal acept1 call sintara ld calcular jz acept10 call estabi ;recalcula tolerancias para la siguinte ronda reset calcular acept10 call sintara1 movrf ultacep movrf pesomeno subf stof pesomen1 movrf ultacep stof pesomeno ;este para restar el valor del peso anterior y tratar de no llevar el error jmp acept4 faltante set residuo ;indica qu existe un residuo movrf ultacep stof pesomeno ;este para restar el valor del peso anterior y tratar de no llevar el error call estabi acept4 ret ;======================================================================= ;================= rutina para aceptar 5 CAJAS cuando se presiono clear ========== ;======================================================================= 5cajas ld finoutol jz 5cajas4 inc con5caja 1 movri con5caja movci 6 cpei 5cajasok set led125 jmp 5cajas4 5cajasok setri con5caja 0 reset finoutol reset fouttole movcf 0 stof ultacep1 reset led125 5cajas4 ret ;======================================================================= ;================ Rutina contar cajas de un mismo producto ================== concajas movrf orden movrf ordeneep cpef #cajas0 movrf orden stof ordeneep movci 0 stoi #cajas #cajas0 movrf producto movrf product1 cpef #cajas1 movci 1 stoi #cajas movrf producto stof product1 jmp #cajas2 #cajas1 inc #cajas 1 #cajas2 clear ;disri #cajas 4 com 1 ret ;======================================================================= ;======================================================================= ;*************************************************************************************************** ;======================================================================= ;========================= 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 scan equ 99 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 tiesaldo equ 155 flasaldo equ 156 oksaldo equ 157 relesal equ 158 ;se activa cuando ocurre un saldo, lo desactiva Labview temagr7 equ 162 tiefina7 equ 163 jorgeta equ 164 residuo equ 165 escritu equ 160 ;rele para lv que indica que escribio en la EEPROM okeeprom equ 161 ;inidica quew se escribio en la EEprom tipodate equ 170 ;para imprimir 2 tipos de fecha vencimiento finoutol equ 171 taracaja equ 172 calcular equ 173 ;flag para que áse por recalculo de tolerancia y peso unidad valofar equ 174 ;flag para almacenar una copia de fardo en saldo de sin multiplo aux2 equ 175 aux3 equ 176 auxesp1 equ 177 ;aux temporizador espra envio com3 auxesp2 equ 178 ;aux temporizador espra envio com3 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 ;---------------------------------------------------------------------------------------------------------------------------------------------- ;[tim] auxesp equ 48 ;[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 anchotx equ 127 ;tamaņo del ancho de transmision 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 saldo equ 182 ;unidades de saldo para Labview temsaldo equ 183 ;valor a temporizar saldo r1 equ 184 r2 equ 185 r3 equ 186 r4 equ 187 r5 equ 188 r6 equ 189 r7 equ 190 r8 equ 191 r9 equ 192 r10 equ 194 d equ 195 h equ 196 codigo equ 197 venci1 equ 198 ;mes de vencimiento venci2 equ 199 ;aņo vencimiento tieapea7 equ 220 con5caja equ 221 fardo2 equ 222 ;copia de fardo cuando existe caja que se empaca sin multiplo eepromr1 equ 200 eepromr2 equ 201 eepromr3 equ 202 eepromr4 equ 203 eepromr5 equ 204 epromr6 equ 205 epromr7 equ 206 epromr8 equ 207 epromr9 equ 208 epromr10 equ 209 taro equ 210 ean equ 600 ean1 equ 602 X equ 603 ;ejmo canalmax equ 610 ;1100 ;almacena el valor del canal para retirar caja canalmin equ 611 ;1101 canal equ 612 ;1102 ;almacena el cero en puntos de conversion despues de calibrar fincon2 equ 613 ;1103 ;contador de tiempo de estabilizacion fincon equ 614 ;1104 ;fin de conteo contador media fincon1 equ 615 ;1105 ;contador desviacion formato equ 616 ;1106 ;indica que numero de formato se desea imprimir de dos posibles. txt equ 617 ;1107 ;apuntador nombre de producto pasword equ 618 ;1108 pasword1 equ 619 ;1109 pasword2 equ 612 ;1110 #cajas equ 621 ;1111 ;numero de cajas en una linea mascaja equ 622 ;puntos del conversor que se suman a 110 para aceptar cajavacia ejmo ;ojo varibles desde el registtro 1200 hasta el 1335 utilizados ;------------------------------------------------------------------------------------------------------------------------------- ;[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 ;codigo BPCS del producto 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 saldo1 equ 46 lote equ 47 ;prueba para lote por tamaņo del registro orden equ 48 ;numero de orden tara1 equ 49 pestotal equ 50 ;Peso Bruto pesbarra equ 53 ;peso sin coma para imprimir en la barra optara equ 60 sscc equ 61 sscc1 equ 62 pesojo equ 70 ultacep1 equ 71 punit1 equ 72 ;varible aux.para cantidades ok pero fuera de tolerancia pesomeno equ 73 uni_1 equ 74 pesomen1 equ 75 Y equ 76 ;ejmo pepe equ 77 ;406 ;variable aux para inestabilidad password equ 78 ;409 setdesv equ 410 ;cuanto se permite en desviacion taranega equ 54 ;411 ;valor maximo para iniciar tara taramas equ 55 ;412 ;rangos para retarar tarameno equ 56 ;413 ;rangos para retarar product1 equ 79 ;415 ordeneep equ 80 ;416 vac_min equ 81 ;peso minimo de caja vacia ejmo setdesvt equ 82 ;temporal para entrar el valor de estabilidad ret ;----------------------------------------------------------------------------------------------------------------------------------- textos ;[nop] ;textos 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:" cali lite "CALI" bala lite "BALA" para lite "PARA" pro lite "PROD" esta lite "Esta" merck lite "MERCK" merck1 lite " S.A." merck2 lite " - K.65 # 10-95" codi lite "Codigo" ven lite "Vencimiento" new lite "new" ducto lite "Producto:" line lite "Linea:" can lite "Cantidad:" bogota lite " BOGOTA" ; font ID Ignore Columna primer lite "191100602510016" ;merck segunda lite "191100302290017" ;mERCK segunda1 lite "191100302290068" ;Colombia segunda2 lite "191100302290170" ;-k 65 # 10-95 " tercera lite "191100102070015" ;txt producto tercera1 lite "191100501790010" ;nombre producto cuarta lite "191100101590032" ;txt Codigo cuarta1 lite "191100301340027" ;codigo producto cuarta2 lite "191100101590157" ;txt Vencimiento cuarta3 lite "191100301340151" ;feche de ven 02/2004 quinta lite "191100101160031" ;txt cantidad quinta1 lite "191100300970024" ;ultimo cantidad quinta2 lite "191100300970067UN" sexta lite "191100101150266LOTE" ;texto lote septima lite "191100300970250" ;1081001EP4 numeo de lote ;texto fecha octava lite "191100301770230" ;digitos de la fecha novena lite "191100101590266Orden" novena1 lite "191100301340262" ;numero de la orden decima lite "191100501350269 " ;digitos numero de la orden once lite "191100101160157Peso:" doce lite "191100300970140" ;12.34" ;valor del peso trece lite "191100300970183Kg." ;texto KG catorce lite "1X1100000250006b0372" ;(1) catorce1 lite "027200010001" quince lite "1X1100002260007l0369" ;(2) quince1 lite "0001" dieseis lite "1E1105000330062B" ; (barras) dieseis1 lite "0770241" ;falta el 8 del codigo de la em diesiete lite "191100301770313Linea:" dieocho lite "191100301770362" ;falta el numero de la linea dienueve lite "1X1100001730007l0370" ;(3) dienue1 lite "0001" veinte lite "1X1100001310005l0371" ;(4) veinte0 lite "0001" veinte1 lite "1X1100000930006l037" ;(5) veinte11 lite "0001" veinte2 lite "1X1100000940103l0001" ;(6) veinte21 lite "0082" veinte3 lite "1X1100000930224l0001" ;(7) veinte31 lite "0083" veinte4 lite "191100302650290" ;Secuanecial etiean lite "191100500550258" ;8000031" fede lite "1F3309200120115" ;770241800209 bogo lite "191100302290257" ;bogota ; font ID Ignore Columna ;1 2 10 000 0250 0031 ;rotacion multiplicador Fila ;************************************************************* ;************* M E R C K ******************************** ;************************************************************* ;???????????????????????????????????????????????? ;D11 ;z ;PG ;SG ;H10 ;1X1100000250006b0372027200010001 (1) ;191100602510016MERCK ;1X1100002260007l03690001 (2) ;191100102070015Producto: ;1X1100001730007l03700001 (3) ;191100101590032Codigo ;191100101590157Vencimiento ;191100101590266Orden ;19110030134002700025 ;19110030134015102/2004 ;19110030134026225418 ;1X1100001310005l03710001 (4) ;191100101160031cantidad ;191100101160157Peso ;191100101150266LOTE ;191100300970024160 UN ;19110030097014012.34 Kg. ;1911003009702501081001EP4 ;1X1100000930006l03700001 (5) ;1E1105000330062B07891721000164150720135000000m353403534 ;1X1100000940103l00010082 (6) ;1X1100000930224l00010083 (7) ;191100302290017MERCK ;191100302290068COLOMBIA S.A ;191100302290170-k 65 # 10-95 ;191100501750022Neurobion ;191100501750119grageas ;191100501750195caja ;191100501750236x 30 ;19110030265029012345678 ;Secuencial ;^01 ;Q0001 ;E ret ; modificaciones marcadas com ejmo ;cambio en quitar eeprom ;cambio variable mascaja se suma a 110 para aceptar cajavacia