Good afternoon. I am trying to determine if one of the USB-C ports on a cRIO can be used to communicate with a device. Specifically, I may need to add RS-232 communication to a multimeter from a cRIO-9053 that is fully populated (it has a module in each of its 4 slots). Can I obtain a USB to RS232 adapter that will work with VISA on a cRIO?
Thanks for your help,
Solved! Go to Solution.
I won't say for certain yes, but I've done this with a USB adaptor and a cRIO-9045 (before I had the cable for the built-in port, which I'm now using instead).
It definitely works but may a bit depend on the chip used in the interface converter. FTDI works usually right away, others like Silicon Labs and similar can require you to do some configuration file fiddling as the port otherwise gets installed (mounted) with access rights that won’t allow NI-VISA to access them under the standard user account.
Possible complication might be the use of the USB-C port as that will likely mean new controller chip versions that may not yet be supported by the USB drivers that come with NI-Linux.
In the worst case it might mean that you have to download the source of the driver and compile it for your system.
From the OS perspective I suspect it'll work for you just fine. Here is a pretty old unmaintained list of USB devices that have worked on the Linux RT OS. I have about a dozen random USB to serial devices, some with Prolific, some FTDI and I haven't found one that doesn't work in my cDAQ that is running Linux RT. They just show up in MAX as VISA devices. I've even had success with an 8 port serializer like this one. There was a limitation that I think is still in place that there can only be 14 USB serial ports due to a limitation in the kernel in respect to xhci. That being said I've never actually used your hardware so it is possible it won't work right.
Oh and here is another article from NI.
Just to beat a dead horse, I would like to know if anyone has had good experience using a USB to RS232 adapter with an Intel-based RT Linux cRIO. From what I understand, this covers the cRIO 9030s, 9040s, and 9050s. If so, could you post what adapter you used? Thanks.
I wouldn’t really expect any differences between ARM and Intel based targets in this. The LabVIEW version is likely more important as each version uses a slightly newer kernel.version and according matching device driver modules.
I did in the past use a SiliconLabs based CP2102 adapter on Arm targets in labVIEW 2014 and 2016 i believe. In both cases I had to change some module load scripts to have the ports mounted on bootup with access rights that set them to user access rights that allowed the lvuser account to access them but the actual module loader had been changed from mdev to udev between those versions so the scripts that needed changing were different and the syntax too!
After these changes the devices got mounted at boottime correctly and would use fine. I wrote a report here on NI about this back then but stopped doing that as you can’t find them anyway on here and with the frequent restructuring, storing links somewhere is totally useless.
It’s possible and even likely that in newer LabVIEW RT installations this has been taken care of but I hadn’t needed to revisit that project since.
My understanding from conversations with NI is that the USB-C ports are intended for communication with a computer and for storage, that they were not designed for use communicating with other devices. The word I got is that it may work, but it is not supported.
We are quoting the use of a Lantronix UDS2100, which is a bridge between Ethernet and RS-232. My understanding is that this device is configured from a computer, but that it does not need drivers installed on the cRIO beyond what would be required for TCP/IP communication.
If we win the quote, I will post a follow-up to let you know if it works.