Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Graeme last won the day on February 15 2018

Graeme had the most liked content!

Profile Information

  • Gender
  • Location

LabVIEW Information

  • Version
    LabVIEW 2009
  • Since

Recent Profile Visitors

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

Graeme's Achievements


Newbie (1/14)



  1. Anders, I'm don't understand what you mean by cluster together. However, I can tell you this. A single system each has one filter in it and in theory all filters should be identical. There will obviously be variations due to component tolerances. The hope is that variations between filters built with components form exactly the same batches will be small, and even form different batches should not be that great. The result is (hopefully) that once the voltages for one filter are found these can be used as a sound starting position for tuning all the others. Graeme.
  2. asbo, I can talk to the board's contoller via USB serial and send it commands to set set and apply the tuning voltages via DACs. So, as you say, this is easily implementable via VISA. You may not have come across the parameters (s-parameters) that I'm measuring if you've not delved into the world of RF and microwave. I'm measuring them using an Agilinet E5071B network analyzer. It's the tuning algorithim that is the issue. ShaunR, You've hit the nail on the head. It is one of those "twiddle these until you get that" problems, only 800 times over! I'll check out the Taguchi Analysis. Sounds like it may hold some promise. Thanks. Anders, Good question. Personally I don't have a model for the filter but the designer must have. I'll speak to him and see what he comes up with. The 11 outputs are only affected by the 4 input variables. The problem is that a change in one input variable could potentially affect all 11 outputs, although in practice it is likely that three or four of the outputs will be affected to a greater extent and the remainder to a much lesser extent. drjdpowell, I see where you're coming from, and I do have a filter to play with, but for the reason given in my last sentence above I doubt it would be a simple algorithm, which is why I'm looking for some sort of recognised optimization one. Regards, Graeme.
  3. Hi all, Firstly, let me say I know nothing about optimization, hence the post. In a few months I will have 800 or so varactor-tuned band-pass filters to align (possibly more over the years) which tune over quite a wide band. The designer says they take about an hour each. Doing these manually is not an option for me so I'm investigating automating the process. To align the filter, four voltages (V1-V4) are applied to it to optimize its RF response at a particular frequency. To gauge the optimization I consider five spot frequencies around the frequency of operation, where I measure certain parameters: F1 - below the passband well down on the lower skirt where I measure S21 F2 - on the lower edge of the passband where I measure S11, S21 and S22 F3 - in the middle of the passband where I measure S11, S21 and S22 F4 - on the upper edge of the passband where I measure S11, S21 and S22 F5 - above the passband well down on the upper skirt where I measure S21 This is by the by, but out of completeness, the filter is microprocessor controlled and has on-board memory. When the filter has been correctly aligned for a particular frequency the four voltages are stored in a look-up table. When the system needs to operate at particular frequency the microprocessor is told, looks up the voltages for the frequency in question, applies them to the filter, and hey presto. So, as far as I can see the problem is this. I have 11 output variables which are functions of 4 input variables. I need an algorithm that can adjust the 4 inputs to minimize/maximize as appropriate (or cause to meet a specification) the 11 outputs. I have stumbled across third-paty software called "modeFrontier" which integrates with LabVIEW and looks like it will do the job. However, a single seat licence will cost £12K ($20k) a year. Also, it would be a shame to go third-party if an all LabVIEW solution could be found. My problem is that I haven't much of a clue where to start! I've been told that the algorithm probably best suited to my needs is the Levenberg-Marquardt. When I look at the corresponding LabVIEW functions they seem to be more related to curve fitting and finding co-effecients in formulae from sets of data, which is not what I think I want. If any of you get bored with the holiday festivities perhaps you might spare my problem a thought. Seasons greetings, eveyone. Graeme.
  4. Sorry for the delay. Here's my ADO database table reader. It's a bit of a mish-mash and uncommented I'm afraid, but make of it what you will. Regards. ADOReadFromTable.zip
  5. I haven't access to my code at the moment from where I'm posting but I'll upload it as soon as I can. It would be the least that I could do. Regards.
  6. Hi asbo, Thanks for replying again. Well I took your advice and Googled as you suggested, and it turned up trumps! I found a cracking little site that explained all about ADO and Excel in terms that even I could understand. It even had simple examples albethem text based, though it was simple to follow. I hadn't realised that Excel was a database, or at least via ADO could be treated as one. I only had to slightly tweak the SQL stuff in my ADO MS Access VIs that I'd written to get them to work with Excel. I think I might change those to handle both Access and Excel based on the target's file extension perhaps. Incidentally, I did a little experiment. I created a simple three-column two-row Worksheet in Excel by hand. I ran my ActiveX Excel Worksheet Reader VI on it and it took 2-3 seconds to return the 2D array. I tweaked my ADO MS Access table reader appropriately (with my newly gained knowledge!!!) then ran that on the Excel Worksheet and it returned pretty much instantaneously. So there you have it. ADO it is for me from now on. Obviously there is some overhead in in ActiveX. A guy I know who does databases for a living tells me the ActiveX layer sits above ADO??? A bit beyond me but I'm happy I'm moving forward now. Thanks so much to LAVA and to you asbo. I just learn so much cool stuff here it's untrue. Regards.
  7. Hi again asbo, Good questions! Well, as ever in these things, I'm stuck with Excel due to hand-me-down legacy reasons. Also, I like a challenge!!! I guess I'll just have to try and develop some ADO Excel stuff on my own and see what advantage it gives me, if any. Interestingly, I see there's loads of stuff about ADO and Access, MySQL etc but little about ADO and Excel, at least with respect to LabVIEW. I've found a bit but any pointers would be most welcome. Regards.
  8. Hi asbo, Thanks for your reply. Excel's not running when I'm doing all this, not to my knowlegde anyway. I attach my ActiveX subVI for reference but I think it's doing the best that it can. I've heard others say that ADO is faster, which is why I asked. I'm not worried about formatting as all I want to do is read data and write data to an Excel file. Regards. AXExcelWrite2DArrayWsheet.vi
  9. Hi all, I've put together a subVI that writes a row of data to an Excel worksheet using ActiveX. It works fine but it's a bit slow. It takes a few seconds for the VI to complete, although the row only has a few tens of columns. This is not a show-stopper but it doesn't give the user a slick experience in the top level VI that the subVI's used in. I was wondering, if I attempted the same using ADO would I see a significant improvement in speed? If you're thinking why don't I just try it, it's because I'm rather new to ADO (and ActiveX for that matter) and it would take me a while to get an Excel ADO solution going for myself, although I successfully use ADO to communicate with Access. I don't mind doing my own donkey work but it'd be nice to get some speed comparison information between the two approaches from those more in the know than myself before I attempt to flog a potentially dead horse. As ever, many thanks. Regards.
  10. Thank you for the replies so far. Pete, your code is just what I was looking for and I'm having fun playing around with it. Thanks. Replacing a space in a field name with an underscore didn't work for me. However, digging around microsoft.com suggested putting such names in square brackets. This did the trick and works for table names as well. Looks like ADO is something I need to get familiar with. Regards.
  11. Hi all, I post this with a little trepidation as I'm sure I'll get shot out of the Ether as this must be one of the most common LabVIEW ActiveX questions asked. However, try as I might I can find no hint to the solution anywhere. I've Googled this and searched LAVA posts and code repository but to no avail. In general there's a lot about Excel but not much on Access. All I want to do is add a record (row) to the end of an MS Access database table. I know the path to the database and I know the table name. I found a lovely example somewhere on ni.com that reads an entire Access table into LV via ActiveX. Beautiful! I thought I'd chop the back end read stuff off of this and replace it with appropriate write functions. My problem is I can find no properties or methods anywhere down the ActiveX Access application hierarchy that seem do this. You want to know the number of fields, records and all sorts of other stuff - no problem. But adding records, setting or changing values of something - I can't even get started. Is there anyone who is able and willing to point me in the direction of enlightenment on this one? Regards.
  12. Hmmm, interesting. I've noticed this too. I was just about to start a thread on it myself as it's been bugging me for a few years. I see this: TestExecutive.vi\Instance 1 26Saved MultiTestTemplate2 .vi Maybe some of my history can shed some light. As probably many do, I've written a test executive to suit my needs as I didn't fancy TestStand. The top level VI was originally called "MultiTestTemplate.vi". Being a bit slap-dash regarding revision control (shame on me) I just added a number to the end of it as its revisions went up. At some point I Saved-As (or did I just re-name it, could be important but I can't remember) "MultiTestTemplate2.vi" to "TestExecutive.vi" as that name seemed more industry-standard and meant more to people. Anyway, there you have it. It's my top level VI that the "instance" is referring to and as far as I know I'm not using any Express VIs in it. As a parting shot what about this? If someone wants to use my test executive they run my cloner on it so they've got their own project-specific copy and hierarchy. A guy with his own copy has recently been developing on several different computers (very unusual for us). I ran a subVIs list on it out of curiosity and then I saw additional "Instance0", "Instance1" etc. (I'm not at work and can't remember so don't take as Gospel what I've just put in quotes). To close I should say that I'm not using the "Traverse for GObjects.vi" but the "VI:Get VI Dependencies" method recursively, but what from what's been reported the result looks pretty much the same. Further information appreciated. Regards.
  13. Hi w15nu, Haven't looked at this for a while but thanks for your input, I'll look into it. I'm running 8.6 (IT department's a bit slow) and that's what the code was written in. Annoying that it breaks just one major revision later, although, as the code's comments state, no guarantees. I'll probably skip 2009 and go to 2010 when the disks arrive in a few weeks, so I'll try it with that. Regards.
  14. Graeme


    Hi all, I have an ActiveX-based VI that writes a 2D array of strings to an Excel worksheet. Occasionally the write fails, with the following error message: -2147417848 The object invoked has disconnected from its clients. Can anyone tell me what this means, please? I have little understanding of ActiveX. My VI has been put together by hacking others' examples. Today the VI ran successfully 1630 times in succession before failing. The write is across a network. I attach the offending article. Many thanks in anticipation. Regards. AXExcelWrite2DArrayWsheet.vi
  15. Thanks Joe Z, I'll check this out. You're right in that a command line apparoach is not unreasonable at all, and if it works consistently does it really matter how the job is done. I'd just envisaged that a neat solution might be a wrapper VI just interfacing with a DLL, inputting the traget PDF filename and outputting a pink wire, namely the extracted text. Maybe I'm expecting too much. I always think calling third party applications is a chore because you have to, er...well, install the third party application. That said, if you call a DLL you have to put it somewhere, so maybe there's no difference. Perhaps the ultimate solution is an LV coding challenge! In native LV produce a BD that extracts the text from a PDF though you can count me out here! Ideas still welcome. Thanks guys (and girls). Graeme
  • Create New...

Important Information

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