martes, 29 de noviembre de 2016

Cambiar ID de volumen (HD)

Útil si tienes una licencia vitalicia ligada al ID del disco duro. Tiene un formato hexadecimal del tipo XXXX-XXXX.
Para verlo, desde cmd: vol c:.
Para cambiarlo, descargar y extraer la versión adecuada (32 o 64 bits) del programa VolumeID donde queramos usarlo (en mi caso en la máquina virtual).
Acceder desde la consola a la ruta donde lo hemos extraido y escribir: "volumeid64 c: XXXX-XXXX". Caso de 32 bits: misma instrucción pero sin el "64".
Tras el reinicio, se aplicarán los cambios.

domingo, 5 de junio de 2016

Redireccionar variables en Siemens STEP 7

En mi primer programa real, definí unas direcciones para las entradas y salidas que luego no correspondieron con lo que la subcontrata cableó en el PLC y las tarjetas.

Yo ya había hecho el programa, la tabla de símbolos y el sinóptico en WinCC, así  que tenía que hacerlo de manera automatizada para las tres "partes" que se veían afectadas por estos cambios.

En primer lugar lo hice en la tabla de símbolos: desde el menú Tabla/exportar, elijo el tipo DIF (Data Interchange Format), que puede ser modificado y guardado por EXCEL.
Importante, antes de modificarla, guardar una copia añadiendo una columna con el nuevo direccionado. Así tendremos el "historial de cambios", útil para el siguiente paso.
Importante que se respeten los espacios entre letra y número (7 u 8 espacios), para que la importación no dé errores.
Antes de importar la tabla modificada, borramos el contenido de la tabla actual en el Editor de símbolos de S7, para evitar duplicidades.

El segundo paso es el propio programa. Para ello seleccionamos todos los bloques que lo componen en el SIMATIC Manager y desde el menú Herramientas/Recablear.
Funciona similar al "Buscar y reemplazar" del office. Lo bueno es que hace toda la lista de una sola vez, haciendo todas las modificaciones sobre el estado inicial, no en el actualizado. Me resulta difícil de explicarlo, así que pongo un ejemplo para el siguiente bloque:


Nuestra tabla en el menú de recablear puede ser:



Y el resultado será exactamente el que nosotros queremos. No amontonará los recién cambiados A0.0 en A0.1 sobre A0.2. Por ello, el único trabajo que tenemos que hacer sobre la tabla de símbolos que hemos preparado antes sobre excel es seleccionar todas las celdas, Buscar y Reemplazar los 7 espacios por ninguno (los elimina).
Ya podemos copiar de excel y pegar en esta tabla. Sencillo, no?

Por último, en WinCC es mucho más rápido, ya que todas las asignaciones a las variables del Graphic Designer se hacen buscando por el nombre simbólico, no por la dirección de la vaiable.
Como los simbólicos no han cambiado, sólo tenemos que generar nuevamente la tabla de variables (en el menú de Administración de Variables) pegando desde la misma tabla de excel que acabamos de usar.


Esta entrada sólo muestra cómo lo hago yo. Agradecería infinitamente que alguien aportara una manera más rápida.
Sinceramente esperaba que hubiera alguna opción de aplicar los cambios a todo el programa, modificando la Tabla de Símbolos de Step 7. Pero bueno, como no es algo que esté haciendo cada día, tampoco pasa nada.
Veremos cómo va en TIA Portal...

martes, 24 de mayo de 2016

Trasladar sistema operativo a SSD

Tentado por las bondades de los discos duros de estado sólido y necesitado de más velocidad para el trabajo, me decidí a la migración. Mi problema particular, y objeto de esta entrada, es que el disco de destino es de menor capacidad que el de origen, por lo que en la migración quise dejar atrás la partición de backup del disco antiguo.
Para la migración utilicé el programa clonezilla. Es un live-CD / live-USB que te permite la copia de particiones o de disco entero.
Lo que debería haber hecho es, fijarme en las particiones que tenía el disco duro de windows. Habría visto la primera partición, de 100MB, que es la que almacena los datos de arranque (y otras cosas que no entiendo, pero ahora sé que eran necesarias). No la ví, no la copié al nuevo disco y por supuesto, windows no arrancó.

Finalmente, arranqué desde un live CD de Linux Mint, y calqué esta partición en el nuevo SSD:


Nombre: Reservado para el sistema
Tamaño: 100MB
Sistema de archivos: NTFS

La segunda partición, también NTFS, ya ocupando el resto del SSD (no quería partición de backup).

En el disco origen ya había pasado los archivos que no quería pasar al nuevo SSD a la partición de backup.

Ahora el proceso que queda por delante es arrancar desde el live-CD/USB de clonezilla y clonar las particiones de "Reservado para el sistema" y de "Windows".

Aunque sean de distinto tamaño, mientras el contenido quepa en el destino, no habrá problema.

A partir de ahí, todo disfrute: no hace nada de ruido, el sistema operativo arranca en segundos, todos los programas se abren más rápido y aunque el trabajo es el trabajo, te ahorras esos momentos en los que ya vas tarde y cuando el pc te hace esperar quieres hundir el puño en la pantalla.
En los SSD no hay piezas en movimiento, por lo que no le afectan las vibraciones ni los golpes, cosa que en la puesta en marcha da un extra de confianza.

El único pero: duran menos.

Yo hace tiempo que hago las copias de seguridad en la nube, así que espero que cuando rompa, no me pille por sorpresa.

CMD batch para reiniciar dispositivo en Windows 7 64bits

Tras la instalación de algún programa, el ratón USB fallaba al reiniciar el PC:


El problema se solucionaba deshabilitando y volviendo a habilitar el disposivo desde el administrador de dispositivos, así que en lugar de buscar el origen del problema, decidí taparlo (como buen español).
La solución expuesta es una mezcla de varios foros, pero que escribo por no haber encontrado nada similar en un solo sitio. En forma de resumen, engloba los siguientes pasos:

  1. Conseguir DEVCON
  2. Escribir un archivo de consola
  3. Programar una tarea para que se ejecute al inicio
En primer lugar, devcon es una herramienta que, en línea de comandos, hace lo mismo que el administrador de dispositivos. Antes se podía descargar solo, pero ahora forma parte de un paquete de herramientas de desarrollo que pesa un huevo y no necesitamos. Podemos encontrar fácilmente la herramienta en cuestión googleando un poco. Da un poco de miedo porque utilizas un exe de alguien que no sabes si es de confianza, pero si lo compruebas con el antivirus antes, deberías estar a salvo.
Hay dos versiones incompatibles entre sí (32 y 64 bits). Debes descargar la correspondiente a tu sistema operativo. Otra opción es descargar el giga y pico de la instalación del paquete WDK y coger de ahí el ejecutable "devcon.exe" que nos hace falta.

El siguiente paso es hacerla accesible desde la consola, por lo que debes pegar el ejecutable en la carpeta C:\Windows\System32\
Una vez hecho esto, puedes comprobar que funciona escribiendo "devcon help" en la consola.

El siguiente paso es obtener la información (ID) del dispositivo que falla. Entramos en el administrador de dispositivos (escribiéndolo en la barra de búsqueda del menú inicio).
Botón derecho / propiedades en el dispositivo que quieres reiniciar, pestaña detalles, y en el desplegable de "Propiedad", escoger "Id. de hardware".


El valor que estamos buscando es, en mi caso, DEV_1042. con esta información ya podemos crear el archivo de consola:

Yo lo he creado en C:/ (raiz). Abro la carpeta desde el explorador de windows y creo un documento de texto con el siguiente contenido:


devcon disable *DEV_1042*

devcon enable *DEV_1042*

Primero lo escribí dando un tiempo de espera ("timeout 5"), pero ví que funcionaba igual sin él...
A la hora de guardar el archivo, escogemos *.* Todos los archivos y ponemos el nombre que queramos, con la extensión ".cmd". Por ejemplo: RESETXHCI.cmd

Ya podemos abrir el programador de tareas (igual que antes, buscándolo desde el menú inicio) y añadir una tarea nueva (Acción/Crear Tarea (básica, si queremos usar el asistente)):


Desencadenadores: al iniciar la sesión.
Acciones: Iniciar un programa. Examinar: C:\RESETXHCI.cmd
Condiciones: Desactivar "Iniciar la tarea sólo si el equipo está conectado a la corriente alterna"
Configuración: Desactivar "Detener la tarea si se ejecuta durante más de 3 días"