Inicio > Foro > controladores SlimLine e Netsyst (LogicLab) > Módulos de expansión de velocidad de adquisición de entrada digital
- Este tema tiene 4 respuestas, 3 participantes y se actualizó por última vez 9 años, hace 3 meses da Sergio Bertana.
-
autorPublicación
-
Agosto 8, 2012 en 8: 58 pm #35265Anonimoinactivo
Mirando la hoja de datos de hardware de los módulos slimline, puede ver que hay entradas llamadas de alta velocidad, ¿cuál es la diferencia en comparación con las otras entradas disponibles?
Si desea leer impulsos del codificador con la frecuencia máxima 200Hz, también puede usar entradas de velocidad no alta?
Agosto 9, 2012 en 6: 40 am #37367Sergio BertanaAdministrador del foroLas entradas de alta velocidad están hechas con optoacopladores muy rápidos y pueden adquirir señales de entrada con una frecuencia máxima de 50 Khz. Todas las demás entradas tienen optoacopladores lentos y pueden adquirir señales de entrada con una frecuencia máxima de 10 Khz. Pero más allá del límite de velocidad eléctrica, es necesario ingresar a la lógica operativa del módulo de adquisición para comprender sus posibilidades y límites.
Se instala un filtro digital de 5 mS en todas las entradas (incluso las rápidas) que limita la frecuencia máxima de adquisición a 200 Hz. El filtro se ha insertado para cortar las señales de rebote (Debouncing) de los contactos eléctricos, un PLC debe adquirir señales provenientes de transductores electromecánicos y deben garantizar su correcta adquisición.
En las entradas rápidas hay un circuito de conteo que usa la señal antes del filtro permite gestionar un codificador en cuadratura con una frecuencia máxima igual a la típica del optoacoplador.
Agosto 9, 2012 en 6: 52 am #37368Sergio BertanaAdministrador del foroPero para responder a su pregunta, le recuerdo que el FB existe en la biblioteca de bloques de funciones IOEncoder, codificador incremental sobre E / S (ver extracto manual). Conectando dos entradas digitales a este bloque de funciones, es posible adquirir un codificador incremental en ellas.
Por supuesto la frecuencia máxima que puedes gestionar depende de la velocidad con la que se ejecute el bloque de funciones, asumiendo usar las dos entradas del módulo de CPU para la adquisición (no tienen filtro) creando un programa de escalera simple como el del manual, puedes inserta el programa en la tarea rápida y ejecutándolo cada 1 mS puedes administrar encoders con una frecuencia máxima de 200 Hz (Ver nota de aplicación).
También puede realizar la adquisición de entrada directa a través del bloque de funciones SysGetPhrDI, obtenga una entrada digital periférica y luego asigne las entradas a varias instancias del bloque de funciones IOEncoder gestionar varios codificadores.
Enero 11, 2015 en 9: 45 am #38634Maurizio ContipartícipeEstoy adquiriendo una batería DI con él SlimLine a partir del siguiente código:
PARA i: = 0 TO 21 DO
(* CASO i DE
0..5: DIN [i]: = SysCPUDI [i];
6..21: DIN [i]: = SysDI00 [i-6];
END_CASE; *)CASO i DE
0: DIN [0]: =% IX255.0;
1: DIN [1]: =% IX255.1;
...
21: DIN [21]: =% IX0.15;
END_CASE;
END_FOR;Mientras que el CASE sin comentar funciona, cuando intento compactar el código (código comentado) obtengo los siguientes errores: SysCPUDI => Las variables complejas no pueden tener imagen de proceso
SysDI00 => Las variables complejas no pueden tener imagen de procesoSin embargo, acceder al elemento de matriz SysDI00 dentro de la ventana de inspección no causa problemas. Qué estoy haciendo mal ?
También te pregunto, si quieres adquirir las DI a través de Modbus, ¿es aconsejable / preferible usar el estado de entrada de lectura (FC = 02) o colocarlos en una variable interna y encender con la función de lectura de registros de retención (FC = 03)?
Enero 12, 2015 en 1: 54 pm #38635Sergio BertanaAdministrador del foroEl problema está en la forma en que se gestiona la imagen del proceso de E / S, encuentre más información en este tema. En la práctica, las entradas digitales son adquiridas por el sistema operativo en la tarea Lenta y se transfieren a las variables UDINT SysCPUDI y SysDIxx, luego se transfieren a la tabla de variables BOOL% IXxx.
Cuando un programa hace referencia a una variable% IXxx LogicLab comprueba qué tarea está ejecutando el programa y si es la tarea Lenta, se refiere a la variable real, si es la tarea Atrás realiza una copia de la variable real en una variable de apoyo creando una imagen de proceso.
La imagen del proceso, llamémosla una copia, se realiza automáticamente solo en las variables% IXxx, por lo que la solución a su problema es ejecutar el programa en la tarea Lenta.
Con referencia a la adquisición de Modbus, tanto el comando 16 # 02 Leer estado de entrada que 16 # 03 Leer registros de tenencia, tienen aproximadamente la misma longitud en bytes en la trama de respuesta, por lo que a nivel de trama son comparables. Luego, por supuesto, el primero le devuelve una matriz de BOOL, mientras que el segundo devuelve una o más palabras que aún tendrá que descomprimir para obtener los valores en las variables BOOL.
-
autorPublicación
- Debe iniciar sesión para responder a este tema.