0% encontró este documento útil (0 votos)
73 vistas58 páginas

Programacion

Este documento proporciona instrucciones paso a paso para configurar un programa de control virtual llamado control.py utilizando una máquina virtual Ubuntu. El programa simula el encendido y apagado de un dispositivo mediante la programación de una hora de inicio y apagado. El documento explica cómo crear la máquina virtual, instalar Ubuntu, configurar la red, instalar Python y otras librerías, y ejecutar el programa control.py para simular la entrada y salida de un PLC.

Cargado por

Pamela Galeano
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
73 vistas58 páginas

Programacion

Este documento proporciona instrucciones paso a paso para configurar un programa de control virtual llamado control.py utilizando una máquina virtual Ubuntu. El programa simula el encendido y apagado de un dispositivo mediante la programación de una hora de inicio y apagado. El documento explica cómo crear la máquina virtual, instalar Ubuntu, configurar la red, instalar Python y otras librerías, y ejecutar el programa control.py para simular la entrada y salida de un PLC.

Cargado por

Pamela Galeano
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Manual de Programa control.

py

Paso 1:

Seleccionamos donde dice Nueva para crear la caja virtual.

Donde dice:

Nombre colocar el nombre al archivo en mi caso coloqué Industrialess.

En Tipo seleccionar Linux.

Versión seleccionar Ubuntu (32-bit). Queda de la siguiente manera:

Y seleccionamos Next
El tamaño de memoria colocarlo en 1024MB

Y seleccionar Next

Seleccionar crear un disco duro virtual ahora

Y seleccionar Crear
El tipo de archivo de disco duro a seleccionar es VDI (VirtualBox Disk
Image). Luego Next

El almacenamiento en unidad de disco duro física seleccionar Reservado


dinámicamente, luego Next
El tamaño de disco duro colocarlo en 20GB y seleccionar Crear.

Paso 2:

Una vez creada la máquina virtual entonces veremos lo siguiente:


Entonces procederemos a configurar la Red y Pantalla

Red: colocarla en NAT.


Pantalla: solo se cambia el tamaño de memoria en video.

Y Seleccionar Aceptar

Paso 3:

Seleccionamos Iniciar
Paso 4:

Ahora se hará la instalación del sistema operativo Ubuntu.

Como primera instancia seleccionamos la carpeta, luego se abre otra


ventana donde seleccionaremos añadir y buscamos el archivo de Ubuntu.
Una vez hecho damos en seleccionar e iniciar.
Paso 5:

Usando las flechas del teclado seleccionar el lenguaje español y enter

Paso 6:

Seleccionar instalar Ubuntu Server y enter


Paso 7:

Ubicarse en el nombre de nuestro país, es decir Honduras y dar enter

En la disposición del teclado, seleccionar NO


Paso 8:

Seleccionar el origen del teclado de la computadora. En mi caso es inglés.


Y dar enter.

Enter donde dice English (US):


Y esperar que carguen componentes adicionales…

Paso 9:

Escribir el nombre de la máquina, que es Industrialess y seleccionar


continuar
Paso 10:

Escribir el nombre completo para el nuevo usuario, en mi caso uth y luego


continuar

Aquí solo seleccionamos continuar


Paso 11:

Elegir una contraseña, darle continuar.

Y nuevamente escribir la contraseña y continuar


Paso 12:

Usar contraseña débil, elegir SI

Cifrar carpeta personal, seleccionar NO

Si esa es nuestra zona correcta seleccionar SI


En el método particionado seleccionar Guiado- utilizar todo el disco

Enter

Escribir los cambios en los discos, seleccionar SI


Esperar que se instalen los archivos necesarios…..

Continuar

Y seguir esperando la instalación


Elegir la opción sin actualizaciones automáticas

Usando la tecla de barra espaciadora seleccionar OpenSSH server y


darle continuar

Seguir esperando instalación


Instalar el arranque GRUB, seleccionar SI

Instalación final del SO Ubuntu

Continuar
Paso 13:

Escribir nuestro usuario y enter

Escribir el password que establecimos en la instalación y enter


Paso 14:

Podemos ver dice: uth@industriales:~$


Ahí procedemos a hacer cambio de sesión y escribimos el comando sudo
su
Damos enter, y nos pide el password for uth, que es el que establecimos al
instalar la caja virtual, que en mi caso es 1234567, luego seleccionamos
enter

Paso 15:

Ahora debemos verificar si hay conexión a red en nuestra máquina virtual


y procedemos a escribir el comando ifconfig y seleccionamos enter.
Como se ve, si hay internet pero para mejor verificación escribimos el
comando ping www.yahoo.es donde claramente confirma la conexión a
internet, para parar ese estado infinito seleccionamos control C
Paso 16:

Una vez hecho el paso 15, procedemos a actualizar el sistema operativo


colocando el comando sudo apt-get update

Paso 17:

Una vez hecho el paso 16, procedemos a escribir el comando sudo apt-
get install xubuntu-desktop y nos va salir una opción que dice desea
continuar? Y seleccionamos la letra s para decir que sí.

Esperar un lapso estimado de 30 minutos.


Cuando aparezca la pantalla solo en negro, hacer click en enter

Paso 18:

Escribimos el comando reboot y enter

Y esperamos

| |
Paso 19:
Escribir el password y dar click en acceder

Una vez ingresada a la máquina, seleccionamos el icono que tiene forma


de ratoncito y seleccionamos emulador de terminal
Donde se abrirá una pantalla oscuro donde se hace el cambio de súper
usuario donde dice uth@Industriales:~$ escribir el comando sudo su y
enter, luego se escribe la contraseña.

Paso 20:

Procedemos a instalar el lenguaje Python con el comando sudo apt-get


install python y damos enter

Paso 21:

Luego debemos hacer instalación de librerías gráficas de python con el


comando sudo apt-get install python-tk damos enter y nos pregunta
desea continuar? Entonces escribimos la letra s y damos enter
Paso 22:

Luego instalamos el editor de lenguaje de python con el comando sudo


apt-get install idle damos enter, luego nos pregunta desea continuar? Y
seleccionamos la letra s
Paso 23:

Luego reiniciamos la máquina virtual con el comando rebbot

Esperamos que carguen datos y que inicie de nuevo, nos pedirá la


contraseña y la colocamos de nuevo y damos acceder.

Y escribimos la contraseña
Paso 24:

Lo que viene ahora es poder tener acceso remotamente desde la máquina


Windows, entonces debemos asignarle una ip fija. Pero antes de todo
debemos ver cuál es la ip de la computadora, configurando la red del
servidor. Entonces debemos ir al buscador de la computadora y escribir
cmd y aparece lo siguiente:

Entonces escribimos el comando ipconfig para saber la ip de nuestra


máquina y aparece lo siguiente:

Como podemos ver la Ip que tiene el wifi en mi computadora es


192.168.1.37 y 192.168.1.1 Ahora abrimos la terminal de Linux y
escribimos el comando cd /etc/network y enter, este es para cambiar de
directorio como podemos ver paso de home/uth a etc/network es decir un
cambio de directorio. Y se procede a escribir el comando ls –l y enter,
este comando permite enlistar los archivos dentro del directorio network.

De esos archivos solo nos interesa donde se configura la red ya que le


vamos asignar la ip manual porque después nos conectaremos vía
escritorio remoto.

Paso 25:

Como siguiente paso vamos a editar archivo mediante comando


pico interfaces y damos enter
Aparece lo siguiente:

Ahora tenemos que editar la línea que dice source y la comentamos


agregándole el signo # al inicio para deshabilitar esa línea.

Ahora en la parte inferior donde dice iface enp0s3 inet dhcp lo editamos
para que quede así iface enp0s3 inet static y damos enter (como vemos
solo eliminamos dhcp y agregamos static)

Luego escribir address 192.168.1.50 y damos enter

Ahora escribir netmask 255.255.255.0 y damos enter (esta es la máscara


de red)

Ahora escribimos gateway 192.168.1.1 y damosenter (esta es la ip


interna del router de internet)

Escribir dns-nameservers 8.8.8.8 8.8.4.4

Y quedaría así:
Control O para que se guarde, enter y luego control x para salir.

Como siguiente punto debemos seleccionar dispositivos, Red y


preferencias de red

Ahora procedemos a hacer cambios en red y pantalla:

Red: En la opción Conectado a seleccionar el que se llame Adaptador


puente, seguido seleccionamos la flechita de avanzadas
Donde como pudimos ver se abren más opciones, la que dice Modo
promiscuo seleccionar Permitir todo

Pantalla: solo se cambia el tamaño de memoria en video a 64MB

Y Seleccionar Aceptar
Paso 26:

Verificaremos si se asignó la ip, primero escribimos el comando reboot


para reiniciar y esperamos unos segundos que reinicie.

Y escribimos de nuevo el password y acceder:


Paso 27:

Ahora como ya tiene asignada la ip fija y hemos tomado ip del router,


entonces uno se puede conectar de manera remota.

Entramos de nuevo al emulador de terminal, entramos como súper usuario


de nuevo con el comando sudo su y colocamos la contraseña, luego
verificaremos el acceso a internet escribiendo ping www.yahoo.es y
enter y quedaría de la siguiente manera:

Donde comprobamos que si hay internet y para parar ese ciclo solo damos
control c

Paso 28:

Ahora escribir el comando idle control.py y se debe abrir esta ventana de


Linux donde es el entorno para programar:
Paso 29:

Ahora veremos en sí el programa control.py que cuando se ejecuta,


simula las entradas de la raspberry pi o microprocesador en cualquier plc.

Este programa simula el encendido, apagado en control del tiempo. Es


decir programar hora/minuto en que se enciende y la hora con minuto para
que se apague

Previamente ya tenemos instalado, python, librería de python y el editor de


python que es idle
El cual consta de:
El signo # se utiliza para hacer algún comentario línea por línea o en
bloque dentro del editor y así recordar que es lo que se hizo en cierto
punto
Tenemos la librería: Tkinter import * que es el entorno grafico de python.

También la importación de 6 librerías más básicas que usamos en este


ejercicio:
import ttk es una librería grafica que habilita objetos especiales, menús
import time
import tkFont es una librería que nos permite configurar las fuentes o
tamaño de letras
import tkMessageBox es una librería que nos habilita cuadros de dialogo
pequeños de advertencia, warning, errores, consultas, información
import os y import subprocess estas 2 librerías son parte fundamental
de este proceso ya que nos permite ejecutar comandos del sistema
operativo, también permite llamar programas externos es decir mandar 0 o
1 a un archivo y ese archivo representa una entrada o una salida
análoga/digital y se convierte mínimo 5V D/C a 24 o 28V D/C.

Siguiendo con el código tenemos:


# Crear
v0=Tk()
v0 es la variable donde almacenamos la función Tk
Tk es una función reservada de Tkinter cuyo objetivo es construir una
ventana.
v0.title(”CONTROL GPIO“) aquí mandamos a llamar otro método que
está dentro de Tkinter como title y v0.geometry(”450x450+100+200“)
title manda a imprimir un título a la ventana que sería CONTROL GPIO
geometry que son las dimensiones en pixeles 450x450+100+200

Largo y alto Punto origen donde se


crea la ventana

# Zona de funciones
def on():
print “ON”
os.system(“sudo /./home/uth/on.sh“)
def nos permite crear la función.
on, off y save es el nombre de la función y pueden contener argumentos o
variables (), en este caso el paréntesis está vacío.
**Recordando: cada línea debe estar alineada perfectamente ya que el programa
python se ejecuta en un buen orden, a esto se le llama identacion dejar un
margen, sangría. Cuando el margen no está bien alineado aparecerá el siguiente
mensaje:

**

on.sh

Abrimos una nueva terminal y escribimos el siguiente comando:


Se abre otra ventana donde se apertura el archivo y previamente lo
creamos ahí mismo:

Cuando hablamos de un archivo on.sh es un lenguaje de programación


donde en la primera línea:

#!/bin/bash hace que el programa realmente es un shell, habilitando


todos los comandos propios del lenguaje, y en este manda un 1 lógico,
donde se escribe
echo 1> /home/uth/estado17.txt
echo es un comando del sistema que permite imprimir colocando el valor
lógico en este caso 1, usando el signo  > que se llama tubería simple nos
permite re direccionar ese comando hacia un archivo directamente que es
estado17.txt (este lo creamos, el 17 hace referencia al GPIO lógico) dentro
de la ruta del directorio /home/uth/ son separadas por pleca / que es la
raíz.

Entonces esto simula, envía un 1 lógico hacia el archivo exclusivo y


representa la salida de voltaje 5V D/C, activando un rele, switch, contactor.
off.sh

Se abre otra ventana donde se apertura el archivo y previamente lo


creamos ahí mismo:

Es exactamente lo mismo que on.sh, con la única diferencia que el estado


lógico es 0.

Cuando hablamos de un archivo off.sh es un lenguaje de programación


donde en la primera línea:

#!/bin/bash hace que el programa realmente es un shell, habilitando


todos los comandos propios del lenguaje, y en este manda un 0 lógico,
donde se escribe
echo 0> /home/uth/estado17.txt
echo es un comando del sistema que permite imprimir colocando el valor
lógico en este caso 0, usando el signo  > que se llama tubería simple nos
permite re direccionar ese comando hacia un archivo directamente que es
estado17.txt (este lo creamos, el 17 hace referencia al GPIO lógico) dentro
de la ruta del directorio /home/uth/ son separadas por pleca / que es la
raíz.

Entonces esto simula, envía un 0 lógico hacia el archivo exclusivo y


representa la salida de voltaje 5V D/C, activando un rele, switch, contactor.

def save():

save es la que lleva toda la lógica en base a cómo trabaja el temporizador.


Las variables globales o públicas son definidas en zona de variables, tiene
como objetivo que el método get (método reservado) dentro de la función
haga y recupere la información capturada en la caja de texto horaini y lo
inserte en hi, asi mismo para mi, hf, mf.
dia, mes y año(aa) son constantes
Si escribimos el comando cat task1 tenemos la siguiente información:

59 minutos, 15 horas * * * root /home/uth/on.sh Y ese es el contenido de


task 1.
Una vez que creamos los programas con el editor de Linux > pico:

pico on.sh pico off.sh


#!/bin/bash #!/bin/bash
echo 1> /home/uth/estado17.txt echo 0> /home/uth/estado17.txt

Luego hay que darles permisos a on.sh y off.sh con el siguiente comando:
chmod –R 777 on.sh y enter

chmod –R 777 off.sh y enter

chmod es un comando del sistemas operativo Linux que nos permite


cambiar de modo nivel de privilegios de una archivo especifico

-R es recursivo
777 se compone de la sumatorio de RWX. R tiene un valor de 4, W valor
de 2 y X valor de 1, Y son tres sietes (777) porque son los niveles de
seguridad del sistema operativo Linux el primer 7 es para root del sistema,
el segundo 7 es para usuarios o pertenecías a algún grupo y el tercer 7 es
para usuario invitado.

# permisos

Tenemos 2 funciones:

os permite ejecutar comandos del sistema operativo

system permite llamar

En el primero se ejecuta task1 y en el segundo task2 que son los nombres


de los archivos que usaremos cambiarle el nombre de los permisos.

# cadena

cadena, cadena2 pueden ser una variable cualquiera y esta igualada a


todos los parámetros que se necesitan, al final de la cadena dice path1 y
path2 . Puede almacenar toda la concatenación de lo que se recibió en la
caja de texto más las variables constantes. (str es string)
# ejecución

De esta manera se ve reiniciado el servicio Chrome para garantizar que la


acción se ha hecho correctamente y que al reiniciar el servicio Chrome la
tarea que se a grabado quede como permanente.

# Zona de botones

El parámetro command manda a llamar la función off u on y se ejecuta.

Y ejecutamos el programa:

Centrandonos en el encendido y apagado.

Vamos a ver el contenido del estado17 con el comando cat estado17.txt


El comando cat permite visualizar el contenido de un archivo en modo de
lectura y no de edición, no se puede editar.

Al dar click en botón on veremos que si hay un registro, lo cual será un 1


lógico como veremos:

Ahora, si seleccionamos el botón de off:

Y volvemos a consultar el estado veremos que está en estado lógico 0:


Analizando vemos que el archivo sufre el cambio cuando presionamos on
es 1 y cuando presionamos off es 0.

# Zona de variables

global horaini es hora inicial


global minini es minuto inicial
global horaf es hora final
global minf es minuto final
Esas variables están declaradas como publicas globales porque lo que se
quiere es utilizarla en cualquier función interna que se le declare

horaini=StringVar()
minini=StringVar()
horaf=StringVar()
minf=StringVar()
StringVar es una variable tipo cadena de caracteres y es sensible a las
mayúsculas, minúsculas y espacios. Indicando que esas variables son del
tipo StringVar

# Cajas de texto

Donde txt_hi=, txt_mi=, txt_hf=, txt_mf= son variables locales haciendo


alusión a hora inicial, hora final, minuto inicial, minuto final
Entry es la función que nos permite generar una captura a una entrada de
datos hacia el sistema, entonces capturamos la hora inicial, hora final,
minuto inicial, minuto final porque es el principio básico de programación.
Dentro de la función Entry se hace referencia en v0, textvariable donde
tenemos las variables horaini, minini, horaf, minf. Luego .place que es el
lugar donde se va mandar a imprimir, coordenadas dentro de los límites
de la ventana padre que le pusimos 450x450 pixeles
# Etiquetas

label_hi=, label_mi=, label_hf=, label_mf=, esas etiquetas son colocadas a


la par de cajas de texto.

# Boton Save
Manda a llamar la función Save, que permite salvar la información y se
imprime en lugar específico x=300, y=200

Hasta este punto tenemos lo que es etiquetas, cajas de texto y botón


salvar:

Paso 30:
Como siguiente paso veremos lo que pasa cuando damos click en el botón
save (se captura la información o tiempo en cajas de texto).
Abrimos la terminal y escribimos el comando cd /etc/cron.d/ y enter, esta
es una ruta especifica

Se abre un directorio donde se encuentran todos los archivos que van


hacer tareas programadas en un momento determinado, fecha estipulada
(hora-minuto, día, mes y año) y escribimos el comando ls –l y ahí se
encuentran todos los archivos y tareas que tenemos pendiente de ejecutar
a una hora determinada.

Crearemos un archivo nuevo con el comando pico evento

Para programar el off.sh (apagado) como vemos es un archivo vacio que


tiene una estructura creada a través de la aplicación, se compone de 5
asteriscos * * * * * root /home/uth/off.sh
Primer asterisco son minutos, el segundo hora, el tercero dia, el cuarto
mes, el quinto año.
root es el usuario
/home/uth/ es la ruta
on.sh es el programa a ejecutar

Y lo guardamos con control o, enter y control x

Luego hacemos lo mismo pero para el on.sh (encendido). Creando otro


archivo con el comando pico evento1 siguiendo los mismos pasos que el
pico evento a excepcion que es on.sh
Entonces la ejecución del programa es esta:
Colocamos el tiempo de encendido y apagado, en minutos y hora.

A las 17:50 minutos se va encender el actuador y a las 17:52 se va a


apagar, le damos SAVE y esperemos que transcurra el tiempo. Cuando se
cumpla el tiempo de encendido vamos a ver lo siguiente:
Pero primero debemos escribir comando cd /home/ y enter luego ls enter,
luego cd uth, luego ls y enter, por ultimo escribiremos cat estado17.txt
enter para ver el valor de estado que será:
Como vemos el tiempo ya inicio por lo tanto está en estado 1.
Ahora que ya se cumplió el minuto 52 pasa a estado 0:

Paso 31:
Para saber si el programa se ejecuta o no, en cuanto al temporizador en
Cron entonces procedemos a revisar un archivo que sería la
representación de lo que haría la raspberry pi.
Dentro de cron se encuentran los archivos que vamos a usar (task1 y
task2) con los comandos:
cat /etc/cron.d
cd /etc/cron.d
ls\
Control c
ls –l
Pare ver el contenido dentro de task1 escribir el comando: cat task1
Donde el usuario root es el único encargado en ejecutar el programa
/home/uth/on.sh

Asi mismo ver el contenido dentro de task2 escribir el comando: cat task2
Donde el usuario root es el único encargado en ejecutar el programa
/home/uth/off.sh

Y cuando se ejecute esa hora en específico entonces va cambiar la


imagen en el CONTROL GPIO de ON a OFF indicando que se hizo
automáticamente vía programación de horario y no manualmente.
Paso 32:
Una vez descargadas las imágenes de on.sh y off.sh

Entonces usamos la aplicación FileZilla


Al abrirla, volvemos al emulador para saber la dirección inet con el
comendo ifconfig en mi caso es 192.168.1.50

Volvemos a FileZilla y colocamos lo siguiente:

Host: colocaremos la dirección inet que acabamos de leer en el emulador,


en mi caso coloqué 192.168.1.50
Username: colocamos el nombre del usuario que creamos en la máquina
virtual, en mi caso uth
Password: colocaremos la contraseña que establecimos en la caja virtual.
Port: colocaremos en puerto número 22 y damos click en Quickconnect.
Donde veremos la siguiente ventana:
Seleccionamos Ok

Y veremos que aparecen más archivos, que son los que están en Linux:

Ahora como siguiente punto, tenemos que arrastrar los archivos a la


carpeta uth o home para que de esa manera se agreguen en los archivos
del control.py
Paso 33:
Una vez hecho el paso 32. Volvemos a control.py
Seleccionamos la opción administrador de archivos

Donde vemos las imágenes que hemos pasado desde FileZilla:


Paso 34:
Ahora entramos al directorio de descargas, con el comando cd Descargas
enter y luego el comando ls –l

Procedemos a copiar esos 2 archivos, primero el off.gif con el comando:


cp off.gif /home/uth y enter

Luego copiamos el on.gif con el comando:


cp on.gif /home/uth y enter

Ahora vemos el contenido en el estado17 con el comando:


cat estado17.txt
echo 1
echo 1 ˃ estado17.txt
Ahora le damos privilegios de ejecución on.sh y off.sh:
Con el comando chmod -R 777 on.sh enter
Y chmod -R 777 off.sh enter

Y ejecutamos el programa para comprobar lo que acabamos de hacer.

También podría gustarte