La serie NI-XNET de interfaces CAN, LIN y FlexRay es una combinación de interfaces CAN, LIN y FlexRay aceleradas y software controlador NI-XNET. Las interfaces NI-XNET ofrecen muchas ventajas de rendimiento, facilidad de uso y soporte a largo plazo frente a los productos NI-CAN legados, como las interfaces PCI/PXI/PCMCIA de la Serie 2.
Para ofrecer rendimiento de próxima generación y facilidad de uso en interfaces NI-XNET CAN, LIN y FlexRay, NI diseñó una nueva API para productos NI-XNET. NI reconoce la gran base de instalación de aplicaciones escritas en la antigua API NI-CAN y la necesidad de mantener esas aplicaciones a largo plazo.
Para facilitar la transición de aplicaciones escritas para NI-CAN a NI-XNET y ayudarle a beneficiarse de las nuevas características de las interfaces NI-XNET, el controlador NI-XNET incluye una capa de compatibilidad NI-CAN que emula las llamadas a funciones NI-CAN a nivel de controlador. Debido a que esta funcionalidad se instala a nivel de controlador, la mayoría de las aplicaciones escritas con NI-CAN requieren algunos cambios mínimos para funcionar de inmediato con NI-XNET. Hay algunas diferencias notables entre los dos controladores que debe tener en cuenta cuando comience a trabajar con interfaces NI-XNET.
En este artículo se explica cómo utilizar la biblioteca de compatibilidad NI-CAN para implementar aplicaciones NI-CAN con hardware NI-XNET nuevo. También examina posibles problemas de compatibilidad y cómo realizar la transición de conceptos NI-CAN familiares a la API NI-XNET.
Para obtener más información sobre los conceptos básicos de las API del canal NI-CAN, lea La API del canal NI-CAN.
Si está comenzando a escribir una nueva aplicación con NI-XNET, no necesita la capa de compatibilidad. Solo lo necesita si desea utilizar aplicaciones NI-CAN existentes con dispositivos NI-XNET.
La biblioteca de compatibilidad admite dispositivos y módulos de interfaz CAN y LIN. No admite dispositivos y módulos de interfaz multiprotocolo de vehículos, como el PCIe-8510, el PXIe-8510 y el NI 9860, que requieren un cable transceptor. Tampoco soporta módulos LIN de la Serie C ya que no existe un equivalente basado en NI-CAN.
Para que las aplicaciones existentes funcionen, se deben instalar controladores NI-XNET y NI-CAN. El paquete de instalación NI-XNET contiene todos los componentes necesarios para que la biblioteca de compatibilidad funcione. Consulte Instalación de la biblioteca de compatibilidad NI-XNET para NI-CAN para obtener instrucciones detalladas.
En términos generales, la API NI-CAN está asociada con equipo CAN heredado, incluidas las interfaces CAN de la serie 2. NI-XNET es el controlador principal para las interfaces NI-XNET CAN, LIN y FlexRay de próxima generación. Las nuevas aplicaciones para interfaces NI-XNET utilizan el controlador NI-XNET y la API.
Si tiene una aplicación existente que utiliza NI-CAN, NI proporciona una biblioteca de compatibilidad para ayudarle a reutilizar ese código con las interfaces NI-XNET CAN C Series, PCI y PXI más recientes. Las características de la biblioteca de compatibilidad se aplican a la API NI-CAN, no a NI-XNET. Consulte el Manual de hardware y software NI-CAN para obtener más información sobre las características de la biblioteca de compatibilidad.
Si su aplicación existente utiliza NI-CAN y tiene la intención de utilizar solo hardware NI-XNET CAN Serie C, PCI y PXI a partir de ahora, es posible que desee realizar la transición de su código a NI-XNET. NI-XNET unifica muchos conceptos de la API NI-CAN anterior, pero las características clave son similares. La siguiente tabla hace referencia cruzada a términos NI-CAN y términos NI-XNET análogos.
Nota: Consulte Opciones de migración para la interfaz CAN USB-8472/73/76 para obtener más información.
| Término NI-CAN | Término NI-XNET | Comentario |
|---|---|---|
| Archivo CANdb | Base de datos | NI-XNET admite más formatos de archivo de base de datos que la API del canal NI-CAN, FIBEX, .DBC y .NCD. |
| Mensaje | Marco | "Frame" es el término industrial para los bits que se transfieren en el bus. Este término se utiliza en estándares como CAN y FlexRay. |
| Canal A | Señal | "Señal" es el término de la industria utilizado en estándares como FIBEX. |
| Tarea API de canal | Sesión (E/S de señal) | A diferencia NI-CAN, NI-XNET admite el uso simultáneo de E/S de canal (señal) y E/S de trama. |
| API de tramas Objeto (cola Longitud cero) | Sesión (marco de E/S de un solo punto) | El Objeto NI-CAN CAN proporcionó tanto entrada (lectura) como salida (escritura) en un objeto. Para un mejor control, NI-XNET ofrece un objeto diferente para cada dirección. Si la longitud de la cola NI-CAN para una dirección es cero, eso es análogo a NI-XNET Frame I/O Single-Point. |
| API de tramas Objeto (cola Longitud distinta de cero) | Sesión (en cola de E/S de fotogramas) | Si la longitud de la cola NI-CAN para una dirección no es cero, eso es análogo a NI-XNET Frame I/O Queueed. |
| API de marco Interfaz de red Objeto | Sesión (Frame I/O Stream) | El objeto de interfaz de red NI-CAN proporcionaba tanto entrada (lectura) como salida (escritura) en un objeto. Para un mejor control, NI-XNET proporciona un objeto diferente para cada dirección. |
| Interfaz* | Interfaz | NI-CAN inició los nombres de interfaz en CAN0, pero NI-XNET inicia en CAN1 (o FlexRay1). |
| Periódico | Cíclica | NI-CAN usa el término "periódico", pero el NI-XNET Database Editor y los nodos de propiedades NI-XNET usan el término "cíclico". |
Tabla 1. Términos NI-CAN y términos NI-XNET análogos
La siguiente figura destaca la diferencia de numeración entre NI-XNET y NI-CAN. La parte superior "CAN0" corresponde al nombre del puerto NI-CAN para usar el primer puerto de la placa PCI-8513. Puede usar este mismo puerto con la API NI-XNET usando CAN1. Puede cambiar el nombre de los puertos NI-CAN para que sean los mismos que los puertos NI-XNET – esto no causa ningún problema.
Figura 1. Diferencia de numeración entre NI-XNET y NI-CAN
Nota: Si se instala la capa de compatibilidad NI-CAN, una interfaz NI-XNET aparece dos veces en NI Measurement & Automation Explorer (MAX). Esto es normal porque ambos controladores reportan la presencia de la placa a MAX – una entrada es para la unidad NI-CAN, y la otra para NI-XNET.
La siguiente figura muestra una situación similar, excepto que utiliza un objetivo en tiempo real (RT). Los dispositivos NI-XNET se muestran bajo el objetivo de RT en MAX, pero los dispositivos NI-XNET que NI-CAN utiliza a través de la capa de compatibilidad se muestran solo bajo la herramienta Configuración de hardware NI-CAN RT. Puedes ver que CAN1 en NI-XNET es el mismo puerto que CAN0 bajo NI-CAN.
Figura 2. Visualización de interfaces CAN para su uso con NI-XNET y la capa de compatibilidad tiene una vista diferente.
Para abrir la ventana Configuración de hardware NI-CAN RT, inicie MAX y seleccione Herramientas » NI-CAN » Configuración de hardware RT y, a continuación, proporcione la dirección IP del destino de RT.
Si bien la biblioteca de compatibilidad NI-XNET para NI-CAN se esfuerza por garantizar la funcionalidad básica, no siempre puede asignar completamente la biblioteca de NI-CAN a NI-XNET debido a características específicas de hardware o diferencias principales en la plataforma NI-XNET.
A continuación se muestran algunas de las principales funciones incompatibles junto con soluciones alternativas. Para obtener una lista más completa, consulte el Manual de hardware y software NI-CAN para la versión 2.7 o posterior.
Esta característica está disponible en hardware NI-XNET; sin embargo, la nueva arquitectura no proporciona una forma de mantener la compatibilidad. Si su aplicación requiere esta función, debe actualizar su código para usar la API NI-XNET. Para obtener más información sobre cómo manejar marcos remotos con la API NI-XNET, consulte el Manual de hardware y software NI-XNET.
Esta característica está disponible en algunos de nuestros hardware NI-XNET. Los modelos PCI-8513 y PXI-8513 son ejemplos de hardware de XNET que opcionalmente pueden usar transceptores externos.
Las interfaces NI-XNET detectan automáticamente la frecuencia de entrada del reloj y se sincronizan sin ningún parámetro del usuario. Debido a que este proceso es automático, ya no tiene la opción de cambiar la tasa de la base de tiempo maestra. Las interfaces NI-XNET admiten diferentes velocidades de reloj para la sincronización (1 MHz, 10 MHz y 20 MHz) sin cambiar explícitamente la base de tiempo maestra. Las tarifas de 1 MHz y 10 MHz también están disponibles para la exportación.
NI-XNET ofrece una nueva forma de registrar errores de bus. En lugar de registrar tramas CAN con el código de estado de bus, ahora simplemente puede leer el estado de bus:
Figura 3. Los errores de bus ahora se pueden ver observando el estado del bus.
Esta característica es nativa de la API NI-XNET; la compatibilidad con NI-CAN no es posible.
NI-XNET ahora utiliza solo el formato de sello de tiempo absoluto. Sin embargo, las funciones están disponibles para obtener una marca de tiempo de eventos específicos. Con estas marcas de tiempo, puede calcular el tiempo "relativo" a partir de diferentes referencias sin tener que volver a capturar datos en otro formato.
Figura 4. NI-XNET utiliza las marcas de tiempo absolutas, pero todavía hay maneras de obtener marcas de tiempo relativas.
Si necesita esta función, debe cambiar su código para usar la API NI-XNET.
Esta característica no estaba disponible en NI-XNET 1.0, pero se introdujo en NI-XNET 1.1. La función ahora se llama "CAN Replay".
Figura 5. La configuración de una reproducción CAN se puede hacer con un flujo de salida de fotogramas.
NI-XNET tiene características RTSI para sincronizar una base de tiempo y un disparador de inicio. Sin embargo, no es posible configurar eventos (en otras palabras, transmitir una trama CAN) en un pulso RTSI. Tampoco es posible configurar eventos RTSI basados en eventos CAN.
Es posible que necesite modificar su aplicación para utilizar la API NI-XNET por una variedad de razones. En la siguiente sección se describe cómo cambiar el código NI-CAN para usar la API NI-XNET.
La siguiente información está destinada a ayudarle a traducir conceptos familiares de NI-CAN a NI-XNET para ayudar en la transición de código. No cubre todas las aplicaciones posibles. Si necesitas ayuda para convertir cualquier parte de tu código, contacta con NI.
Las interfaces NI-CAN requieren configuración antes de poder abrirlas. En NI-XNET, primero crea una sesión en la interfaz y, a continuación, puede usar nodos de propiedades para cambiar cualquier propiedad de la sesión. Este es el mismo modelo utilizado por muchas otras API de NI, incluyendo NI-DAQmx.
Figura 6. La configuración de las propiedades del bus se realiza de forma diferente en NI-XNET que en NI-CAN.
Marcos de lectura es similar en NI-CAN y NI-XNET:
Figura 7. El código necesario para leer cuadros en ambas APIs es muy similar.
Con el aumento de rendimiento y la nueva arquitectura de motor DMA impulsada por dispositivo NI, no es necesario consultar el dispositivo NI-XNET para ver cuántos fotogramas están disponibles. Esto se requería en NI-CAN por razones de rendimiento. La funcionalidad sigue disponible en NI-XNET pero ya no es necesaria para leer todos los fotogramas disponibles. (-1 entrada en la función nxRead devuelve todos los fotogramas disponibles.)
Figura 8. Consultar cuántos marcos están disponibles es más fácil con NI-XNET.
El formato de trama presenta información similar en NI-CAN y NI-XNET pero se presenta de una manera ligeramente diferente:
Figura 9. Datos de trama similares están contenidos en cada clúster para NI-CAN y NI-XNET.
El nxWrite (Frame CAN).vi en NI-XNET utiliza una matriz de tramas como entrada. Por lo tanto, si desea enviar un solo marco, debe crear un arreglo de un marco.
Figura 10. El envío de datos de trama en NI-XNET requiere una matriz de datos para ser una entrada.
NI-XNET utiliza la longitud del array para saber cuántos frames escribir.
Figura 11. Llamadas a funciones similares están disponibles en NI-CAN y NI-XNET para el envío de tramas.
En NI-CAN, escribir tramas periódicas con la API Frame requiere configurar un objeto para cada trama a enviar o recibir. Las interfaces NI Serie 2 CAN tienen un límite de 49 objetos.
Figura 12. Enviar un marco de período en NI-CAN requiere configurar objetos con llamadas a funciones separadas.
La configuración de fotogramas periódicos individuales en NI-XNET es ligeramente diferente. Con una estrecha integración NI-XNET con bases de datos de señales y tramas, la forma más fácil de aprovechar las tramas periódicas en NI-XNET es utilizar un archivo de base de datos FIBEX para describir las tramas que utiliza la red. Cuando utiliza la base de datos FIBEX, el controlador NI-XNET configura y gestiona automáticamente los fotogramas periódicos sin interacción adicional de la aplicación.
Por ejemplo, considere configurar una trama periódica (conocida como "cíclica" en NI-XNET) en la base de datos con el ID de arbitraje, la longitud de la carga útil y el período. Una vez configurada y guardada, la aplicación puede utilizar una sesión de un solo punto para transmitir o recibir esta trama. El control de E/S carga dinámicamente todos los fotogramas de una base de datos, lo que facilita la selección de los fotogramas en la aplicación. Debe configurar un alias que le indique a NI-XNET qué base de datos utilizar para que esta funcionalidad funcione, lo que se analiza en la siguiente sección.
Figura 13. El envío de tramas periódicas en NI-XNET puede simplificarse significativamente.
Al abrir una sesión, el controlador NI-XNET lee todos los ajustes de la base de datos. Luego configura una transmisión y/o recepción cíclica en el controlador y Firmware NI-XNET. Desde la aplicación, simplemente actualiza el valor y NI-XNET transmite automáticamente el valor más nuevo durante el siguiente ciclo. NI-XNET también cuenta con sesiones en cola, que puede utilizar para poner en cola muchos valores.
La ventaja clave del uso de bases de datos de señales es la mantenibilidad del código. La actualización de la base de datos actualiza automáticamente el código, sin requerir cambios de código para rastrear los cambios en el ID de arbitraje, las tasas de transmisión, las definiciones de bits, etc. Si desea cambiar un parámetro, simplemente puede cambiar el archivo de base de datos. No se necesitan cambios en el código.
NI-XNET proporciona funciones para cambiar los valores cargados desde el archivo de base de datos mediante programación. Esto no cambia los valores reales escritos en su archivo de base de datos, solo los valores cargados por el controlador NI-XNET en tiempo de ejecución.
Figura 14. Las funciones de bajo nivel se pueden utilizar para configurar el envío de tramas periódicas en NI-XNET.
Si no desea tener un archivo de base de datos y desea establecer todo en tiempo de ejecución, también puede crear una base de datos "en memoria". De esta manera, puede desarrollar una configuración de red completa de forma programática y utilizarla en su aplicación. Puede ver el ejemplo de CAN Dynamic Database Creation.vi ubicado en Ayuda»Encontrar ejemplos en Entrada y salida»CAN»NI-XNET»Bases de datos (edición y administración).
Muchos de los ejemplos de API de marco NI-CAN tienen ejemplos NI-XNET similares.
Puede elegir entre dos técnicas principales para editar un archivo de base de datos: antes o durante el tiempo de ejecución. Para editar un archivo de base de datos antes de su ejecución en NI-CAN, se requiere el editor de bases de datos en MAX. NI-XNET mueve toda la edición de bases de datos en un editor de bases de datos independiente. Puede iniciar el editor de bases de datos desde Inicio»Todos los programas»National Instruments»NI-XNET Database Editor.
Figura 15. NI-XNET Database Editor es una herramienta independiente para editar bases de datos CAN.
Lea más sobre el Editor de bases de datos NI-XNET en la Introducción a FIBEX y el informe técnico Editor de bases de datos NI-XNET.
NI-XNET cuenta con funciones para editar un archivo de base de datos FIBEX mediante programación. Puede utilizar estas funciones para integrar herramientas de manipulación de bases de datos personalizadas en su aplicación. Vea los ejemplos de envío de software de NI LabVIEW yendo a Ayuda »Encontrar ejemplos y navegando a Entrada y salida de hardware»CAN»NI-XNET»Bases de datos (edición y administración).
En NI-CAN, debe apuntar su aplicación al archivo .DBC o .NCL en su disco duro. En NI-XNET, primero debe agregar un alias al archivo de base de datos (.DBC, .NCL o FIBEX .xml) antes de ejecutar la aplicación. Puedes lograrlo de varias maneras diferentes. Puede abrir el ejemplo llamado CAN Signal Input Single Point.vi ubicado en Hardware Input and Output»CAN»NI-XNET»Intro to Sessions»Signal Sessions. Haga clic derecho en la lista de señales y vaya a Examinar archivo de base de datos para seleccionar su archivo de base de datos en el disco. El controlador NI-XNET crea automáticamente un alias para esta base de datos para que pueda seleccionarla fácilmente de nuevo.
Figura 16. Seleccionar una base de datos en NI-XNET permite hacer referencia a ella en una aplicación.
El NI-XNET I/O Control lee automáticamente el archivo de la base de datos y rellena todos los nombres de las señales. Esto hace que sea muy fácil elegir qué señal usar en su aplicación.
Figura 17. El control se actualiza automáticamente con las señales disponibles en la base de datos.
En la siguiente imagen se comparan los diagramas de bloques para escritura de canal/señal de punto único NI-CAN y NI-XNET. La lectura es similar y los ejemplos de características de ambos controladores.
Figura 18. El envío de datos de un solo punto es similar en NI-CAN y NI-XNET.
Leer y escribir datos de forma de onda también es similar en NI-CAN y NI-XNET, y cada controlador cuenta con ejemplos para comparación.
Figura 19. La lectura y escritura de formas de onda es similar en ambas API.
Una diferencia es que NI-XNET utiliza una tasa de muestreo predeterminada de 1000. Puede cambiar fácilmente la frecuencia de muestreo utilizando un nodo de propiedades.
Figura 20. La tasa de remuestreo de una forma de onda se puede configurar con una propiedad.
Modo NI-CAN | NI-CAN SampleRate | Modo NI-XNET | Notas |
|---|---|---|---|
| Entrada | 0 | Entrada de señal, punto único | N/A (sin propiedades adicionales) |
| Entrada | >0 | Entrada de señal, forma de onda | Utilice NI-CAN SampleRate para establecer la propiedad Sesión > Tasa de muestreo. |
| Salida | 0 | Salida de señal, XY | Para cada fotograma, utilice la API de la base de datos NI-XNET para establecer CAN > Tipo de temporización a datos de evento y CAN > Tiempo de transmisión a cero (sin rebote). |
| Salida | >0 | Salida de señal, forma de onda | Para cada trama, utilice la API de la base de datos NI-XNET para establecer CAN > Tipo de temporización a datos cíclicos y establezca CAN > Tiempo de transmisión al NI-CAN 1/SampleRate |
| Salida/reciente | >0 | Salida de señal, punto único | Para cada fotograma, utilice la API de la base de datos NI-XNET para establecer CAN > Tipo de temporización a datos cíclicos y establezca CAN > Tiempo de transmisión a la frecuencia de muestreo/1 NI-CAN. |
| Entrada con sello de tiempo | N/A | Entrada de señal, XY | N/A (sin propiedades adicionales) |
Tabla 2. Esta tabla muestra las diferencias fundamentales entre las tasas de muestreo NI-CAN y NI-XNET para la comunicación CAN.
En NI-CAN, puede usar una base de datos directamente en el disco. En NI-XNET, normalmente crea manualmente un alias a ese archivo para que pueda usar el NI-XNET I/O Control en su aplicación. Sin embargo, si está distribuyendo su aplicación o desea emular el comportamiento NI-CAN, puede crear mediante programación un alias de base de datos para un archivo en el disco. Para hacerlo, vea el ejemplo de Administración de bases de datos locales.vi ubicado en Entrada y salida de hardware»CAN»NI-XNET»Bases de datos (edición y administración).
La capa de compatibilidad NI-XNET para NI-CAN simplifica enormemente la transición del código NI-CAN para aprovechar las interfaces NI-XNET CAN y FlexRay de próxima generación. A pesar de diferencias menores, la mayoría de las aplicaciones NI-CAN funcionan con poca o ninguna modificación en el hardware NI-XNET cuando se usan con la capa de compatibilidad.