Jump to content
News about the LabVIEW Wiki! Read more... ×

BradPID

Members
  • Content Count

    12
  • Joined

  • Last visited

Community Reputation

1

About BradPID

  • Rank
    Active

Profile Information

  • Gender
    Not Telling

LabVIEW Information

  • Version
    LabVIEW 2014
  • Since
    2010
  1. BradPID

    Modular design approach for FPGA

    Well I don't feel I need LVOOP rigth now but the idea is brilliant. For me using 'pipes' simplifed a lot. I used global variables before. I have heard that on FPGA it is ok. I don't think in this way anymore. Getting back to the modularity... Now, my module has: pipe creator, input writer, output reader and main loop. The attached image describes all I need to drop on th BD. I haven't tested this idea entirely and it would be better If I could access clusters elements separetely on RT host. I guess I still will have to create seperate controls for each input.
  2. BradPID

    Modular design approach for FPGA

    That's good advice. I am already using it and it helped a lot. At the moment I have only two FIFO which are communicating with host computer. The next thing I want to do is using project defined FIFO with references as well. Now, when I place a 'module VI' on the 'Main FPGA VI' within other project, the code is broken and I have to manauly change all the nodes. Using reference should fix this issue - changes only at the beginning. The other issue I have is using FPGA FP controls/indicators. In my case they have names like: 'Start Acquistion', 'Stop Acquistion'. I have to define them within my 'Main FPGA VI' so when I change the project I have to make their copy. I found quite a good way to deal with this, but it is still require some work. I guess I still not have enough experience with FPGA but I can't fit FPGA Advanced Resource Session with what I would like to acomplish. Using bitfiles allows me to use developed code within one project in multiple other projects but I am thinking about something different, I guess. Let's say I have three persons: person D1 person D2 and person A0. A0 is responsible for whole project and work only on high-level stuff. D1 is responsible for communication with instrument 1 and D2 is responsible for communication with instrument 2. I would like to these three person to work on three different LabVIEW project and in the end A0 should easily merge their work. D1 and D2 work on FPGA, A0 don't.
  3. BradPID

    Modular design approach for FPGA

    I would like to design a FPGA module having an access to the resources like DIO,AIO or CAN which I can develop and test within one LabVIEW project and then use it within another. Idealy, I would like to have an API for RT implemented as a .lvlib and one VI which I have to drop on on my main FPGA vi. Currently, I have a .lvlib with virtual folders for RT and FPGA stuff. I have a few issues with this approach like requirement for changing FPGA typedef when I want to use it within another project and manual adding FIFO to the project. Well, I can live with this, but maybe you have a better approach which you woluld like to share. I have found something like FPGA Advanced Session Resources https://decibel.ni.com/content/docs/DOC-35574 , but still I am not sure whether it something I am looking for. Any thoughts?
  4. Although the concept of Statecharts is old, I think, that still not many people know it. Most of LV users are engineers and scientiests who get their 'software engineering' knowledge (like me) while working, when it is required and not from computer science courses where this concept is a basic one. I think NI would have to make a move in order to make them more popular.
  5. Hi, I have faced the chalenge with setting values and synchronising measurement using multiple number of instruments. I use cRIO. The orginal application is a bigger but I will try to describe the main issue and my approach. I would like to listen to your feedback or better solution. Let's imagine: - device A (comunication over CANOpen) controlling speed. - device B (communication over RS232) controlling temperature - device C (NI analog inputs module) The goal is to generate sequence of setpoints for temperature and speed and at the same time measuring current speed, temperature (using the same instruments) and measuring voltages using analog inputs. Setpoint for speed should be generated quite quickly (it depends on perspective what means 'quickly' but period is 10ms), setpoints for temperature can be generated slower (period 100ms or bigger). I can't wait for response from device B while I want to generate setpoints for device A (which is faster) so I decicde that I will divide these proceses. My solution: I placed device A controller into Timed Loop where it does three operations in sequence: writes setpoint, read current value and gets command from queue ( Timeout is 0 so I am not waiting for element and it is used only to stop a loop or perform initialisation - non deterministic tasks). The device B is in a similar loop but have different time rate. I wanted to keep instruments and logic separate so I added a third 'Control' Timed Loop which is responsible for generation setpoints at higer rates (1ms). The third loop 'publish' setpoints to other loops using 'single process variable with one element fifo' (one variable per setpoint) - in this way processes doesn't have to wait. All Timed Loops are grouped and starts at the same time. Now, it is time for FPGA. In order to have every mearuement correlated ( corresponding to each other), values measured by instruments are sent to FPGA. On FPGA I acquire values measured by instruments along with analog inputs and send back to the host using FIFO. I am receiving these values in non derministic acquisition loop. Control loop is also responsible for triggering the acquisition. The problem seems to be common but described solution is the only one which I found to be correct and seems to be quite complicated (number of communication methods). Well, I hope I will get some advices to simplify it.
  6. BradPID

    Multi-user acess to cRIO

    Yeah, there is a lot of information here. Now I have to digest and come up with the right solution. Than you all for your help.
  7. BradPID

    Multi-user acess to cRIO

    Do you mean literaly 'router', the phisical device? As far I understand it I can put router (don't have to be special industrial type) between cRIO and the trafic will be big only between router and cRIO. I have read some about it and I don't want to dwell in it here but it is very interesting. I see a router here as a device which handles dynamic connections. What happens if a computer start listening and disconect (intentionaly)? Will this connection be cleared to not produce traffic anymore? I see this as a more flexible alternative to the Remote Panel. Probably I will use it someday but this project has a few additional features which I wouldn't like to do in a browser. I will have it in my mind in the next project.
  8. BradPID

    Multi-user acess to cRIO

    Not needed for UDP. You just transmit different channels on different ports and let them connect to whichever they want to listen to. I didin't want to broadcast all chanels because of network bandwith. The data which I want to send is about 20k S/s and I assume that each sample has 4B (SGL). if I use about 50 chanels it turns out that I need bandwith of 4MB/s (32Mb/s). I haven't taken into account packets header etc, my calculation are valid estimation only for UDP as TCP has ACK mechanism and need more additional data. It turns out that It is possible to run it on 100Mbps local network but I would like to take so much bandwith. Here are my question: If nobody listens on specific chanel port, does the data takes network bandwith? The ideal situation would be if data were transmited only if somebody listen on the specific port. Then, if only on user is connected, it takes only 1/50 of the bandwitch which I have estimated. I don't know the details of the UDP but If what I have written here turns out to be true I think I will go this way. When it comes to sending commands to cRIO the soultions with TCP/IP server looks very flexible and for me personally, it looks like the best solution. I have encountered the STM library on Advanced LabVIEW course and that time it was very boring for me. It is not anymore Well, I have to test some approaches... Lets assume that I realy would like to have communication on 'Network Streams' (the customer likes this approach and is familiar with it). Is this communication mechanism prepared to closing and reopening connection? I mean, I tried to run server like application and two client like applications. When I closed one client application it should let me to connect to the server like application from the second client like application. I could not do it and either I do something wrong or it is not prepared for it.
  9. BradPID

    Multi-user acess to cRIO

    First of all I thank you for all your responses. I had to test a few approaches so it took a while before I could come back to the discussion. It seems that Shared Varaibles are the easiest mechanism to publish data without loosing information. When it comes to broadcasting bufferd data for multpile users Multicast UDP meets my needs. The transmistion is not lossless but the data is only for live listenning and is not logged anywhere. I have to think it over but it is most likely that this is the way how I am going to approach it. The one thing has remained: remote control of a cRIO. Most of the functionality should be controlled by a one user but there is a one command (signal number selection) which should be avaliable to any user. For sake of simplictly I can agree to not divide it for many classes of user and assume that any user can do everything, even stopping the system. However, I still don't know how to realize. It is easy to think about it when we can use queues. I can imagine that many modules can send commands to the one module through a queue and only recipent module will execute the commands but how to implement the same mechanism throuth the network? I see that I can't have multpile writers endpoints for 'Network Streams'. I am considering using buffered shared variable with string or variant type (if possible). Maybe you have a better ideas which you would like to share with me?
  10. Hi, I need advice for architecture design for application where measurement from cRIO could be accesed by multiple user at the same time. My first idea was tu use 'Remote Panel' but: - GUI is composed of a few dialogs and only one user can control 'Remote Panel' which also means that only one user can launch dialogs on its computer. - The customer would like to transform signal to sound and listen to it. It is also unavaliable using Remote Panel The second idea was to use 'Shared Variables' but: - In order to hear the sound it has to be streamed to the user. Curenet application works for one user using combination of 'Shared Variables' and 'Network Stream'. The last idea is to publish all informations which needs to be published through 'Shared Variable' and implement special mechanism which will create seperate 'Network Stream' for each user who try to connect to cRIO. I am concerned about managing many 'Network Streams' so maybe somebody here have a better idea. Thank you for all responses.
  11. I meant Icon Editor (IE). I've missed it in the topic.
  12. Hi, I haven't found any way to launch IE from keybord and I decided to make my QD shortcut to do this. I've used LabVIEW Icon API and build simple code as shown on snippet. Everything work fine when I want to change Icon of a VI holding the code, (ie. replace "QD Launch VI Ref" with reference to the VI) but the situation is different when I am using it as a QD shortcut. I have to wait about 5-10 sec once Icon Editor is launched. It's far to long. Does anybody can tell me how I can do this process faster or give me another way I can run IE using keyboard?
×

Important Information

By using this site, you agree to our Terms of Use.