Вы находитесь на странице: 1из 226

Sysmac Studio

Introducción a la Plataforma Sysmac


Introduction
• Nuevo software de programación con la plataforma Sysmac:
– NJ Series Controller
– G5 servo amplifiers
– NX Safety Unit
– FQ-M vision sensor
– FH vision system
– ZW displacement sensors
– EtherCAT network
– Ethernet/IP network
Project Management
• Pantalla inicio
Project Management
• New Project
– Nombre proyecto
– Autor y comentario opcional
– Tipo de proyecto
• Standard Project puede ser
descargado a la CPU
• Library Project creación de
librería para utilizar en otros
proyectos
Project Management
• New Project
– Seleccionar controlador
• Controller NJ Series
– CPU tipo y modelo
– Firmware version of CPU
• Vision Sensor para FQ-M
• Measurement Sensor para ZW
– Clicar Create
• Cerrar el proyecto abierto para volver a
la pantalla de inicio
Project Management
• Abrir proyecto existente
– Selecciona Open Project
– Selecciona un proyecto
• Se mostrarán detalles del
proyecto seleccionado
• Compare permite comparar el
proyecto con otro
– Delete borrar el proyecto del PC
– Clicar Open
Project Management
• Import/Export
– El directorio es especificado por el software
– Para acceso rápido, exportar proyecto
• Mover a otro PC, email, backup
– 2 formatos de archivo disponibles
• SMC proyecto entero
• CSM proyecto entero y comprime el archivo exportado
– No incluye trace data
– Debe ser compilado antes de descargar
• Sysmac Studio 1.08 añade dos más
– SMC2 y CSM2 ofrecen mejores compresiones
Project Management
• Import/Export
– Desde ventana inicial
• Open Project
• Seleccionar proyecto desde lista
• Click Export
– Con proyecto ya creado
• File menu
• Export…
Project Management
• Import/Export
– Selecciona dirección destino
– Introducir nombre
– Selección tipo de archivo
– Clicar Save
Project Management
• Import/Export
– Ambas SMC o CSM deben ser importadas antes de abrirlas en Sysmac
Studio
– Desde ventana de inicio
• Click Import
– Con proyecto ya abierto
• File menu
• Import…
Project Management
• Revisiones de proyecto
– Guardar multiples copias del
mismo proyecto en el tiempo
– File menu, Save as New Number
– Autor y comentario se pueden
modificar
– Número es asignado
autómáticamente
– Posibilidad de incluir referencia a
librerias
– Posibilidad de activar contraseña
Project Management
• Revisiones del proyecto
– Clicar flecha con las revisiones de
proyecto realizadas
– 2 revisiones pueden ser comparadas
• Compare abre el diálogo
• File menu, Offline Comparison
– Revisiones pueden ser borradas
Screen Layout
Screen Layout
• Explorador multivista
– Posición izquierda de pantalla
– Todos los componentes del proyecto quedan accesibles
– 3 secciones principales
– Pueden ser ocultas clicando la barra baja izquierda de la pantalla
• Volver a hacer click para mostrar
Screen Layout
• Multiview Explorer
– La parte superior muestra controllers
• NJ Series, vision sensors, displacement sensors, and NX Series
Safety Control Unit
• Botón derecho, selecciona Add Device o utilizar Insert menu para
añadir nuevo controlador
• Controladores pueden ser renombrados
Screen Layout
• Multiview Explorer
– Configurations and Setup
• EtherCAT network
• CPU
• I/O módulos
• I/O Map
• Configuración del controlador
• Motion configuración
• Task configuración
• Data Trace
– Posibilidad de utilizar código de colores en el
cuadro negro para mejorar la organización
Screen Layout
• Multiview Explorer
– Programming
• POUs
– Programas
– Functions
– Function Blocks
• Data types
• Global variables
– Posibilidad de activar código colores
Screen Layout
• Multiview Explorer
– Filter
• Lista de filtros de items desde Multiview Explorer
– Seleccionar un color o item con errores
– Lista de items añadidos mostrada en ventana Filter
– “Chincheta” en la esquina derecha para bloquear ventana
Screen Layout
• Toolbox
– Parte derecha de la pantalla
– Muestra herramientas disponibles conforme a la ventana que se
muestra
• Muestra lista de módulos en configuración de CPU
• Muestra comandos de programación en Ladder
– Ocultar con click sobre la barra baja
Screen Layout
• Tab Page
– Sobre la ventana principal
– Series de pestañas
• Referencia cruzada
• Salida
• Vigilancia
• Compilar
– Encender y apagar desde el menu View o con acceso rápido por
teclado
Screen Layout
• Editar ventana
– Añadir pestañas con el botón +
• Después de abrir la pestaña, utilizar explorador multvista para
abrir el contenido
– Opción para abrir de forma automática una nueva pestaña para cada
programa
• Tools, Options, ProgrammingLayer
• Open in new tab
– Abrir automáticamente está solo disponible para programas, no para
configuración
Conexión
• 4 métodos básicos
– Directo por USB
– Directo por Ethernet/IP sobre CPU desde PC Ethernet
– Cónexión directa por USB y a través del puerto Ethernet/IP a otras
CPU’s
– Conexión Ethernet a través de Switch o hub
• Controller menu, Communications Setup
– Las 4 opciones mencionadas
– Quinta opción para seleccionar varias opciones en cada conexión
online.
Conexión
• Directo USB
– USB cable desde PC a CPU
– Drivers incluidos en el Sysmac Studio e instalados automáticamente

• Direct Ethernet
– Sin utilizar switches, hubs, etc.
– Cable Ethernet estándar desde PC a USB
– IP addresses no es requerida
Connection Setup
• Conexión remota via USB
– Conexión directa a una CPU via USB pero sin opciones de programarla
– A través de esta CPU salimos por su puerto Ethernet/IP
– Se debe indicar la dirección IP de la CPU destino
Connection Setup
• Conexión ethernet via Via Hub
– Utilizado cuando multiples CPU’s son conectadas en la red
– IP address debe ser especificado

• Opciones de configuración de comunicaciones


– Activar en el software la comparación con el número de serie y el
nombre para comprobación
– Ayuda para la verificación del proyecto de la CPU conectada
EtherCAT Configuración
• Leer red
• Configurar esclavos
• Se muestra detalles del módulo
seleccionado
– Configuración del maestr
• Nombre
• Parámetros de red
EtherCAT Configuration
• Si la conexión es posible, la configuración de la red puede ser leida de la
red real actual
– Botón derecho sobre el maestro
– Selecciona Compare and Merge with Actual Network Configuration
– Aparecerá una ventana con:
• Izquierda muestra configuración en el proyecto
• Derecha muestra la red real
– Click Apply Actual Network Configuration para salvar
EtherCAT Configuration
• Para configuración offline utilizar la caja de herramientas de la izquierda
• Los dispositivos están agrupados por tipo
• Opción de búsqueda rápida
• Todos los dispositivos Omron son cargados de forma automática
• Es posible añadir dispositivos al listado
EtherCAT Configuration
• Seleccionar y arrastrar sobre el maestro

• Configuración sobre cada nodo con el botón derecho


• Asignar nombre de estación
• Asignar número de nodo
• Posibilidad de activar /desactivar nodo
EtherCAT Configuration
• Software activa la dirección de nodo
– Si el módulo no posee switches
– O el switch está a 0
• Botón derecho sobre el módulo maestro, Write Slave Node Address
– Activar dirección en Set Value
– Click Write
EtherCAT Configuration
• Se muestra el “árbol” de red dependiendo de los nodos añadidos
EtherCAT Configuration
• NX Series
– Añadir NX-ECC201 desde el grupo Terminal Coupler
– Botón derecho y seleccionar Edit Slave Terminal Configuration
– 2 vistas pueden mostrarse: gráfica o numérica
• Botón derecho, Show Model/Unit Name
EtherCAT Configuration
• NX Series
– Añadir módulos a la cabecera desde la lista a la derecha
– Posicionar en la configuración
– Se muestra línea naranja si es posible añadir la tarjeta
– Linea gris muestra detalles de la configuración
EtherCAT Configuración
• Posibilidad de añadir módulos de terceros con archivos ESI
• Copiar archivo ESI para la localización
• Botón derecho sobre el maestro y selecciónar Display ESI Library, indicar
carpeta con el archivo
– El archivo se copiará en esta dirección

• Reiniciar Sysmac Studio para actualizar la lista


Local I/O Configuración
• En modo local, por defecto se crea: fuente de alimentación, CPU y tapa
final
• Posibilidad de añadir módulos locales a la configuración
• En la caja de herramientas se muestra los módulos disponibles
Local I/O Configuración
• Seleccionar la tarjeta y arrastrar sobre la CPU
• Editar detalles de la tarjeta en la parte derecha
– Nombre
– Filtro temporal de entradas
– Configuración de módulos especiales
Local I/O Configuración
• Añadir rack de extensión
– Botón derecho y seleccionar Add Rack
– CS1W-IC101 es añadido a la CPU
– CS1W-II101, tapa final.
– Máximo de 3 extension racks pueden crearse
• Botón derecho, Show Model/Unit Name
Local I/O Configuración
• Los detalles incluyen consumo y dimensiones

• Posibilidad de realizar la lectura de la configuración real


– Botón derecho sobre la CPU, Compare and Merge with Actual
Configuration
– Verificar diferencias
– Click Apply Actual Unit Configuration para guardar
I/O Map
• NJ Series utiliza variables para direccionar
• Todos los datos internos (bits, words, timers, etc.) son referenciados por
un nombre de variable (Tag)
• Se asignan variables para I/O de red y I/O locales
– EtherCAT módulos
– Local I/O módulos
– Se pueden contraer y expandir las variables por módulo o controlador
I/O Map. Ejemplo
• GX-MD1611 muestra
– Los nombres de la variables pueden ser creadas por el usuario
I/O Map
• Se asigna variable para cada señal que se utilizará en el programa
– Introducir un nombre diferente para cada variable
– Posibilidad de asignación de variables automática
• Botón derecho sobre el módulo o sección, pulsar Create Device
Variable
I/O Map. Ejemplo
• CJ1W-ID211 muestra las variables creadas automáticamente
– Comienza por el nombre del módulo (J04)
Controller Setup
• Configuraciones de operación
– Configuraciones básicas
• CPU modo de operación
• Configurar sistema de monitorización
• Configuración seguridad
Controller Setup
• Configuracíones de operación
– FINS
• Comunicación entre varios dispositivos
• Red indetificada por número
• Cada dispositivo puede ser referenciado individualmente
– Incluidas tarjetas del PLC rack
• Ejemplo muestra puerto Ethernet/IP como red 1

• Asignar diferentes número de red para cada módulo


Controller Setup
• Configuración de operaciones
– FINS configruaciónes
• Mitad de ventana indica tabla de rutas de la red
• Crear ruta de red remota indicando que red y número de estación
utilizaremos
– Ej. Para acceder a la red 2, ir a red 1 y estación 5

– La estación 5 tendrá 2 redes conectadas


» El número de nodo no necesita ser el mismo en ambas
redes
Controller Setup
• Operation configuraciones
– Configuración nivel de eventos
• Modificar el nivel del evento para varias categorias de eventos
• Muestra todos los eventos por defecto con su nivel
• Seleccionar Minor Fault o Observation para cada uno
Controller Setup
• Puerto Ethernet/IP de la CPU configuraciones
– 7 iconos a la izquierda para varias tablas de datos
• TCP/IP Settings
• LINK Settings
• FTP Settings
• NTP Settings
• SNMP Settings
• SNMP Trap Settings
• FINS Settings
Variable Declaration
• Lista de varibales globales en apartado Data en la sección Programming
(cualquier varibles ya creada en el I/O Map aparecerá)

– Botón derecho para añadir nuevas variables


Variable Declaration
• Detalles
– Name nombre de la variable
– Data Type tipo de dato
– Initial Value posibilidad de valor inicial
• Power on, cambio de modo a RUN, después de transferir
– AT activa direcciones de memoria al estilo CX_Programmer
• OPCIONAL!
• Prefijo “%”
Variable Declaration
• Detalles
– Retain valor retenido ante fallo de alimentación
– Constant valor constante referido al Initial Value
– Network Publish permite leer / escribir el valor desde la red
– Comment comentarios

*Posibilidad de copiar / pegar las variables mediante


Variable Declaration
• Las variables globales son creadas en la parte superior de la ventana
cuando un programa está abierto
– 2 pestañas
• Internals son variables locales
• Externals es la lista de variables globales utilizadas

• Sysmac Studio 1.08 añade flechas en la parte superior para minimizar la


ventana
Variable Declaration
• Gestión de Variable
– Cerca del fondo del menú View
– Mostrada como ventana, no bloqueada en la posición
– Se muestra listado de variables
– Ajuste de la columna
– Orden, filtrado, edición, borrado
Variable Declaration
• Gestión de Variables
– Añadir columnas con el botón derecho sobre la cabecera
– Ordenar con botón izquierdo sobre cabecera
– Muestra variables utilizadas
• Cuantas veces, en que programas, mapa I/O
Variable Declaration
• Gestión de Variables
– Filtrado con botón derecho en la columna inicial
• Busqueda por tipo o por nombre
• Eliminar filtros con botón derecho
– Botón sobre el fondo para eliminar variables sin utilizar
– Mover variables entre locales y globales
• Botón derecho sobre la variable
– Move Variable to Local cuando estamos en lista globales
– Move Variable to Global cuando estamos en lista locales
Exportar variables globales
• Exportar lista de variables a otro software
– Desde Network Configurator, exportar a archivo CSV
• Network Publish activadas como Input o Output
• No añadir variables tipo CJ
– Desde CX-Designer, exportar a ventana portapapeles
• Network Publish seleccionar Input, Output Publish Only
• No es posible exportar STRING arrays o enumerations
– Encontrar en menú Tools
Ladder Logic
Edición de operación
• Crear POUs en sección Programming
– Carpeta de programas para POU’s serán incluidas en las tareas
– Functions y Function Blocks tienen sus propias carpetas
• Botón derecho en la carpeta, crear nuevo POU
– Seleccionar Ladder o ST
• Botón derecho para renombrar
• Programas Ladder dividios en secciones para mejor organización
– Pueden ser renombradas y reordenadas
Edición de operación
• 2 Pestañas con las variables del programa
– Internals local variables
– Externals global variables usadas en el POU
Ladder Símbolos
• Por defecto, una línea vacia aparece en el programa ladder
• A la izquierda se muestra el número de línea
– Empieza en 0 y el aumento es automático
• La línea roja vertical indica error de programación en la línea
• Añadir líneas por encima o por debajo con botón derecho
Ladder Símbolos
• Diferentes formas para editar ladder
– Seleccionar y arrastar desde barra de
herramientas
• Ladder Tools grupo
– Situarse en la línea y con teclado marcar el
acceso rápido
Ladder Símbolos
• Una herramienta para todos los contactos
– Botón derecho sobre el contacto, seleccionar funciones especiales
• Invert para lógica inversa
• Diff Up para flanco de subida
• Diff Down para flanco de bajada
Ladder Símbolos
• Una herramienta para todas las bobinas
– Botón derecho sobre la bobina, acceso a las funciones especiales
• Invert para lógica inversa
• Diff Up para flanco subida
• Diff Down para flanco de bajada
• Set para mantener la variable a true
– Puede usarse con with Diff Up o Diff Down
• Reset para resetear valor de variable
– Puede usarse con Diff Up o Diff Down
Ladder Symbols
Ladder Símbolos
• Crear con el botón derecho
– Botón derecho sobre la línea que quedará
marcada en azul
– Modificar desde el botón derecho el objeto a
insertar
– Siguiendo con el botón derecho para crear la
conexión en paralelo
• Seleccionar desde el menú Insert bajo Circuit Parts
– Listado de todos los símbolos en el menú
Ladder Símbolos
• Existen acceso rápido desde teclado para introducir símbolos
– Lista completa de acceso rápido en:
• Apéndice de el Sysmac Studio Version 1 Operation Manual
• Menú ayuda (Keyboard Mapping Reference)
– Muchos son similares al CX_Programmer
Tasks Fundamentos
1.Qué es una Tarea?
• Se define como una función que especifica la condición de ejecución del
programa de usuario.
• Se cuenta con:
– Tareas periódicas
• Ejecutadas cada periodo fijo acorde a su prioridad, durante tiempo que no
ocupe la tarea principal.

– Tareas por evento


• Ejecutadas una sola vez en cuando se cumple una condición en tiempo
que no ocupa la tarea principal.

• El tiempo de ejcución y la prioridad se asignan a cada tarea.


Dos modos de configuracióbn de tareas
(Tiempo compartido) :
Esperar a que termine la tarea en
ejecución
High
Execution
priority 0
Se considera
el modo más Execution
óptimo priority 1

Execution
Una tarea de mayor prioridad priority 2
interrumpe una tarea de menor Low
prioridad

• Cuando la tarea de mayor prioridad finaliza, la tarea con el siguiente nivel de prioridad
comenzará a ejecutarse.
• Una tarea de alta prioridad puede interrupir a otra de menor prioridad dependiendo de
las especificaciones del controlador (Tiempo compartido).
2.Task del controlador NJ
2-1. Tipos de tareas
2-2. Especificaciones de Tareas
2-3. Prioridad de ejecución
2-4. Descripción de cada tarea
2-4-1. Tarea periódica primaria
2-4-2. Tarea periódica
2-4-3. Tarea por evento
2-1. Tipos de tareas
• El NJ-series Controller tiene los siguientes tres tipos de tareas.

Kind Description Number of tasks Priority

Primary periodic task Ejecutada con máx prioiridad. Ejecutada siempre en el mimos 1 4 (fixed).
periodo como el control de motion o las comunicaciones periódicas
Ethercat.
Periodic task Ejecutada por un periodo fijo mientras la “Primary periodic task” no 0-3 16,17,18
se está ejecutando.
Event task Ejecutada una vez mediante una condición siempre que la “Primary 0-32 8 (fixed), 48
periodic task” no se está ejecutando. (fixed)
Tipos de condición:
・Instruction
・Expresión de una variable
・Entrada externa de un CJ-Serie
Manejo de tareas en NJ (Tiempo
compartido)
• La ejecución de una tarea con la más alta prioridad interrumpe una
tarea menor.

High
Execution
priority 0
Execution
priority 1

Execution
priority 2 Low
2-2. Especificaciones de tareas
Item Specification
Número de programas por tarea 128 max

Periodos para la Primary periodic task 500μs, 1ms, 2ms, 4ms

Periodos para las Periodic task Deben ser múltiplos de enteros de los periodos de la Primary Periodic Task

Task periods of primary Task period of periodic task that can be set
periodic task
500μs 1ms, 2ms, 3ms, 4ms, 5ms, 8ms, 10ms, 15ms, 20ms, 25ms, 30ms, 40ms, 50ms, 60ms,
75ms, 100ms
1ms 1ms, 2ms, 3ms, 4ms, 5ms, 8ms, 10ms, 15ms, 20ms, 25ms, 30ms, 40ms, 50ms, 60ms,
75ms, 100ms
2ms 2ms, 4ms, 8ms, 10ms, 20ms, 30ms, 40ms, 50ms, 60ms, 100ms
4ms 4ms, 8ms, 20ms, 40ms, 60ms, 100ms
2-3. Prioridad de ejecución
High Number of tasks
4 Primary
1
(fixed) Periodic task

8 Event
32 max. (junto con las tareas de evento
(fixed) Task 0-32
(execution priority 48)).

Execution
Period
Priority 16 0-1
Task
(0 to 63)
Period
17 0-1
Task

Period
18 0-1
Task

48 Event
32 max. (junto con las tareas de evento
(fixed) Task 0-32
(execution priority 8)).

Low
2-4. Descripción de cada tarea

• Primary Periodic Task


• Periodic Task
• Tareas de evento
2-4-1. Primary periodic task
• Tarea con la más alta prioridad de ejecución.
• Tan solo una tarea puede ser Primary Periodic Task (Siempre necesaria).
• I/O refresco, procesos del sistema, programa de usuario y control de
motion son ejecutados con un tiempo específico.

Specified period

I/O refreshing Control processing Standby I/O refreshing


Refresh Refresh
execution Execution of user execution ・・・
System common

System common
processing 1

processing 2
Output data

Output data
program
Processing

Processing

Processing

Processing
Input data

Input data
Control
Motion

Ninguna puede interrumpir la


Primary Task
2-4-1. Primary periodic task
Características de primary periodic task
• Ejecutada con la más alta prioridad.
• Sin embargo, no influye sobre el tiempo de control de motion y el refresco
I/O. Servo Drive

Specified period Execution


command

I/O refreshing Control processing I/O refreshing

Refresh Refresh
System common

System common

Output data
execution
processing 1

processing 2
Output data

Processing

Processing
Input data
execution
Processing

Processing
Input data

Execution of
Control
Motion
user program

MC

Control de motion ejecutado tras la El resultado de la función Motion Control se


instrucción primaria. envía a través de Ethercat.
EJEMPLO:
Selección la
Configurar tarea en Prymari task tarea y su
periodo

Añadir los
programas a
ejecutar.
2-4-2. Periodic task
• Ejecuta el programa de usuario cada periodo, este periodo es múltiplo del
periodo de la Prymari Periodic Task. Se utiliza para controles con periodos
diferentes a la Prymari.
Ejemplo: El control sincronizado requiere una respuesta rápida gestionada por la Prymari Periodic Task. El
resto de sistema de control es ejecutado por la Periodic Task.

• 0 a 3 Peridic Task pueden ser asignadas.


• La prioridad se aplica a cada tarea (prioridad 16, 17, y 18.)
• El refresco I/O solo puede ser ejecutada por tarea con prioridad 16.
Task period Task period Task period

Primary
Periodic task

Task period

Periodic task
Standby
Execution priority 16
EJEMPLO:
Configuración de tarea como una Periodic Task
Selección la
tarea y su
periodo

Añadir los
programas
ejecutados por la
tarea
2-4-3. Event task
• Ejecuta el programa solo una vez cuando se produce una condición.
Ejemplo: para procesos únicos como procesos iniciales y de control que requieren respuesta rápida ante
entradas externas.
• Se aplica una prioridad a cada tarea. (Prioridad 8 o 48)
– Cuando hay dos o más tareas de evento con la misma prioridad, estas se ejecutan según el orden de
activación de la condición.
– Cuando una o varias condiciones se ejecutan al mismo tiempo, las tareas se ejecutan segúun el orden de
registro
• El refresco I/O no puede ser ejecutada con una tarea de evento.

Task period Task period

Primary
Periodic task

Execution condition
is met.
Event task User
Execution priority 8 PRG
Programación Event Task
• Permite la ejecución de POU cuando se produce la condición.
• El código de ejecucón se optimiza al ejecutar tareas solo cuando son necesarias y no de
forma continua por periodos.
• Hay dos niveles de prioridad: 8 y 48.

• Hasta 32 pueden ser activadas.

• Hasta 128 programas POU pueden ser


asignadas a cada tarea. (*2)

(*1) No se admiten condiciones de ejecución desde unidades especiales de CJ.


(*2) No se admiten refreco I/O ni motion control.
Event Task Configuración
Crear nueva
Event Task

Definir
método de
disparo
Event Task Configuración

• Execution by Instruction: El evento es activado por una FN ejecutada en el


programa Prymari Task.
• Variable Expression: El evento es activado por una expresión definida en la
configuración de tareas.
• Desde FW 1.03, una tarea de Evento puede ser activada por instrucciones de
programa
EJEMPLO:
Event Task activada por"Variable Expression"

"Emergency_Shutdown" programa programada


Sysmac Studio solicita la
en "EventTask0" condición
Cuando “temperature_MAX” es mayor
de 150, se ejecuta la tarea
EJEMPLO:
Event Task activada por "Execution by instructions"

Activación es producida en el código de programa principal (Primary Tas

"DataUpdate" programa programado


en "Event_Data"
Task Execution flow

Task:Primary
Prog:”Main”

Task: “Event_Data”
Program:”Data Update”
3. Servicios del sistema
• Son tareas de fondo que la CPU ejecuta además de las de usuario.

System service Description


USB port service Processing to service request (CIP,FINS,HTTP) such as Programming device and a HMI and a host
personal computers.
Built-in EtherNet/IP port service - Processing of service requests (CIP,FINS,HTTP) from the programming device, an HMI, a host
computers, or other Controllers.
- Execution of communications instruction (CIP, FINS, socket)
Built-in EtherCAT port service Execution of EtherCAT message communications
Service for CJ-series Special Units - Event servicing for CJ-series Special Units
- Execution of communications instructions (CIP
and FINS)
SD Memory Card service - FTP access
- SD Memory Card operations from the programing device
- Execution of SD Memory Card instructions
Non-synchronized instruction - Execution of non-synchronized instructions
service
Self-diagnosis (processing) Detection of problems such as hardware failures, firmware errors, invalid user settings, and program
errors.
3. Servicios del sistema
• Tiempo de ejecución de los servicios
Los servicios del sistemas son ejecutados por tiempo sin utilizar de la tarea de
ejecución (Estado de ejecución de todas las tareas ).
Task period

OI UP MC OI UP MC OI UP MC OI UP MC OI UP MC
Primary
Periodic task

System
Service

Servicios del sistema pueden ser retrasados pero nunca eliminados


• Cuando el tiempo de ejecución no está asegurado.
Cuando el tiempo de ejecución no está asegurado (Por defecto: Ejecuta 10% de servicios en
intervalos de 10ms), la tarea de ejecución de la Periodic Task con prioridad menor de 17 es
suspendida y el servicio del sistema es ejecutado. La ejecución de la Periodic task (prioridad
16)no es suspendida .
Task period
Priority
High Primary OI UP MC OI UP MC OI UP MC OI UP MC OI UP MC
Periodic task

Task period
Ni la Primary Periodic Task ni la
Periodic task OI UP Periodic Tasl de prioridad 16
Execution priority 16 detienen la ejecución

Task period

Periodic task
Pause
Execution priority 17

System
Service
El tiempo de ejecución de los servicios del
sistema no está asegurado.
Low Ejecuta los servicios del sistema,
suspendiendo la Periodic Task con
prioridad 17 o menor.
Como configurar los servicios del sistema
Como en el NJ las tareas tienen base de tiempos compartida, se debe asignar
un tiempo y ratio para los servicios:

Significa que el 20 % de los servicios será ejecutado en el tiempo de stand-by, y el


tiempo total para actualización de los servicios no puede exceder los 10ms.
4. Interacción entre tareas
• Cuando un dato es compartido entre tareas, se utilizan variables globales.
• El NJ-series Controller tiene dos métodos para garantizar la concurrencia
del valor de variables globales entre tareas, cuando multiples tareas
acceden a la misma variable. Estos métodos son llamados “control
exclusivo de variables en tareas”.

– Method 1: Escribir valores en variables desde una tarea y el resto


leen.
• Se utiliza el “Configuración por control exclusivo de variables en
tareas".

– Method 2: Escribir desde dos o más tareas en una variable.


• Se utiliza las"Instrucciones para control exclusivo de tareas".
4.1. Configuración por control exclusivo de
variables en tareas
Funcionamiento:
Hacer que las tareas accedan de forma programada, el valor leido en las variables globales puede
ser diferente dependiendo del tiempo de lectura.
Puede ocurrir que el valor cambie varias veces durante la ejecución de las tareas ya que la tarea
de máxima prioridad modifica el valor.
Es posible permitir el acceso a las variables compartidas para controlar la situación:
Configuración por control exclusivo
de variables en tareas

RW RO

RW RO
4.2.Instrucciones de las tareas exclusivas
Utilizar las instrucciones de control de las tareas exclusivas (Lock /Unlock instruction) cuando se
escribe valores a las mismas variables desde varias tareas.
Ejemplo:
Task B con alta prioridad intentar ejecutar el programa de rango 1 mientras la tarea A esta ejecutando el
mismo programa de rango 1. El programa rango 1 no puede ser ejecutado dos o mas veces por otras
tareas al mismo tiempo. La ejecución por la tarea B es suspendida y la tarea A ejecuta el programa
primero.

After range 1 program is executed by task A,


range 1 program is executed by task B.
EJEMPLO: Lock / Unlock

El acceso a la
Program 1 variable
Gtable1
bloqueado
por el
programa2
Analogía: Proceso simple

• El camino a de ser compartido por varios vehículos


• Los vehículos de baja prioridad limitan el camino a los de alta prioridad
Analogía: proceso en paralelo

• Los vehículos se mueven en el carril más conveniente


• Los rápidos utilizan su carril sin ser ralentizados por los que van más despacio.
• Los vehículos de servicios tienen su propio carril nunca ocupado por el resto.
NX7 Dual Motion Control Engine
• NX7 firmware automatically assigns
IEC-61131-3 to core processors in a
efficient way.
• Additionally NX7 can run 2 Motion
engines that run in 2 of the 4 I7 cores.
Motion core #1
• 5 axes in 125 us
• 50 Axes in 250 us
• 125 Axes in 500 us
• 250 Axes in 1 ms
•Motion
… up to 8ms#2
core
• Running the rest of
axes at a different
cycle
Thank you
1) Programa
2) Function Block (FB)
3) Function (FUN)

1-1. POU (Program Organization Unit)


1-1. POU (Program Organization Unit)
• Qué es POU?
– POU (Program Organization Unit) es una unidad del modelo de
ejecución del programa de usuario y está definida por IEC61131-3. El
programa de usuario esta compuesto por dos o más POU’s.

– Hay tres tipos de POUs .


• Programa
• Function Block (FB)
• Function (FUN)
1-1.POU (Program Organization Unit)
• Que es un POU?
Items Program Function Block (FB) Function (FUN)
Task allocation Possible Not possible Possible
Local variables The value is retained. The value is retained. The value is not retained.
Each instance has local variables.

Return value None None Yes


In Algorithm Language LD, ST LD, ST LD, ST
User defined FUN Possible Possible Not Possible
User defined FB Possible Possible Not Possible
Instance None Yes None
Execution condition Always executed Always executed Specified by the EN input.
EN/ENO None EN: None EN: Yes.
ENO: Yes (can be omitted.) ENO: Yes (can be omitted.)

• Las FB y FUN hasta 8 niveles de anidacion.


1-1.POU (Program Organization Unit)
• Diferencia entre (FB) y Funcion (FUN) Needs no
name
– Funcion
• No Necesita Instacia.
• No ocupa ningun area de memoria , puede ser llamada las veces
que queramos.
– Function block
Needs a
• Necesita instancias. Necesitas un nombre de instancia cada vez name
que la llamamos. (Instance)
• Ocupa un Area de Memoria.El numero de Instancias esta
limitado por el tamaño de la Memoria.
• Las instrucciones que necesiten guardar estados internos tienen
que ser FB .
1) Program
• Composicion de un Programa.
– Un programa contiene una parte de algoritmo y
una serie de variables.
Program POU Task

Program
Local variables table

Allocation Program

Algorism

FUN

FB

A Program POU is never called from other POUs.


1) Programa
• Arranque del Programa
– Orden de Ejecucion.
Tu puedes seleccionar el orden de ejecucion y a que tarea pertenece
un programa.

The execution order


Program1->Program0
2) Function Block (FB)
• Una FB esta compuesta por un algoritmo y una serie de variables.
• Una FB genera y utiliza las Instancias .
Use Image (Ladder)
Instance name
Outline of FB TONinstance
インスタンス名

FB definition is set as an instance in the program TON


Trig TimeUp
In Q

Instance name SetValue PT ET ElapValue

入力変数 出力変数
Input Output
Local variables table Input Parameter
入力パラメータ Variables Variables Output Parameter
出力パラメータ

Input parameter Input variables In-out Output parameter


variables, Output
variables, Local Use Image (ST)
variables TON_instance(In:=Trig, PT:=SetValue, Q=>TimeUp, ET =>ElapValue);
Algorithm TRIG is substituted for In (Input).
・Described in ladder
language or Structured (* When the Input variables and the Output variables are omitted. *)
Text. TON_instance(Trig, SetValue, TimeUp, ElapTime);
・All Instructions, user-
defined FUN, and user- Red: Input. Blue: Output.
defined FBs are available.
2) Function Block (FB)
Variable NJ series CJ2 series Specification (excerpt)
(number) (number)
Input variable 1 to 64 0 to 64 (*1) • At least one input variable of BOOL type is necessary.
• Upward/downward differentiation can be specified.
Output variable 1 to 64 0 to 64 (*2) • At least one output variable of BOOL type is necessary.
• Connection of output parameters can be omitted. When it is omitted, the values of output variables
are not substituted for any parameters.
In-out variable 0 to 64 0 to 16 • Constants cannot be described in input/output parameters. Only variables can be described.
• The value of an input/output parameter changes simultaneously when the value is changed in a FB.
• Input/output parameters cannot be omitted.

Local variable Unlimited Unlimited • It is a variable for temporary storage in a FB.


• The value is retained at execution and non-execution..
• The Retain property can be set.
• The value cannot be referred from outside of the FB.
External Unlimited Unlimited • It is a variable that refers to global variables.
Variable
EN 0 1 • It is not possible to use EN with a FB.
ENO 0 or 1 1 • It is an output variable of BOOL type that becomes TRUE at the normal termination and becomes
FALSE in abnormal termination or when the FB is not being executed. (It is possible to omit it. )

*1 Total number of input variables and in-out variables


*2 Total number of output variables and in-out variables
2) Function Block (FB)
Derived data type NJ series CJ2 series

Array Input variables, Output variables, In-Out Variable, Local Variables, and Local variables or In-out variables to only the one-dimensional array is available.
External Variable to a three-dimensional array is available. The maximum size is 2048.
The maximum size is 65535. (REAL/DINT/UDINT/DWORD:1024)
(LREAL/LINT/ULINT/LWORD:512)

Structure Available in Input variables, Output variables, In-out variables, Local Available in Local variables or In-out variables.
variables, and External Variable
Enumeration Available in Input variables and the Output variables, and it is internal Not available
variables, and External Variable.
Union [Unit Ver.1.0] Not available
Available in Local variables, and External Variables.
[Unit Ver.1.1]
Available in Input variables, Output variables, In-out variables, Local
variables, and External variables.
3) Function (FUN)
• Una Funcion consta de un algoritmo y una parte de variables. En ningun caso
utilizaremos en una funcion variables que necesiten memorizar algun tipo de estado.

Use Image (Ladder)


Outline of FUN MAX
Trig Done
EN ENO
Function
Value1 In1 Result

Value2 In2 戻り値


Local variable table Return Value
EN
Input parameter Input In-out Output Output parameter
variables variables variables Use Image (ST)
Local (return value)
variables Result := MAX(In1:=Value1, In2:=Value2);

Algorithm
(* When the Input variables are omitted. *)
Instruction (FB
type excluded) Result := MAX(Value1, Value2);
FUN
(* EN/ENO can be included as parameters *)
Result := MAX( EN:=Trig, In1:=Value1, In2:=Value2, ENO=>Done);

Red: Input. Blue: Output.


3)Function (FUN)
• Especificaciones :
Variable Number Specification (excerpt)
Input variable 0 to 64 • Rising edge/falling edge cannot be specified unlike the FB.
• The value cannot be referred from outside of FUN.
• The number of Input variables can be changed for some Instructions provided by Omron. However, the number of
Input variables can not be changed for FUNs that the user makes.
Output variable 0 to 64 • The output parameter connection can be omitted. The value of the Output variables is not substituted for any
parameter when it is omitted.
In-out variable 0 to 64 • The value of the input/output parameter changes when the value is changed in FUN.
• The input/output parameter cannot be omitted.
Local variable Unlimited • It is a Variable for temporary storage in the FB.
• After execution ends, the value is not retained.
• The value cannot be referred from outside of FUN.
• The Retain property cannot be set to “Retained".
External Variable Unlimited • A Variable that refers to the Global variables
EN 1 • An Input variables of the BOOL data type to start FUN.
• When the value of EN is TRUE, FUN is executed. One EN always exists.
ENO 0 or 1 • An Output variables of the BOOL data type that becomes TRUE at the normal termination and becomes FALSE in
abnormal termination or when the FUN is not being executed.. (It is possible to omit it. )
• When ENO is FALSE, FUN doesn’t output.

Return value 1 • A value that FUN returns to the part that executed the FUN as a result of processing at the termination of the
Algorithm. All Basic data type variables and Enumeration data type variable can be specified. The array and
aggregates of Structure and aggregates of Union cannot be specified.

Remarks: As there are new for NJ series, there is no comparison with the CJ series.
2.Variable
2-1. Variables Globales
2-2. Variables Locales
2-3. Atributos
2-4. Direccion Fisica.
1) I/O port
2) Memory used for CJ units
2. Variable
Variable = (Nombre) + (Tipo) + (Atributo)
• Una Variable tiene atributos como el nombre y el tipo.
• Las variables en NJ pueden ser de muchos tipos , incluso tenemos la
posibilidad de crearnos tipos de variable a nuestra medida llamadas
Estructuras.
4-1. Variables Globales
• Variables Globales
– Es posible acceder a ellas desde cualquier POU
(Program, FB, and FUN).
Global variable

POU POU

External External
Local variable variable Local variable variable
2-1. Global variables
Las variables de los elementos conectados al NJ son
creadas automaticamente por el Sysmac Studio.
2-1. Global variables
• Ejemplo. Uso de Variables Globales en un POU
– Aceso a Global variables desde el POU atraves de tabla de variables
externas.

Registration image of External Variable of POU


(Program)
2-2. Local variables
• Las variables locales son definidas y utilizadas en cada uno de los POU no
siendo posible su utilizacion en otros POUs.

* Refer to NEX Training, Sysmac Studio for details.


2-3. Atributos
2-3. Atributos
• Atributos Variable:
Attribute Description
Variable name Name to identify the Variable.
Data type Type and a range of the value that the Variable expresses.
AT specification Used when an I/O port or a specific address of the CJ unit is used as a Variable.
Retain Retains values when the power shutdowns.
Initial Value Specified at any of below situation to set an arbitrary value.
• At power ON
• When switched to RUN mode
• Initialization is specified when the Program is transferred.
Constant Prohibits changing values.
It is used so as not to change the constant setting.
Network Publish Variables can be read/written from the outside of the Controller by the CIP communications and the data link function.

Communications Prohibits writing the value by the CIP message communications.


Write Disable (to be supported in the future)
Edge Upward/downward differentiation of the Input variables can be set. (Only for Function Blocks. )
2-3. Atributos
• Tabla de atributos disponibles según tipo de variable.

Variable Program Function block Function


Global variable

type
Local Externa Local Input Output In-Out Extern Local Input Outpu In-Out Extern
Variable l Variable Variabl Variabl Variable al Variable Variabl t Variable al
Variabl e e Variabl e Variab Variab
e e le le

Name Yes Yes No Yes Yes Yes Yes No Yes Yes Yes Yes No

Data type Yes Yes No Yes Yes Yes Yes No Yes Yes Yes Yes No

Initial Value Yes Yes No Yes Yes Yes No No Yes Yes Yes No No

AT specification Yes Yes No Yes No No No No No No No No No

Retain Yes Yes No Yes Yes Yes No No No No No No No

Comment Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes

Network Yes No No No No No No No No No No No No
Published
Communications Write Yes No No No No No No No No No No No No
Disable

Edge No No No No Yes No No No No Yes No No No

Yes: can set No: can not set


2-3. Atributos
• Tabla de los atributos disponibles en las variables para cada tipo de dato
Variable kind Example Specified right or wrong
AT Retain Initializing Constant Network Publish Communica
specification tions Write
Disable

Basic data type variables aaa Yes Yes Yes(*1) Yes Yes Yes
Variable of array Aggregate bbb Yes Yes Yes(*1) Yes Yes Yes
specification
Unit of element bbb[2] No No No No No No

Structure Variable Aggregate ddd Yes Yes Yes(*1) Yes Yes Yes
Member ddd.xxx No No No No No No
Union Variable Aggregate eee Yes Yes No(*2) Yes Yes Yes
Member eee.word No No No(*2) No No No
Enumeration Variable ccc Yes Yes Yes(*1) Yes Yes Yes
Instance type variable instance No No No No No No

*1. The variable is cleared to zero when initial value is not set. Yes: can set No: can not set
*2. Initial value is always 0.
1) I/O port
2) Device variables
3) Memory used for CJ units

2-4. Direccionamiento Fisico


1)I/O port
• "I/O port" es un elemento de Union logica entre la CPU y el
Elemento Esclavo.
• Es automaticamente Generado por Sysmac Studio .

CPU Unit

User program (Or, external communicate).

Variable

Device variables Logical interface for CPU Unit to exchange


data with the outside

I/O port I/O port

The outside of CPU EtherCAT


Unit CJ unit
Slave
1)I/O port
• Ejemplo. CJ1W-AD041-V1
La direccion del I/O port se muestra como IOBus://rack#0/slot#0/Ch1_RdAI".
2) Device variables
• En el NJ las entradas y salidas no se encuentran asociadas a una direccion
fisica , sino que hemos de crear una variable que sera la que contenga el
valor de dicha entrada o salida , y sera la que utilizaremos en nuestro
programa logico.

CPU Unit

"Slave/Unit Configuration "Device variables“ is the variable


information" is generated.
"I/O port" is generated.
allocated for the I/O port. User program (or external communication)

Slave/Unit Configuration Variable


I/O port Device variables
information
Allocation Device variables

I/O port I/O port

The Variable is allocated to "I/O


The outside of CPU EtherCAT port". The Variables are called
CJ unit "Device variables".
unit Slave
2) Device variables
• Ejemplo. CJ1W-AD041-V1
Asignacion de Variables en I/0 map .

*Refer to NEX Training on Sysmac Studio for the registration method.


3) Memoria usada para CJ units
• Para guardar compatibilidad con plataformas anteriores es posible fijar
variables a direcciones fisicas , como vemos en la tabla siguiente :
Memory used for CJ Units
CJ unit memory area Retained / AT Specification
Not Retained Method
CIO 0 to 6143 Not Retained %6143.15
%W511
WR W0 to W511 Not Retained
HR (Holding Area) H0 to H511, H512 to H1535 Retained
DM (Data Memory) D0 to D32767 Retained

EM (EM Area) E0_00000 to E18_32767 Retained

Auxiliary Area (*) A0 to A1471 -

* Refer to Appendix 2-3 PLC Function Module (category: _CJB) and Functional classification: In relation of Auxiliary Area for CJ series in
NJ-series CPU Unit Software User’s Manual (W501).
Tipo de datos derivados
Derivative data type
• Tipos de datos definidos por datos básicos.

• Los derivative data types definidos en el IEC61131-3 son (soportados por


NJ):
– Array
– Structure
– Enumeration
– Range specification
– Union
Array
• Grupo datos con los mismos atributos y manejados como uno. Puede
contener datos básicos o derivados.
• Utiliza un índice para referirse a cada elemento concreto
• Número de dimensiones que pueden tener los array’s:

Classification Data type The greatest number of


dimensions
Basic data type BOOL data type, Bit string type, Integer type, REAL numbers, Duration type, Three-dimensional
Date data type, Time data type, Date and time data type, and String type

Derivative data type Structure, Union, and Enumeration Three-dimensional


POU Instance type One-dimensional
Array
– Especificaciones
Item Specification

Maximum number of elements of a variable 65535


specified as an array

Element number 0 to 65535 (The start number for elements can be any number other than 0. )

Data Types that can be specified


Classification Data type Use

Basic data type BOOL data type, Bit string type, Integer type, REAL numbers, Duration type, Date data Supported
type, Time data type, Date and time data type, and String type

Derivative data type Structure, Union, and Enumeration Supported

POU Instance type Supported

Subscript Constants: Integer between 0 to 65535.


Variable:
Classification Data type Use

Basic data type Integer type SINT, INT, DINT, USINT, UINT, and UDINT Supported
Note: Array variables are available.

LINT, ULINT Not


supported
BOOL data type, Bit string type, REAL numbers, Duration type, Date data type, Time data Not
type, Date and time data type, and String type supported
Derivative data type Structure, Union, and Enumeration Not
supported
POU Instance type Not
supported
The operational expression: The operational expression can be specified only for Structured Text.
Example) Y := x [a+b];
Ejemplo de Arrays:

• Arrays permite untilizar


un elemento como
puntero del array.
Structure
• Dos o más datos del mismo o diferente tipo. Son manejados como un solo
dato.
• Facilita la configuración de datos como su registro y cambio.

Data definition Data Type declaration


Structure Variable Box1
Structure “Box” Member

Member
Height Structure Variable Box2
Width Member
Height
Depth
Height Structure Variable Box3
Width Member
Width Height
Depth
Depth Width

Depth
Como Tipo base: definición de la estructura

Como tipo de Dato : Declaración de estructura en POU


Ejemplo estructura:
Se define la estructura:

Se declara en el programa:

Se accede a los elementos de la estructura:

Same in ST:
Structure
– Especificaciones de la estructura:
Item Specification
Structure name Upper and lower cases of alphabets are not distinguished.
The same rules as for variable names apply as the prohibited characters and the limitation of the number
of characters.
Member's Data Types
Classification Data type Use
Basic data type BOOL data type, Bit string type, Integer type, REAL Possible
numbers, Duration type, Date data type, Time data type,
Date and time data type, and String type
Array specification of BOOL data type and Bit string type Not Possible
data
Array specification of integer type, REAL numbers, Possible
Duration type, Date data type, Time data type, Date and
time data type, and String type
Derivative data type Structure (See note) and Union and Enumeration Possible
Note: The reflexive or the circulating data can not be used.
(It causes an error at program check. )
Array specification of Structure, Union, and Enumeration Possible
POU Instance type Not Possible

Member's attribute Name of member, Initial Value, Comment

Number of members 1 to 2048


Depth of hierarchy of Structure Up to eight hierarchies (Variable Name including the name of members must be 511 bytes or less.)
Maximum size of one Structure variable No limitation.
 Ejercicio: Structures
• Crear deliciosas galletas con las recetas de la abuela

• Utilizando estructuras y arrays, crear un datatype y añadir los ingredientes


utilizando número de recetas 1..3
Item Recipe 1 Recipe 2 Recipe 3
Mantequilla 30 gr 20 gr 10 gr
Chocolate 30 gr 10 gr 80 gr
Huevos 60 gr 70 gr 10 gr
Temperatura 120 200 150
Tiempo_cocción(min) 30 min 50 min 50 min
 Ejercicio: Structures
Enumeration
• Expresa el valor de una variable mediante un “nombre”.
• Se debe conocer los valores que puede tener la variable.
• Permite entender facilmente el valor de una variable.

Ejemplo. Define un Enumeration "Color“, y tres datos de "red", "yellow", y "green“ como sus enumerators
Data type definition

Enumeration # Member

Variable table
Variable name Data type
DiscColor Color
Enumeration
Especificaciones de la Enumeration
Item Specification

Enumerator Described in only alphanumeric characters. Upper and lower cases of alphabets are not distinguished. The characters you
name cannot use are the same as for variable names.
When an enumerator name is specified more than once, a compile error will occur.
When an enumerator name which is same as a variable name in the user program is specified, a compile error will occur.

Value Value must be integer in the range of -2147483648 to +2147483647.


They may not be continuous values.
When a value is specified more than once, a compile error will occur.
Note: The greatness of enumeration variables cannot be compared. They are comparable if they are consistent or not.

Number of 1 to 2048
enumerators

• NOTAS:
• Ladder muestra los Enumerators, no sus valores.
• Es posible convertir números en enumeradores y viceversa
 Ejercicio: Enumeration
• Usando el ejercicio de semáforo, crear enumeration con las luces estado
• Enumeration estados:
– GREEN
– YELLOW
– RED
– OFF_STATE: No activado.
– SERVICE: Cuando está parpadeando
 Ejercicio: Enumeration
Especificar el rango
• Para limitar el rango de valores de la variable en los siguientes tipos de
entero.
Classification Data type
Integer type SINT, INT, DINT, LINT, USINT, UINT, UDINT, ULINT

Puede ser usada en:


• Array de integer,
• Integer miembros de una estructura
• Array de integers miembros de una estructura.

• El rango es especificado en el tipo de dato


Range specification
• Especificaciones
Case Conditions Error detection
User program Constants specification OK (An error will occur by a program check).
No Constants specification NG
Communicati Writing from Sysmac Integer type Variable OK (A command error will occur by a program
on Studio. check).
CIP message
Integer-type array Variable Aggregate NG
communications
Member OK (A command error will occur by a program
check).
Member of Structure (integer type) OK (A command error will occur by a program
check).
Member of Structure Aggregate NG
(integer-type array Variable)
Member OK (A command error will occur by a program
check).
EtherNet/IP tag data Writing to a single member with range OK (An error will occur).
link specification
Writing to the Aggregate including members NG
with range specification
FINS message / All NG
Controller Link data
link
Union
• Definido para la serie NJ. Permite direccionar una variable como diferentes
tipos de datos.
Ejemplo. Divide un tipo de dato WORD en su byte a la derecha y a la izquieda y los tratas como bytes separados.
Manejo de un WORD como datos de bit.

Data type definition

Name Member

OUT16ACCESS BoolData : array[0..15] of BOOL;


ByteData : array[0..1] of BYTE;
WordData :WORD;

Variable table
Output : OUT16ACCESS; ByteData
WordData
WordData
Output.WordData := WORD#16#1234;

BoolData
External device NJ
Union Ejemplo:
Declaramos una unión:

Se utiliza en el programa:

Entonces, se accede a <MyData> indicando el bit:

O, se accede a <MyData> a nivel de palabra:


Ejercicios: Unions
• Crear una variable DWORD y mapear bits individuales para esta variable
• Mismo mapeado para variable 4 Bytes
• Mismo mapeado para variable 2 Words
Exercise: Unions
Exercise: Unions
Tipos de datos definidos por NJ
• Para facilitar la programación al usuario, algunas Function Blocks (FB) y
Functions (FUN) programadas en Sysmac, utilizan tipos de datos
derivados (Structure y Union) para sus entradas y salidas.
• Las definidas por Omron para el NJ siguen las reglas:
– Structure: comienza con "_ s", después continua con el nombre.
– Enumeration: comienza con "_ e", después continua con el nombre.
– El usuario no puede crear un tipo de dato que comience con ‘_’.
Algunos ejemplos de tipos de datos
de sistema
• Structure _sMC_CamREF

• Enumeration _e_mcDirection:
Programación Básica Ladder
Reglas Ladder: Fundamentos…

•El programa se ejecuta de ARRIBA a ABAJO


•Los elementos de un mismo nivel se ejecutan de IZQUIERDA a DERECHA
Reglas Ladder: NO, no podemos…

•Los contactos no pueden insertarse a la derecha de una línea

•No esta permitido dejar líneas vacías


Reglas Ladder: NO, no podemos…
•Sólo una bobina puede seriarse despúes de una bobina
Reglas Ladder: SÍ podemos…

•Bobinas, FBs y Funciones pueden insertarse sin necesidad de un contacto

•Los contactos y bobinas pueden insertarse por donde sea si la lógica tiene
sentido, pero ningún contacto puede insertarse en la parte más derecha de un
línea

Hasta 50 ramificaciones en
paralelo son permitidas por línea
Contactos , Bobinas e
Instrucciones de Secuencia
Contactos , Bobinas e Instrucciones de Secuencia
Contactos y Bobinas
Puedes negarlos, hacer flancos, Set, Reset, etc…
SET Bobina

Bobina
(o)
Flanco Ascendente
( @ ó Ctrl+May+U )

Contacto
Inverted Contact
(C) RESET
(/)
Bobina
Contactos , Bobinas e Instrucciones de Secuencia
R_TRIG, F_TRIG and Flancos
•IEC61131-3 define las funciones R_TRIG y F_TRIG para detectar flanco
ascendente (Rising)/descendente (Falling)
•NJ suporta tanto los flancos ascendente/descendente de OMRON como R_TRIG
(Up) y F_TRIG (Down)

¡Es necesaria una


Instancia !
Introducción Conceptos IEC: Funciones y Bloques de Función
– Función
• No necesitan instancias. Puedes introducir instrucciones fácilmente.
• No ocupan área de memoria. Se pueden utilizar infinitamente.
• Recomendable para cálculos simples e instrucciones las cuáles no
necesitan memorizar estados.
• ’AT’ is not available in Function Matemáticas, lógicas, la transferencia de
memoria son Funciones, no necesitan
– Bloque de Función instancias
• Necesitan instancias. Tienes que nombrar una instancia cada vez que
utilices un FB.
• Ocupan área de memoria. El número de uso de instancias está limitado
por el tamaño de memoria
• Indicado para instrucciones que necesiten memorizar estados internos,
como son los temporizadores, contadores… Temporizadores, contadores, SR … son FB’s,
y es necesario el uso de instancia
Ejemplo de Función y Bloque de Función
• Funciónn
• Operaciones Simples
• No tienen variables internas
retentivas
• Normalmente, no retornan valor
• Bloque de Función • No necensita instancia

• Operaciones más
complejas
• Dispone de variables
retentivas
• Varias salidas
• Es necesaria instancia
Contactos , Bobinas e Instrucciones de Secuencia
SR y RS : Set
•Estas funciones se utilizar para activa y desactivar el estado de un Bit
• SR: Prioridad al Set cuándo ambas entradas estan activas a la vez
• RS: Prioridad al Reset cuándo ambas entradas estan activas a la vez
Contactos , Bobinas e Instrucciones de Secuencia
SetBits/ResetBits
Declarando “InOut” cómo una Cadena de Bits, (BYTE, WORD, DWORD or LWORD ) ;
• SetBits: Activa “n” bits desde el nºbit “Pos” en la Cadena de Bits.
• ResetBits: Desactiva “n” bits desde el nºbit “Pos” en la Cadena de Bits.
Contactos , Bobinas e Instrucciones de Secuencia
SetABit/ResetABit
Declarando “InOut” como una Cadena de Bits, (BYTE, WORD, DWORD or LWORD ) ;
• SetABit: Activa el bit de la posición “Pos” en la Cadena de Bits.
• ResetABit: Desactiva el bit de la posición “Pos” en la Cadena de Bits
Contactos , Bobinas e Instrucciones de Secuencia
OutABit
Declarando “InOut” como Cadena de Bits, (BYTE, WORD, DWORD or LWORD ) ;
• OutABit Activa o Desactiva el bit de la posición “Pos” dependiendo del valor de
“BitVal”
Ejercicio: Programa básico en contactos
• Intenta introducir el siguiente código utilizando simplemente el ratón y el
las opciones del menú
• Haz lo mismo con el uso del teclado
Temporizadores
Temporizadores

• La serie NJ soporta 5 clases diferentes de instrucciones de


temporización:

Temporizadores Estándar
TON: Temporizador retraso a la conexión
TOF : Temporizador retraso a la desconexión
TP: Temporizador de pulso

Temporizadores Especiales
AcumulativeTimer: Temporizador Retentivo
Timer: Temporizador de 100ms
Temporizadores
• Instancia de un FB Temporizador consiste en:
Nombre_Instancia

Tipo_FB

BOOL BOOL
TIME TIME

In Entrada Temporizador BOOL


PT Tiempo a contar (Preset) TIME*
Reset Reset Temporizador BOOL
Q Salida Temporizador BOOL
ET Tiempo transcurrido TIME*

*Ver TipoDato TIME para más detalles del formato


Temporizadores
TON: Temporizador Retraso a la conexión
•La salida (Q) es TRUE cuando el tiempo transcurrido alcanza el prefijado
•La salida (Q) pasa a FALSE siempre que la entrada (In) sea FALSE

T#10ms

In
Q
PT
ET
Temporizadores
TOF: Temporizador Retraso a la desconexión
•La salida (Q) es TRUE cuando la entrada (In) es TRUE y después de pasar ésta
a FALSE, y espera a que el tiempo transcurrido alcance el prefijado y entonces
pasa a FALSE

T#10ms

In
Q
PT
ET
Temporizadores
TP: Temporizador de pulso
•La salida (Q) pasa a TRUE con el flanco ascendente de la entrada (In)
•La salida (Q) pasa a FALSE cuando el tiempo transcurrido alcance el prefijado

T#10ms

In
Q
PT
ET
Temporizadores:
Timer: Temporizador de 100ms
•La salida (Q) es TRUE cuando el tiempo transcurrido alcance el prefijado
•La salida (Q) pasa a FALSE siempre que la entrada (In) pase a FALSE
•El tiempo transcurrido incrementa en pasos de 100 ms !
•La única razon de utilizar este temporizador frente al TON es reducir el
tiempo de ejecución
Temporizadores
Acumulation Timer: Temporizador Retentivo
•El Temporizador Retentivo inicia el contaje cuando la entrada (In) pasa a TRUE y
se detiene cuando la entrada (In) pasa a FALSE (el tiempo ET es retenido)
•La salida (Q) es TRUE cuando el tiempo transcurrido alcance el prefijado
•La salida (Q) y el tiempo transcurrido (ET) son reseteados al activar la entrada de
reset (Reset)
In
PT
ET
Q
Reset

El valor es retenido incluso


cuando la entrada es FALSE
Ejercicio: Programa semáforo
• Realiza el program de un semáforo de tráfico

Operación:
– Estado Modo Normal (Enable): 3s VERDE, 2s AMARILLO, 3s ROJO
– Estado Modo Servicio (Service): 1s parpadeo luz AMARILLA
– Enlace con el HMI las variables del semáforoLink the traffic light to
GreenLight, YellowLight, RedLight

Consejos:
– Utilice Temporizadores ( TON or TOF)
– Utilice la función Get1sClk() para el parpadeo
Programa semáforo
Contadores
Contadores
CTU, CTD: Contador Ascendente (Up), Contador Descendente (Down)

•Las instrucciones Contador cuentan ascendente/descendente hasta


el Valor Prefijado, habilitando una salida

Contadores Estándar
CTU: Contador Ascendente (UP)
CTD: Contador Descendente(Down)
CTUD: Contador UP/DOWN

Nombre_Instancia Nombre_Instancia

BOOL BOOL BOOL BOOL


BOOL INT BOOL INT
INT INT
Contadores
CTU: Contador Ascendente (Up)
•Cuando hay una transición de FALSE a TRUE en la entrada (CU) el Contador Incrementa
su valor de contaje (CV)
•La entrada (Reset) reseteará a cero (CV) y pondrá a FALSE la salida (Q)
•La salida (Q) es TRUE cuando el Valor de Contaje (CV) >= Valor Prefijado(PV)

CU

Reset

CV

Q
Contadores
CTD: Contador Descendente (Down)
•Cuando hay una transición de FALSE a TRUE en la entrada (CD) el Contador Decrementa
su valor de contaje (CV)
• La entrada (Load) cargará el Valor Prefijado (PV) en el Valor de Contaje (CV) y pondrá a
FALSE la salida (Q)
•La salida (Q) pasa a TRUE cuando el Valor de Contaje (CV) = 0

CD

Load

CV

Q
Contadores
CTUD: Contador Up/Down

Este Contador UP/DOWN incluye dos nuevas salidas: (QU) y (QD) para
indicar si se el Valor de Contaje (CV) ha alcanzado el máximo o mínimo

CU
CD
CV

QU
QD
Reset
Load
Contadores
Variantes de Contadores:
•NJ incluye algunas variaciones de CTU, CTD y CTUD
•Pueden utilizarse diferentes Tipos de Datos
DINT
CTU LINT
CTD _
UDINT
CTUD
ULINT
Ejemplos:
Ejercicio: Contador Up/Down
• Utiliza contador y enlázalo con I/O

Operación:
– Entrada NX_input 1 para uso contaje ascendente
– Entrada NX_input 2 para contaje descendente
– Entrada NX_input 3 para cargar un Preset del contador de 10
– Entrada NX_input 4 para Reset del contador de 0
– Cuando se alcance el valor 10, NX_Output1 se activa a ON
– Cuando se alcance el valor 0, NX_Output2 se activa a ON

Consejos:
– Utilice CTUD
– Utilice variables enlazadas a I/O
Contador Up/Down
Instrucciones Matemáticas
Instrucciones Matemáticas
• La serie NJ soporta un rango amplio de Funciones Matemáticas:

ARITMÉTICA BÁSICA POTENCIA, LOGARITMOS, GESTIÓN DE MATRICES TRIGONOMETRÍA


ALEATORIO, FRACCIONES
ADD (+) AryAdd RadToDeg y DegToRad
AddOU (+OU) SQRT AryAddV SIN, COS, y TAN
SUB (-) LN y LOG ArySub ASIN, ACOS, y ATAN
SubOU (-OU) EXPT (**) ArySubV
MUL (*) Rand AryToBCD
MulOU (*OU) ModReal AryToBin
DIV (/) Fraction AryMean
MOD CheckReal ArySD
ABS
Inc y Dec
Instrucciones Matemáticas
ARITMÉTICA BÁSICA
•Las funciones Aritméticas Básicas operan con tipos de datos ANY_ELEMENTARY
•NJ realizará automáticamente, si es necesario, la conversión del tipo de dato.
ARITMÉTICA BÁSICA
ADD (+) MulOU (*OU)
AddOU (+OU) DIV (/)
SUB (-) MOD
SubOU (-OU) ABS
MUL (*) Inc y Dec

Ejemplo (ADD):
Instrucciones Matemáticas
ARITMÉTICA BÁSICA
• La mayoría de funciones Aritméticas Básicas soportan tipos de datos ANY_ELEMENTARY
ARITMÉTICA BÁSICA
ADD (+) : Suma
AddOU (+OU): Suma con Bit Overflow (desbordamiento)
SUB (-): Resta
SubOU (-OU): Resta con Bit Overflow (desbordamiento)
MUL (*): Multiplicación
MulOU (*OU): Multiplicación con Bit Overflow (desbordamiento)
DIV (/): División
MOD: Módulo (Resto)
ABS: Valor Absoluto
Inc* y Dec*: Incremento y Decremento de números enteros

*Suporta Tipos de Datos ANY_INT


Instrucciones Matemáticas
TRIGONOMETRÍA
TRIGONOMETRÍA • Los ángulos son tratados en radianes
•RadToDeg: Radianes a Grados Ejemplo de SIN:
•DegToRad: Grados a Radianes
•SIN Seno
•COS Coseno
•TAN Tangente
•ASIN Inversa Seno
In Out
•ACOS Inversa Coseno
•ATAN Inversa Tangente
Instrucciones Matemáticas
POTENCIA, LOGARITMO, FRACCIÓN, RANDOM,…
POTENCIA, LOGARITMOS, ALEATORIO, FRACCIONES
SQRT: Raíz Cuadrada Ejemplo de EXPT
LN y LOG: Logaritmo Natural (neperiano) y Decimal
EXPT (**) Potencia Exponencial
Rand Función Aleatoria
ModReal Resto División Número Real
Fraction Parte Fraccionaria Número Real
CheckReal* Chequea si es un Número Real

*Retorna un BOOL
Instrucciones Matemáticas
¿ST o Ladder?
¿Qué Lenguaje de Programación es mejor: Ladder o ST?
Depende del usuario y de la aplicación…

• Algunas veces… sería perfecto poder


combinar instrucciones en Ladder y ST dentro
de un mismo programa
• Esto es posible en los NJ con ST en línea

• ST en línea es muy útil para implementar


algoritmos matemáticos que normalmente
serían complicados en Ladder

No es necesario crear FB’s en ST, se puede


insertar directamente ST en líneas Ladder
utilizando la funcionalidad ST en línea.
Instrucciones Matemáticas: ¿Ladder o ST?

Ejemplo de una
suma utilizando
ST in línea
Ejercicio: Operación Matemática
• Prueba de operaciones mátemáticas

Operación:
– Prueba resolver esta fórmula en LD y ST

𝒄𝒐𝒔 _𝟐𝒂 = (cos⁡(𝒂))2 ⁡−(𝑠𝑒𝑛(𝒂))2


𝒄𝒐𝒔 _𝟐𝒂⁡ variable real
𝒂 variable real

Conclusión:
– ¿Qué lenguaje es más cómodo para una fórmula compleja, LD o ST ?
– Sacad vuestras propias conclusiones: pros & cons
Ejemplo Operaciones Matemáticas
Cadenas de Bits
Cadenas de Bits
• Los Tipos de Datos Cadenas de Bits son: BYTE, WORD, DWORD y LWORD.

Basadas en Cadenas de Bit Basadas en Array (matriz) de Cadenas de Bit


AND (&) AryAnd: ANDmatriz cadena de bits
OR AryOr: OR matriz cadena de bits
XOR AryXor: XOR matriz cadena de bits
XORN Ary XorN: XORN entre matrices cadena de
bits
NOT
Cadenas de Bits
AND, OR, XOR XORN
Estas Instrucciones realizan procesado de variables Booleanas o bits individuales
de cadenas de bits

Hasta 5 parámetros de Entrada (In..N) pueden ser operados


Cadenas de Bits
AND, OR, XOR XORN
• Tablas de la Verada:
AND OR

XOR XORN
Cadenas de Bits
AND, OR, XOR XORN
• EJEMPLO

B1 1 0 1
B2 0 1 1
Resultado
0 0 1
Cadenas de Bits
AND, OR, XOR XORN
• Cuando el número de Parámetros de Entrada es mayor de 2 ise realiza de la
siguiente manera

(Ejemplo para 5 Parámetros de Entrada):

L= Operación Lógica
Cadenas de Bits
NOT
• La instrucción NOT invierte el valor de la variable Booleana o de los bits
individuales de una cadena de bits

0 0 1 0 0 0 1 1
1 1 0 1 1 1 0 0
Cadenas de Bits
AryAnd, AryOr, AryXor, AryXorN
• Estas funciones realizan operaciones lógicas con Matrices de Cadenas
de Bits.

A[0] OR B[0]  C[0]


A[1] OR B[1]  C[1]
A[..] OR B[..]  C[..]
Cadenas de Bits
AryAnd, AryOr, AryXor, AryXorN

Ejemplo:
12 OR 2  14
17 OR 4  21
A[..] OR B[..]  C[..]
Instrucciones Comparación
Instrucciones Comparación
• Las siguientes instrucciones se utilizan para comparar:

Instrucciones Comparación
EQ(=): Igual
NE(<>): Diferente
LT(<): Menor
LE(<=): Menor o igual
GT(>): Mayor
GE(>=): Mayor o igual
Cmp: Comparación
ZoneCmp: Comparación Zona
TableCmp: Comparación Tabla
AryCmp*: Comparación Matriz
AryCmp*V: Comparación Matriz a valor

Nota.-* puede ser EQ,NE,LT,LE,GT,GE


Instrucciones Comparación
Operaciones básicas: EQ,NE,LT,LE,GT,GE
Ejemplo:
Instrucciones Comparación
Cmp
• Cmp: Genera todas las comparaciones posibles de dos valores.
Instrucciones Comparación
ZoneCmp
• ZoneCmp: la salida se pone a TRUE cuando se cumple:

MN<=In<=MX
Instrucciones Comparación
TableCmp
•TableCmp realiza Comparación de Zona de datos tabulares
•Los Datos Tabulares son una Tabla definida por una matriz de 2 dimensiones
•El Dato de Salida (AryOut) es una matriz de 1 dimensión
Table[0,n] <= In <= Table [1,n]  AryOut[n]
300 <= <= 999  FALSE
17 <= 120 <= 500  TRUE
T[..] <= <= T[..]  BOOL
Instrucciones Comparación
AryCmpqqq Comparación Matriz
•Compara dos matrices In1[ ] , In2[ ] y saca resultado en AryOut[ ]
•El número de elementos a comparar está determinado por el parámetro ‘Size’

In1[0..Size-1] qqq In2[0..Size-1]  AryOut[0..Size-1]

qqq significa :

EQ (=)
NE(<>)
LT(<)
LE(<=)
GT(>)
GE(>=)
Instrucciones Comparación
AryCmpqqq Comparación Matriz

•Ejemplo: AryCmpEQ

A[..] EQ B[..]  C[..]


7 EQ 0  False
13 EQ 13  True
Instrucciones Comparación
AryCmpqqqV Comparación Matriz Valor
•Compara la matriz In1[ ] , con el Valor In2 y saca resultado en AryOut[ ]
•El número de elementos a comparar está determinado por el parámetro ‘Size’

In1[0..Size-1] qqq In2  AryOut[0..Size-1]

qqq significa :

EQ (=)
NE(<>)
LT(<)
LE(<=)
GT(>)
GE(>=)
Instrucciones Comparación
AryCmpqqqV Comparación Matriz Valor
•Ejemplo: AryCmpEQV

A[..] EQ TestValue
 C[..]
7 EQ  False
13
13 EQ  True
Transferencia de datos
Transferencia de datos
•Las instrucciones de Transferencia de Datos copian o mueven
bloques de datos.
•Las instrucciones de Transferencia de Datos son:
Transferencia de datos básicas Transferencia de datos Matriz
MOVE AryExchange
MoveBit AryMove
MoveDigit
TransBits
MemCopy
SetBlock
ExChange
Clear
Copy**ToNum
Copy**To**
CopyNumTo**
Transferencia de datos
MOVE
•La función MOVE copia el valor del parámetro In al parámetro Out.
• Cualquier elemento de Matriz (Array), Estructura y Unión cpuede ser usado

Ejemplo: MOVE de una Estructura


Transferencia de datos
MoveBit
•La función MOVEBit puede copiar el bit (InPos) de una Cadena de Bits In al bit
(InOutPos) de la Cadena de Bits InOut
InPos

Ejemplo: 5 4 3 2 1 0
MyWORD=&34
1 0 0 0 1 0
(In)

5 4 3 2 1 0
MyWORD2=>3
0 0 1 0 0 0
(InOut)

InOutPos
Transferencia de datos
MoveDigit
•La función MoveDigit copia uno o más dígitos (Size), de una cadena de bits (In) empezando por un
dígito (InPos) a otra cadena de bits (InOut) a partir de un dígito (InOutPos).

Ejemplo: InPos

3 2 1 0
In 1 2 3 4

3 2 1 0

InOut 2 3 0 0

InOutPos
Transferencia de datos
TransBits
•La función TransBits copia uno o más bits (Size), de una cadena de bits (In) empezando por un bit
(InPos) a otra cadena de bits (InOut) a partir de un bit (InOutPos).

InPos
Ejemplo: In
7 6 5 4 3 2 1 0

1 1 1 1 1 1 1 1

InOut
7 6 5 4 3 2 1 0

0 0 0 1 1 1 0 0

InOutPos
Transferencia de datos
MemCopy
•MemCopy copia dos o más elementos (Size) de una matriz (In) a otra matriz
(AryOut).
Ejemplo:

Size=3
In[0]
6 5 4 3 2 1 0
700 600 500 400 300 200 100

AryOut[2]
6 5 4 3 2 1 0
0 0 300 200 100 0 0
Transferencia de datos
SetBlock
•SetBlock relleta una cantidad de elementos (Size) de una matriz (AryOut) con un
valor (In).
Ejemplo:

In
100

AryOut[ ]
6 5 4 3 2 1 0
0 0 100 100 100 0 0

Size=3
Transferencia de datos
Exchange
•Los valores de dos variables (InOut1 y InOut2) son intercambiados
Transferencia de datos
AryXChange
•Intercambia los valores de una cantidad (Size) de elementos entra dos matrices (InOut1 y
InOut2)
Transferencia de datos
AryMove
•Anteriormente, hemos mencionado la función MemCopy, la cual copia dos o más elementos (Size) de
un elemento de una matriz (In) a otro elemento de otra matriz (AryOut).
•La instrucción AryMove es idéntica pero los tipos de datos de las matrices pueden ser diferentes

•Cuando son los mismos tipos de datos, MemCopy es más rápida.


Size=3
In[ ]
6 5 4 3 2 1 0
700 600 500 400 300 200 100

AryOut[ ]
6 5 4 3 2 1 0
0 0 300 200 100 0 0
Transferencia de datos
Clear

•Pone a cero el valor de la variable InOut.


Transferencia de datos
Copy**To**
•La familía de funciones Functions Copy**To** realizan una copia a nivel de BIT

WORD
7 6 5 4 3 2 1 0

… 0 0 0 0 0 1 1 1
INT 7 6 5 4 3 2 1 0

… 0 0 0 0 0 1 1 1

LREAL … 0 0 0 0 0 1 1 1

Вам также может понравиться