05-01-2023 04:17 PM
Hi all
Can anyone give me a hint as to how the overall structure of the program in LV should be organized if my system is to be operated in the manner described below?
The system is to consist of 5 myRIOs and 6 PCs, with one of them being the master. Namely, it will connect the operator panels of the other 5 and enter its own values if necessary. Meanwhile, each of the 5 PCs is connected to a specific myRIO and can enter values and save data.
In one uncompiled project this is unlikely to be done.
Will LabVIEW alone be sufficient at all for this?
For PC-myRIO communication will Global Variable or Network Streams be the best?
Thank you in advance for your help
05-01-2023 06:19 PM
See Understanding Communication Options Between the Windows HMI, RT Processor, and FPGA
It depends how what task you want to implement on the HMI (PC) or RT. If the sole purpose of the PC is to serve as a UI, you could use only one host PC to control 5 myRIOs,
05-01-2023 08:10 PM
@spalinowy wrote:
Hi all
Can anyone give me a hint as to how the overall structure of the program in LV should be organized if my system is to be operated in the manner described below?
The system is to consist of 5 myRIOs and 6 PCs, with one of them being the master. Namely, it will connect the operator panels of the other 5 and enter its own values if necessary. Meanwhile, each of the 5 PCs is connected to a specific myRIO and can enter values and save data.In one uncompiled project this is unlikely to be done.
Will LabVIEW alone be sufficient at all for this?
For PC-myRIO communication will Global Variable or Network Streams be the best?Thank you in advance for your help
I'm not sure what the Question is, as there is a lot of "vagueness" here. So here are some barely-solicited opinions:
Provide a lot more specific detail, best done with LabVIEW VIs (not pictures, but actual editable/testable code) for less vague responses.
Bob Schor
05-02-2023 02:31 AM
Thank you for your reply.
1. I haven't developed a multi-device application so far, so I have some doubts and I'd rather ask and discuss before I make a mess and run into a dead end. I have already prepared some programs for cRIO and myRIO, but always for single devices.
The whole system will be for teaching purposes. That is, 1 PC for the instructor to monitor the data, from the stations that the students operate on the other PCs. The only option the instructor will need other than to view the data is to be able to take control of the selected position by entering his own values. Communication is to be done via WiFi.
2. Speaking of an "uncompiled" project, I meant not to create an installation file (EXE), since the project will be developed for a long time, and subsequent compilations and installations only add work. But still, I reckon it may be inevitable.
3. Yes, I also used Network Stream and Network Shared Variables. While I have no objections to the former, the latter is not very predictable. Recently, in a running application, they stopped transferring data overnight. Values were changing in the loop where they were received from the Host, but no longer reaching subsequent loops. I saw that I was not the only one who had this problem. Therefore, I am skeptical about this solution. For me, communication is always to be ensured at 100%, and only data can be transmitted lossy or lossless.
4. My current inclination is to have an HMI embedded on myRIO on each of the 5 PCs, while the handler would have communication with the devices via Network Stream. I just don't know yet how much simultaneous use of myRIO by 2 PCs is possible.
05-02-2023 05:14 AM
Thanks for explaining the basic "connectology". Here's my take on it, and my untested "guesses" as to the problem points.
Keep us updated on your progress.
Bob Schor
05-04-2023 03:32 PM
Some modern options, I now avoid network shared variables and streams.
1. MQTT with the broker on the windows, each RIO is a client. pub/sub as needed to transfer data. Mosquitto can run as a windows service. HiveMQ is good too (need java). MQTT Explorer is a great tool also. LabVIEW MQTT client on github.
2. Web server with HTTP, each RIO has a web server and responds to get/post requests.
3. InfluxDB with Grafana. InfluxDB on the windows, each RIO writes to it. Grafana can pull data out in real time and graph it. For button controls you can implement HTTP and/or MQTT on Grafana. LabVIEW InfluxDB API on github.
05-04-2023 05:28 PM
@jakidd wrote:
Some modern options, I now avoid network shared variables and streams.
1. MQTT with the broker on the windows, each RIO is a client. pub/sub as needed to transfer data. Mosquitto can run as a windows service. HiveMQ is good too (need java). MQTT Explorer is a great tool also. LabVIEW MQTT client on github.
2. Web server with HTTP, each RIO has a web server and responds to get/post requests.
3. InfluxDB with Grafana. InfluxDB on the windows, each RIO writes to it. Grafana can pull data out in real time and graph it. For button controls you can implement HTTP and/or MQTT on Grafana. LabVIEW InfluxDB API on github.
I would second these suggestions as well. I am a very big fan of a publish/subscribe model. We use our own library which we developed over 15 years ago. However, with MQTT or HTTP it would be easier since there are several options available to you.