Jump to content

Francois Aujard

Members
  • Posts

    57
  • Joined

  • Last visited

Everything posted by Francois Aujard

  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?
  15. Ho... I'm so sorry for my previous response... Yes, it's exactlly that I want! Thank You so much 🙏 I have just test the the NI Verified VI... I just got back from a week's vacation in Ireland... I must have drunk too much Guinness 😅
  16. @dadreamer it is not exactly that. I would like to know the position of the point that we see when we display the grid on the front panel @Antoine Chalons where is the FrontPanel.origin?
  17. Hello everyone, I have a basic question... Does someone know how I can I do to "Scroll panes to origin at run time" in Labview 2013? This option does not existe at this period.. Best regards
  18. @hooovahh your are "sherlock holmes" 🙂. I don't know exactlly what Magna represents. I just know our hydraulic benches (taps and cartridges testers) are in West Egypt. Magna is a middleman (reseller, intermediary, I don't sure of my word)... For my problem, the patch f1 of the Labview 2021 SP1 version seems solves it. I don't know why the informaticien don't installed me the last version 😒... I think he install a ghost of a hard drive.
  19. @HYH Thank you very much for your reply. I upgrade Labview 2017 to Labview 2021 next year, and your message does not reassure me One CEO simple stated he won't allow 2021 in his company. Who is it? Best regards
  20. Yes I an agree with you, but it is always the same measurements with the same names. I replace the value and I never add new value. I add new value only at the begenning. A new channel voicie, OK I update my table size, but after it's just replace. I already add table size to be sure it's not increase. And the size don't increase
  21. @hooovahh thank you for your reply. Yes it's a very simple VI, it's for that I don't understand. I do not have the problem when I make an *.exe.... it's strange... I don't understand your sentence "Like the terminals should be on the root of the diagram for subVIs"? The command "Value et noms IN" out of the IF structure? The string array does not need to be re-indexed with the element structure in place... It's an old VI. We asked a specialized company to develop our acquisition. There are a lot of things I would like to change... everything in fact and start again on a good basis. But I am running out of time... I'm not sure this FGV is a great idea. what is the best solution to combine several different acquisitions on different devices? That is the question ! Yes I work for Magna, how do you know? I make hydraulic bench for us. We have actually a cold and hot water generator and 3 endurances benches in construction ! What company do you work for?
  22. @Gribo I don't have the same numbers of channels in the table "MESURES" (inputs channels) and "RETOUR CONSIGNE" (outputs channels). Why is suspect? This functional variable global is use in all the acquisition loops. it centralizes the measurements that come from different types of acquisitions. Example : - One loop ask diverter in Modbus and update the modbus channels - One loop ask ethernet mainboard and update the associates channels - One loop ask NI board etc...
  23. Hello everyone, I need help figuring out what is going on and what I am doing wrong. I have benches with windows 10 and labview 2017. No problems, the benches are working fine. I want to upgrade to labview 2021, and the surprise, the memory increases.... I isolated the vi that increases the memory (Instr_FGV_MesuresVrac.vi), but I don't understand why? Can you help me and explain why? I think it this part of the code : In my general code I initialize the vi at startup and then I have 3 loops that SET always the same measurements and one that GET. There is no addition of measurement channels. I have 2 tables of 30 measures. This code is use on other computer with windows 10 and Labview 2021 and no problem, but in some computer I have problem... Best regards PB Labview.zip
  24. @ensegre and @Rolf Kalbermatter Thank you for yours replies ! I love this forum, I learn a lot of interesting things! 🙏
×
×
  • Create New...

Important Information

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