You are on page 1of 9

Manufactura Integrada por Computadora

ING301
Laboratorio # 2

Nombre: Jorge Ponce


Cdigo: 2010363
Horario: 07M2

10 de abril del 2013

EJERCICIO 1

DEFP ORI
;Las posiciones que inicialmente se conocen son:
DEFP A
;ORI, A, B y C.
DEFP B
DEFP C
DEFP AUP
DEFP BUP
DEFP CUP
GLOBAL DEST
;Estas variables globales servirn para almacenar
GLOBAL INI ;los valores que se ingresarn ms adelante para
;indicarle al programa qu hacer.
GLOBAL CONTA
GLOBAL CONTB
GLOBAL CONTC
DEFP VARA
DEFP VARB
DEFP VARC
PROGRAM E01
SET CONTA = 1
SET CONTB = 1
SET CONTC = 1
SETP VARA = A
SETP VARB = B
SETP VARC = C
SETP AUP = A
SETP BUP = B
SETP CUP = C
SHIFTC AUP BY Z 100
SHIFTC BUP BY Z 100
SHIFTC CUP BY Z 100
LABEL 1
MOVED ORI

;Definimos estas posiciones sobre la


;ubicacin de las pilas que se formarn

;Aqu retornar el programa tras ejecutar el lazo.

PRINTLN "Seleccione posicion inicial: (A/B/C)"


GET INI
IF INI = 'A'
ORIF INI = 'B'
ORIF INI = 'C'
GOTO 2
ELSE

PRINTLN "POSICION INICIAL INVALIDA"


GOTO 1
ENDIF
LABEL 2
PRINTLN "Seleccione posicion final: (A/B/C)"
GET DEST
IF DEST = 'A'
ORIF DEST = 'B'
ORIF DEST = 'C'
GOTO 3
ELSE
PRINTLN "DESTINO INVALIDO"
GOTO 2
ENDIF
LABEL 3
IF INI = 'A'

;si el valor ingresado para la posicin inicial

IF CONTA > 0
PRINTLN "RECOGIENDO DE A"
MOVED AUP
MOVED VARA
;es A, entonces nos movemos a la posicin del cubo
CLOSE
;A y lo tomamos. Lo mismo se hace en las
MOVED AUP
;siguientes estructuras selectivas con B y C.
SHIFTC VARA BY Z -30
SET CONTA = CONTA - 1
GOTO 4
ENDIF
IF CONTA = 0
PRINTLN "NO HAY BLOQUE EN A"
GOTO 1
ENDIF
ENDIF
IF INI = 'B'
IF CONTB > 0
PRINTLN "RECOGIENDO DE B"
MOVED BUP

MOVED VARB
CLOSE
MOVED BUP
SHIFTC VARB BY Z -30
SET CONTB = CONTB - 1
GOTO 4
ENDIF
IF CONTB = 0
PRINTLN "NO HAY BLOQUE EN B"
GOTO 1
ENDIF
ENDIF
IF INI = 'C'
IF CONTC > 0
PRINTLN "RECOGIENDO DE C"
MOVED CUP
MOVED VARC
CLOSE
MOVED CUP
SHIFTC VARC BY Z -30
SET CONTC = CONTC - 1
GOTO 4
ENDIF
IF CONTC = 0
PRINTLN "NO HAY BLOQUE EN C"
GOTO 1
ENDIF
ENDIF
LABEL 4
IF DEST = 'A'
;Aqu analizamos la posicin final a la cual
SHIFTC VARA BY Z 30
MOVED AUP
;se llevar el cubo tomado previamente.
MOVED VARA
OPEN
SET CONTA = CONTA + 1
ENDIF
IF DEST = 'B'
SHIFTC VARB BY Z 30
MOVED BUP
MOVED VARB
OPEN

SET CONTB = CONTB + 1


ENDIF
IF DEST = 'C'
SHIFTC VARC BY Z 30
MOVED CUP
MOVED VARC
OPEN
SET CONTC = CONTC + 1
ENDIF
GOTO 1
END

EJERCICIO 2
DEFP
DEFP
DEFP
DEFP
DEFP
DEFP

POS1
POS2
POS3
POS4
POS5
POS6

DEFP
DEFP
DEFP
DEFP
DEFP

POS7
POS8
POS9
POS10
POS11

PROGRAM E02
PRINTLN
PRINTLN
PRINTLN
PRINTLN
PRINTLN

"ACTIVE
"ACTIVE
"ACTIVE
"ACTIVE
"ACTIVE

<I1>
<I2>
<I3>
<I4>
<I5>

PARA
PARA
PARA
PARA
PARA

UNA SEAL TRIANGULAR"


UNA SEAL CUADRADA"
UNA SEAL DIENTE DE SIERRA"
UNA SEAL TRAPECIO"
TRAZAR UNA ESTRELLA"

WAIT IN[3] = 1
SETP
SETP
SETP
SETP
SETP
SETP
SETP
SETP
SETP
SETP

POS2=POS1
POS3=POS1
POS4=POS1
POS5=POS1
POS6=POS1
POS7=POS1
POS8=POS1
POS9=POS1
POS10=POS1
POS11=POS1

SHIFTC POS2 BY X

;desplazo mi punto horizontalmente

SHIFTC POS3 BY X
SHIFTC POS3 BY Y

;lo desplazo en diagonal

SHIFTC POS4 BY X
SHIFTC POS4 BY Y

;lo desplazo en vertical

SHIFTC POS5 BY X
SHIFTC POS5 BY Y

;lo desplazo en diagonal

SHIFTC POS6 BY X
SHIFTC POS6 BY Y

;lo desplazo en vertical

SHIFTC POS7 BY X
SHIFTC POS7 BY Y

;lo desplazo en diagonal

SHIFTC POS8 BY X
SHIFTC POS8 BY Y

;lo desplazo en vertical

SHIFTC POS9 BY X
SHIFTC POS9 BY Y

;lo desplazo en diagonal

SHIFTC POS10 BY X

;lo desplazo en vertical

SHIFTC POS11 BY X
MOVELD
MOVELD
MOVELD
MOVELD
MOVELD
MOVELD
MOVELD
MOVELD
MOVELD
MOVELD
MOVELD

;desplazo mi punto horizontalmente

POS1
POS2
POS3
POS4
POS5
POS6
POS7
POS8
POS9
POS10
POS11

END

EJERCICIO 3
DEFP
DEFP
DEFP
DEFP

INI
POSA
POSB
POSC

DEFP AUP ;posiciones por arriba por seguridad


DEFP BUP
DEFP CUP

GLOBAL CONTA
GLOBAL CONTB
GLOBAL CONTC

;contadores de cubos

PROGRAM E03
TRIGGER RUT BY IN 10 1
OPEN
DEFINE CONT
SET CONTA = 3 ;cantidad de cubos inicial
SET CONTB = 0
SET CONTC = 0

SETP POSA = INI


;seteo valores para iniciar movimientos
SETP POSB = INI
SETP POSC = INI
SHIFTC POSB BY Y 55
SHIFTC POSC BY Y 110
SHIFTC POSA BY Z 60
SETP AUP = POSA
SETP BUP = POSB
SETP CUP = POSC
SHIFTC AUP BY Z 30
SHIFTC BUP BY Z 90
SHIFTC CUP BY Z 90
;se espera a que se active el interruptor 1 para empezar el
programa
WAIT IN[9] = 1
;empieza la transferencia de los cubos hacia la columna C
FOR CONT = 1 TO 3
MOVED AUP
MOVED POSA
CLOSE
SET CONTA = CONTA - 1

MOVED AUP
SHIFTC POSA BY Z -30
MOVED AUP
MOVED POSC
OPEN
SET CONTC = CONTC + 1
MOVED CUP
SHIFTC POSC BY Z 30
ENDFOR
;empieza la transferencia de los cubos hacia la columna B
FOR CONT = 1 TO 3
SHIFTC POSC BY Z -30
MOVED CUP
MOVED POSC
CLOSE
SET CONTC = CONTC - 1
MOVED CUP
MOVED BUP
MOVED POSB
OPEN
MOVED BUP
SET CONTB = CONTB + 1
SHIFTC POSB BY Z 30
ENDFOR
END

You might also like