04-27-2017 08:26 AM
I should preface this by saying I'm not too familiar with LabView and was hoping I could get some help with something.
Our company has a Daytronic System 10 data acquisition system. It’s probably close to 30 years old, but still works. We’ve been pondering whether to continue using the System 10 for a while longer but attempt to replace the PC and software OR look for a brand new data acquisition system. We thought we could try the former first assuming we could get software to read the data from the System 10 on a newer PC. A coworker suggested I try LabView as he has some experience with it. We found the System 10 does have a LabView set of VIs (but no longer supported) found here: http://sine.ni.com/apps/utf8/niid_web_display.download_page?p_id_guid=E3B19B3E9328659CE034080020E748... Figured it wouldn't hurt to give it a try.
I downloaded the LabView 2016 evaluation and installed it and connected the System 10 to the PC via the serial COM port. The COM port is set to 9600 baud, 7 data bits, 2 stop bits, no parity to match the System 10. Flow control is set to none. Daytronic has a utility called UtiliPAC410 on their website to setup and test the System 10 first. This test was successful and I was able to read the channels and issue commands to the System 10.
Troubles ensue when trying to use downloaded System 10 VIs for LabView. I encountered issues with the Serial Port not being initialized at first when attempting to open the example datalogger. Doing some research indicated I needed to download the appropriate NI-VISA package found here: http://www.ni.com/download/ni-visa-5.3/3823/en/ I opened NI Max to configure COM1 and it reads as ASRL1::INSTR and validated it successfully.
I configure from System 10 Serial Init.vi. It's defaulted to expect 19200 baud, 8 data bits, 1 stop bit on port 0 (COM1) so I had to make some of its controls visible to set 9600 baud, 7 data bits, 2 stop bits. These settings are passed to Serial Port Init.vi and to the underlying base VISA Configure Serial Port (Instr).vi. It now appears to initialize and doesn't give me any errors, but we're still not getting any data readings either. It seems like I'm missing something and I wasn’t sure if anyone had any ideas about LabView configuration for the System 10. Are the System 10 VIs for LabView just really too old to use now? I was hoping not to have to totally re-invent to wheel. Daytronic indicates the System 10 uses hardware handshaking, but Flow Control is set to none on COM1 and their utility works fine, so I don't think that would be an issue with LabView either.
Any help would be appreciated.
04-27-2017 09:07 AM
That driver should work just fine. That being said, it is full of poor programming practices and more than a few bugs. It relies on functions that are not even exposed anymore. I'd rewrite it.
04-27-2017 09:23 AM
I agree with Jeff - this setup should work fine.
I would start with running a LabVIEW RS-232 example (like Continuous Serial Write and Read.vi) and trying to send some simple commands. It's the easiest way to find out where the problem is.
I would also update NI-VISA to the newest version (http://www.ni.com/download/ni-visa-16.0/6184/en/).
04-28-2017 07:37 AM - edited 04-28-2017 07:42 AM
Thanks Jeff and stockson for your replies. I did upgrade the NI-VISA package first (I didn't realize there was a much newer version). I ran the VIs again. What still confuses me is Flow Control. It's set to None on COM1, but the VISA VI is getting a value of "6" which doesn't seem to represent anything. I have attached a few screenshots showing the settings in System 10 Serial Init.vi when ran, the settings received by Serial Port.vi, and then passed to VISA Configure Serial Port (Instr).vi. I also tried Continuous Serial Write and Read.vi and got an error -1073807339 (Timeout expired before operation completed). I'm not sure what this means.
Again, the System 10 is connected and working, I've also attached a few screenshots of their setup program and issuing of commands and display.
04-28-2017 07:47 AM
First, you are sending *IDN to the device, are you sure that it will even respond to that command?
Second, you have configured your termination character in LabVIEW to be x0A which is linefeed, but your one screenshot of the Daytronic test setup shows 0D which would be a carriage return.
04-28-2017 08:19 AM
First issue that I see is termination character. In the "Continuous Write and Read.vi" you should change "A" (\n) to "D" (\r).
04-28-2017 08:36 AM - edited 04-28-2017 08:37 AM
I'm not sure why the program chooses "6" as parity control, but I expect there is some error in these calculations:
I would just replace it it with a "0" (which corresponds to "none") and see if it changes anything.
By the way - LabVIEW does a pretty good job with cleaning the diagram in case of these driver VIs. Then the program is much more readable.
04-28-2017 08:56 AM - edited 04-28-2017 09:00 AM
And while your messing with that block in red. lets de-rube-goldberg it
Then go back to that In Range and Coerce and check the include upper limit. I always thought that was a bug of IR&C to even allow the limit to show that way with integers since it includes the integer limits with integer operations all the time