En mis programas de Step7 siempre he hecho un uso muy escaso de las funciones integradas de contaje. De hecho, cuando necesito contar, suelo recurrir a hacer mi propio contador ad hoc. En mi opinión, las instrucciones de contaje Simatic no resultan muy útiles, tienen su propio formato en BCD y su mayor limitación reside en su limitado rango de contaje, de 0 a 999. Si necesitamos contar más siempre se pueden encadenar dos o más contadores, pero no es muy práctico tener un contador repartido entre varias variables.
Otra opción que tenemos es utilizar contadores según la norma IEC 1131–3, que en Step7 están implementados como bloques de función de sistema (SFB) en la biblioteca Standard Library, bajo el apartado System Function Blocks. El SFB0 "CTU" sirve para contar hacia adelante, el SFB1 "CTD" para contar hacia atrás y el SFB2 "CTUD" para contar en ambos sentidos. El tipo de variable de contaje es un entero de 16 bits con signo (INT) lo que nos da un rango entre -32 768 y 32 767. En la ayuda de Step7 vienen perfectamente documentados. Aunque este rango nos permite un mayor juego, se me antoja que para muchos posibles usos se queda corto. Por ejemplo, una aplicación típica sería un contador de piezas en una máquina: es habitual llevar la cuenta de piezas buenas y piezas malas, la cantidad de piezas procesadas según su referencia, etc. Y ciertamente en una aplicación así el rango de contaje podría ser mayor, con la posibilidad de contar, dependiendo de la máquina, incluso millones.
No existe en Step7 un contador que tenga un rango de 32 bits, o por lo menos yo no he encontrado ninguna referencia, así que tengo mi propio bloque de función (FB) que uso para poner contadores de piezas en mis máquinas. Está programado en AWL y el código es muy sencillo:
2 de agosto de 2010
6 de julio de 2010
La protección KNOW HOW de Step7
Es habitual en los proyectos de Step7 que ciertos bloques de programa estén protegidos, sobre todo si usamos bloques de bibliotecas de Siemens. Por ejemplo, los bloques que entrega Siemens para manejar una CP340 están protegidos:

Si intentamos abrirlos nos saldrá el mensaje:

Estos bloques tienen activada la protección KNOW HOW y tan solo nos permite ver la interfaz del bloque (parámetros IN, OUT e IN/OUT) y su comentario general. Sin embargo, el código del bloque, las variables estáticas y temporales, y los comentarios de los segmentos son inaccesibles.
Nosotros también podemos proteger nuestros bloques de programa. En la página web de Siemens está explicado, el procedimiento es sencillo y voy a poner un ejemplo.

Si intentamos abrirlos nos saldrá el mensaje:

Estos bloques tienen activada la protección KNOW HOW y tan solo nos permite ver la interfaz del bloque (parámetros IN, OUT e IN/OUT) y su comentario general. Sin embargo, el código del bloque, las variables estáticas y temporales, y los comentarios de los segmentos son inaccesibles.
Nosotros también podemos proteger nuestros bloques de programa. En la página web de Siemens está explicado, el procedimiento es sencillo y voy a poner un ejemplo.
21 de junio de 2010
Temporización en Step7 sin usar temporizadores SIMATIC
El número de temporizadores SIMATIC que tenemos disponibles programando en Step7 está limitado, depende de cada modelo de PLC. Por ejemplo, para un 312C tenemos 128 temporizadores, para un 313C-2DP son 256, etc. Esto es suficiente para la mayoría de las aplicaciones, pero puede ocurrir que necesitemos más. Como solución existen varias alternativas. Una sería usar temporizadores según la norma IEC, que en Step7 vienen implementados como funciones del sistema integradas (SFB). Dicha norma define dos tipos de temporizadores, TON y TOF, que no son más que un retardo a la conexión (SFB4) y retardo a la desconexión (SFB5), respectivamente. Para utilizarlos los tenemos disponibles en la biblioteca 'Standard library', bajo 'System Function Blocks'. Podemos usar tantos como queramos, pero teniendo en cuenta que para cada temporizador será necesario declarar un bloque de datos (DB) de instancia, lo cual ocupa memoria (58 bytes por cada temporizador exactamente).

Estos temporizadores no usan el formato de tiempo S5TIME propio de Step7, sino que usan el formato TIME según la norma IEC. Este formato no es más que un entero doble con signo (32 bits) donde se almacena el tiempo en milisegundos. Para saber más sobre su funcionamiento, en la ayuda de Step7 vienen perfectamente documentados.
Pero existe otra opción para realizar temporizaciones. En Step7 tenemos la función del sistema SFC64 TIME_TCK (time tick), con la que se puede leer el cronómetro del sistema de la CPU. Esto nos da la opción de construir nuestro propio temporizador a medida y es lo que voy a hacer a continuación.

Estos temporizadores no usan el formato de tiempo S5TIME propio de Step7, sino que usan el formato TIME según la norma IEC. Este formato no es más que un entero doble con signo (32 bits) donde se almacena el tiempo en milisegundos. Para saber más sobre su funcionamiento, en la ayuda de Step7 vienen perfectamente documentados.
Pero existe otra opción para realizar temporizaciones. En Step7 tenemos la función del sistema SFC64 TIME_TCK (time tick), con la que se puede leer el cronómetro del sistema de la CPU. Esto nos da la opción de construir nuestro propio temporizador a medida y es lo que voy a hacer a continuación.
21 de mayo de 2010
Temporización discontinua en Step7
Supongamos que tenemos que controlar la dosificación de un líquido que debe producirse durante un tiempo preciso. Además, existe una barrera que, al interrumpirse, bloquea la salida del líquido y, al liberarse, debe seguir dosificando el tiempo restante. Está claro que hay que usar un temporizador. En Step7 existen cinco clases de temporizadores:
S_IMPULS ó SI -> ImpulsoCada temporizador tiene dos instrucciones posibles para lanzarlo: la corta (SI, SV, ...) en la que simplemente especificamos el tiempo de temporización y la larga (S_IMPULS, S_VIMP ...), en la que además podemos parametrizarlo.
S_VIMP ó SV -> Impulso prolongado
S_EVERZ ó SE -> Retardo a la conexión
S_SEVERZ ó SS -> Retardo a la conexión con memoria
S_AVERZ ó SA -> Retardo a la desconexión
12 de abril de 2010
Modificar datos en recetas a través de scripts en WinCC Flexible
En los paneles de operador de Siemens (si exceptuamos los paneles más sencillos) tenemos la posibilidad de programar nuestras propias funciones en Visual Basic Script. Esto nos permite una gran flexibilidad a la hora de plantear nuestras aplicaciones, incluso permitiendo liberar al PLC de ciertas operaciones complejas usando el panel como apoyo de cálculo.
Desde un script tenemos acceso a la tabla de variables, a los objetos, a las funciones pre programadas e incluso a otros scripts. La programación es muy cómoda ya que el editor del WinCC Flexible es muy completo, con sintaxis coloreada, asistente de funciones y plantillas de código. Tal y como viene explicado en la ayuda:
En mi caso se me planteó la siguiente situación: en una máquina existe una receta donde se almacenan diferentes cotas para situar un eje durante el montaje de una pieza. Estas cotas son diferentes para cada referencia de trabajo (piezas diferentes) y están referidas al punto de apoyo de la pieza en la máquina. El cliente ha estado usando la máquina durante un tiempo y llevaba creadas más de 50 referencias. Por imperativo de diseño es necesario variar el punto de apoyo de todas las piezas, con lo que todas las cotas almacenadas deben ser modificadas en una cantidad fija. Además se prevé que en un futuro el punto de apoyo pueda volver a cambiar. Modificar las cotas para todas las referencias a mano sería una posibilidad, pero para hacerlo más fácil podemos echar mano de un script.
Desde un script tenemos acceso a la tabla de variables, a los objetos, a las funciones pre programadas e incluso a otros scripts. La programación es muy cómoda ya que el editor del WinCC Flexible es muy completo, con sintaxis coloreada, asistente de funciones y plantillas de código. Tal y como viene explicado en la ayuda:
Para crear scripts pulse <Ctrl><Espacio> y compruebe la amplia variedad de funciones. Escriba scripts utilizando funciones del sistema o el modelo de objetos. El objeto HMI Runtime permite acceder fácilmente al sistema. Para seleccionar una referencia de objetos pulse <Alt><Flecha derecha>. Puede crear scripts complejos con elementos del lenguaje de programación VBScript y acceder directamente a las variables a través de los nombres, p.ej. variable = 5.
En mi caso se me planteó la siguiente situación: en una máquina existe una receta donde se almacenan diferentes cotas para situar un eje durante el montaje de una pieza. Estas cotas son diferentes para cada referencia de trabajo (piezas diferentes) y están referidas al punto de apoyo de la pieza en la máquina. El cliente ha estado usando la máquina durante un tiempo y llevaba creadas más de 50 referencias. Por imperativo de diseño es necesario variar el punto de apoyo de todas las piezas, con lo que todas las cotas almacenadas deben ser modificadas en una cantidad fija. Además se prevé que en un futuro el punto de apoyo pueda volver a cambiar. Modificar las cotas para todas las referencias a mano sería una posibilidad, pero para hacerlo más fácil podemos echar mano de un script.
Etiquetas:
HMI,
Siemens,
Visual Basic Script,
WinCC Flexible
9 de abril de 2010
Unas notas sobre la administración de usuarios en WinCC Flexible
En las máquinas que fabricamos, como interfaz hombre-máquina (HMI), solemos instalar paneles de operador táctiles de Siemens. Estos paneles tienen su propio software de programación: el WinCC Flexible. Esta herramienta permite, de una forma relativamente sencilla, sacarle todo el partido a los paneles.
Entre la muchas funciones que nos permite configurar está la de la gestión de usuarios y contraseñas de una forma muy completa y con muchas posibilidades. Podemos crear grupos y usuarios con diferentes niveles de acceso, para restringir el acceso a partes del panel del operador. Por ejemplo, puede interesarnos que un operario pueda cambiar la referencia que fabrica una máquina, pero no permitirle que cambie los parámetros de dicha referencia, reservando esta operación a un encargado.
Entre la muchas funciones que nos permite configurar está la de la gestión de usuarios y contraseñas de una forma muy completa y con muchas posibilidades. Podemos crear grupos y usuarios con diferentes niveles de acceso, para restringir el acceso a partes del panel del operador. Por ejemplo, puede interesarnos que un operario pueda cambiar la referencia que fabrica una máquina, pero no permitirle que cambie los parámetros de dicha referencia, reservando esta operación a un encargado.
Etiquetas:
HMI,
Siemens,
WinCC Flexible
Suscribirse a:
Entradas (Atom)

