Jump to content

Francois Aujard

Members
  • Posts

    57
  • Joined

  • Last visited

LabVIEW Information

  • Version
    LabVIEW 2021
  • Since
    2000

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Francois Aujard's Achievements

Contributor

Contributor (5/14)

  • One Year In Rare
  • Dedicated Rare
  • Collaborator Rare
  • Reacting Well Rare
  • First Post Rare

Recent Badges

1

Reputation

  1. Yes, I knew I could wire the error directly, but I have another condition with booleen. In the end, after thinking about it for a while, I don't really need it anymore, the queue state is enough for me. And it's also true that I'm not 10ms away from closing this sub-VI. Thanks for your advice
  2. Hello @Mads, Thank you for your reply. I followed your advice. I destroyed the queue in the main VI, and used the error output from the state of this queue to terminate the dynamically called VI. It works fine, thank you 🙏. I hadn't thought of that 🙄.... do you know why I'm looking into : View=>Browse Relationships=> Reentrant items I see the number of VIs that I've actually called, in running. But sometimes I also see some that are stopped. Should I add a close reference at the end of the VI? Can a VI close its own reference?
  3. Hello @crossrulz, I presume you meant to write 2024, not 2014. For the moment we're stuck with the 2021 and 2022Q3 versions. We are not a fan of the subscription system. We find it relatively expensive (NI has made up for its hardware losses due to COVID on the software side), and we've never really had the information we needed to go the perpetual license route. We used to work directly with National Instrument, but now we have to go through a reseller. And I have to say that I have a lot of trouble with the reliability of the answers they give us. They're salesmen... We're a small special machines company, and there are mainly 2 of us working with labview. On the other hand, we need to activate a lot of licenses during development. There are several machines in the workshop at the same time, sometimes more than 10. The reseller told us we could only activate 3 PCs per license. We'd like to upgrade labview, but if I can't activate more than 3 machines at the same time, without having to pay for additional development licenses, it's not interesting for us....
  4. I have another question about the attached image. I have a VI (I'll call it Test.vi) that dynamically calls an error monitoring VI. The function of this VI is to stop the calling VI in the event of an error. If there is no error, the calling VI closes the called VI using a boolean reference. In my main program, the "test.vi" VI was in a condition structure, and my code worked. I decided to call test.vi dynamically, and was surprised to find that my error VI never closed. The reason, I think, is that the reference is destroyed when the VI is no longer in memory, so I never see the true state of the Boolean. So I added an OR with not reference. And it works. I replaced the boolean reference with the reference of the calling VI, and looked at the Execution.State prorpiety node VI. Again, it worked. I tried to put my VI test.vi back into the main program without a dynamic call, and it no longer worked. The Execution.State always returns a running state, even when the VI is not executing. I have two questions: - Why is the VI running when it's not executing? Even if I close the reference, it doesn't change anything. - Is there a method or property node other than Execution.State that lets me know if the VI is actually running? I don't know if I've made myself clear...
  5. Thank you all for your answers In the end, only the first one is useful. Is there a case where I might prefer the 2nd or 3rd solution over the first? In fact, the 2nd solution will always be waiting for the end of execution, even if you set the option to call and forget
  6. Hello everyone, Can someone explain to me the difference between these three possibilities of calling a VI? I don't quite understand the difference, especially between the top 2... Thank you
  7. Hello everyone, I have in my possession a NI PCIe 6346 card. I want to do fast acquisition both on a counter input and on several analog inputs. Ideally, the threshold of one analog input should trigger fast acquisition on both. 1) I've managed to do this for the analog input task, but it doesn't work for the counter task (conditions 4 and 5). Does anyone have any ideas? 2) I've replaced my analog trigger with a digital trigger. Can anyone tell me why condition 2 is NOOK, but condition 1 is OK? For me it was two methods doing the same thing. 🤔 3) Does my VI start the 2 tasks at the same time (I've seen examples of condition 3, but I'm not familiar with them)? Translated with www.DeepL.com/Translator (free version) Acquisition Rapide.vi
  8. Thank you all for your answers, @Reds I've never done an API with Labview. I've used APIs before, but I've never created one. I don't know how to do that.... 😔 @Ryan Podsim For the moment, my data storage is an FGV (measurement) which is filled by my acquisition loops. And my UI reads this FGV and makes requests to the acquisition loops via another FGV (Consgines). I was in the process of changing this mode to event subscriptions, but it's still not very clear in my head... When my UI requests specific information from one of my acquisition loops (e.g. flow totalizer reset), it's a dynamic event (A) that makes the request. However, to be sure that the acquisition loop has executed the request, and to validate that the action has been carried out, I need another dynamic event (B) to do so. I find this a bit complicated.... My loop time is between 2 and 30ms (depending on the hardware), since I'm using Windows. @drjdpowell thanks for the link, I'll have a look... and I'll try to understand 😊
  9. Ok, I Know MySQL. We've been using labview for a very long time, but unfortunately it's only been in the last few years that I've taken the time to open up to "best practice" programming methods. The problem I'm having is that I have a huge number of programs for a wide variety of machines. But the codes are all in one block and nothing is separated. Add to that the fact that I haven't capitalized on any code for about 2 decades 😔 ... The advice you've given me confirms my choice. Each time a new machine is sold, I have almost no programming time ... bah yes it's the same as the one that was sold with a rotten code... 😒 In short, I'm painfully trying to square everything up, but as some notions are a bit new, I've got an instinct that I'm heading in the right direction, but no certainties and no one to share my questions with... Except for you today 😊🤩 I know MySQL but I'd never thought of transferring the acquisition this way.... I was just getting to that point... I have loops that start but how to transfer the data without going through global variables or FGV.... It's far from stupid, but it's going to make me do a lot more work... I'm working in stages between each machine.... It's still not very clear to me, but I can see the principle... 🤯 You don't know where I could find a simple example of the principle, do you?
  10. Sorry, I can't even copy.... yes, I meant DVM 🙂 ok, I was completely wrong 😄 Sorry, but I am not sure to understand... Where else do you want to store? What do you mean by "relational database" ? Are you copying into a double array stored in a global variable ?
  11. Thank you @ShaunR for your reply. I have some basic questions (sorry for that): - What is a VDM and IMO ? - SIC = Acquisition / Interface / Configuration ? - When you write : "The first half (acquisition) will be any method we choose that populates the database with as much information as we need or can elicit" Database like SQL or other? No problem with recording speed ?
  12. Hello everyone I always wonder about the best method to use for data acquisition, filtration, formatting, calibration, etc... when using several different types of communication. Where can I find examples to inspire me? For example : I have : - an electronic board with 8 analog inputs, 3 analog outputs, 10 digital outputs and 5 digital inputs. - an RS485 link with 5 Keller pressure sensors and 2 Bronkhorst flowmeters - A CAN link with 6 SEW drives - ModbusTCP link with 3 Kollmorgen drives - Etc... I use a lot of different equipment, with different communications. And I'd like to be able to make an adaptable program that can also store component lifetimes (number of solenoid valve openings, number of input and sensor activations if replaced before the board). Another example of hesitation: For a TCP-IP communication with 5 sensors, is it preferable to make a Vi that communicates with everyone, or 1 Vi re-entering with 5 instances in memory? I've started to make Objects, 1 Hardware, 1 Communication, I was thinking of making 1 for scales, 1 for filtration and for calibration... but I'm always a bit afraid of being on the wrong track... and I spend a lot of time... Do you have any advice, examples or anything else that might help me?
  13. Thank you all for your answers. I understand better 🙂. I think I took the wrong reflex, to make access VI for all the commands of the object, in case it would be useful to me 🙄. I had a quick training on objects 2 years ago. This training lasted only 2 days, but it challenged everything I thought I knew about labview 🤯😵. I have to say that I have been self-taught for many years, and that having an object training with a CLA, made me realize that my codes were very bad , even if they worked and nobody saw them 😰. But thanks to this forum, I have real answers to my questions, so thank you all very much for that 🙏 And I still have a lot of questions 😏
  14. Hello, I have question, and I would like the experts' opinion. What is the best way to access a reference of? an object, undundle or proprety node?
×
×
  • Create New...

Important Information

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