Jump to content

smithd

Members
  • Posts

    763
  • Joined

  • Last visited

  • Days Won

    42

Everything posted by smithd

  1. You have a lot of issues I've never seen, but I've experienced these at least. (1) I read somewhere that the VIs don't necessarily have code but do have metadata (for example names of VIs, connpanes, types)...not exactly a concrete explanation but it may be the reason behind the saves. (2) Is this outside of any libraries? Lvlibs and classes seem to have different rules, but I just tried loading a project in 2014 (not really using 2015 for much right now) and can verify that at least there, not all standalone VIs are loaded when the project loads. Could it be related to having SCC on? I never use the built in one because I found it to be terrible. (3) And preferably one that is accurate, too (re: #2) (4) Honestly I think you could just put "All of appbuilder" as a bullet point (5) I've seen this on occasion, but I wouldn't say its frequent. (6) To build fortitude. And of course, don't forget to also save the class and make sure labview doesn't crash in between, or else you get the friendly dialog about VIs not being part of the library they claim to be part of. (7) Thats a neat trick, although I would add, why does building the file view (the first time) take forever?
  2. I think they're hosted by the JKI repo, since thats the other default repository. I don't know if there is any access through http/ftp.
  3. Yeah thats right, that option is available on all ipe nodes but it sounds like its only a good idea to use it in exactly one situation, so the usage you showed above is probably not a good idea.
  4. http://zone.ni.com/reference/en-XX/help/371361H-01/glang/in_place_element_structure/ If I remember what aristos told me about the lvoop comment, the mark as modifier would really only do anything for dynamic dispatch. He said something about how if the parent class just passes the data through without modification but you know most children will modify the data, this cues the compiler to know hey, you're going to need a copy of this data you can't pretend this section of code is read-only. With a DVR, you always lock the value and I would assume operate in place, so I can't imagine why this would do anything for DVRs. Edit: lol Also on the original DVR subject, aristos' comments here may also help: https://decibel.ni.com/content/docs/DOC-40468
  5. I typically take the left node error, merge with error in, then inside the IPE structure I'll either wire that merged result into the VI or into a case structure as you have it. I ignore the output error. I also don't put so many error structures as you have (for the same reasons as #1 here: https://decibel.ni.com/content/docs/DOC-47123). Obviously this is case by case, which is harder to manage if you're going through an entire project retroactively. What does the mark as modifier do for DVRs?
  6. I've never seen abort work without an error, so I think you have to be able to handle both situations. Maybe it has something to do with how they're named, or the timing source, or something along those lines? I'd try just taking a subset of your code and fiddling until you spot the difference.Or just handle the error
  7. Probably not that helpful but just in case you weren't aware of this, someone out there already made a decent looking tab xcontrol: https://decibel.ni.com/content/docs/DOC-21668
  8. You may want to double check... https://zone.ni.com/reference/en-XX/help/370622K-01/lvrthowto/remotepanels_enable/ item 5 http://zone.ni.com/reference/en-XX/help/370622M-01/lvrthowto/remotepanels_browseraccess/ 3-6 http://zone.ni.com/reference/en-XX/help/371361L-01/lvhowto/enabling_the_web_server_in/ ini editing But really, the remote front panels are pretty ancient and were never a great idea on RT. If you can, I'd strongly suggest looking at this (or one of the similar projects) as an alternative:
  9. Its also possible to start with one of the normal desktop linux targets NI nominally supports and pull in the various rt kernel patches yourself (Preempt_rt is mentioned here for example: http://www.ni.com/white-paper/14627/en/). However it sounds like this isn't going to help you as you still lose the ability to do RT in labview: https://decibel.ni.com/content/message/61652 (ie you'd have access to RT capabilities in C but not labview). I am curious why the available pharlap solutions arent any good? I've had the same issue recently but thats just because I have a bunch of computers available to me that all have the wrong NIC for pharlap.
  10. I guess I would say look for the module being compatible with a 9074 in FPGA mode. This excludes things like the XNet interface which is RT-only but includes things like the raw CAN card. You can also emulate it in the project -- if the FPGA compiles, it will likely work. The two big showstoppers I've seen with ecat are... Yeah lots of small logic bits will save you with the ethercat...but theres also the risk you run out of space since the FPGA on those guys is so small. The other concern is the number of user-defined variables. While you can have full chassis worth of IO, you can only have like 64 or 128 or something like that UDVs per chassis.
  11. Tried to clarify above but I see your point.
  12. Theres some interesting additions -- I like the built-in sorting and filtering idea -- but one thing I can't get past, and its the issue with every error improvement I've seen, is that it still doesn't really work with the standard error cluster since you pass around arrays rather than the base cluster. Its not compatible anyway without adding a node to convert between them, it seems like making bigger changes is appropriate. Edit: thinking about Shaun's q below, the versions I've seen seem to be either (a) not the same data type or (b) the same 'type' but used in a fragile way. In both cases you have to isolate either (a) your new data type or (b) your carefully crafted 'source' string from the errors provided by built-in functions or functions in most any other library. And doing this conversion is itself a challenge as theres a billion different error generators -- code to error function with or without various options, stephen's xnode, and the custom ones built by a lot of different groups. Its quite a challenge to convert these various data types and honestly I think its more challenging to deal with the variety of ways the standard cluster is used. Maybe I'm missing something, thats the impression I've gotten.
  13. That library is in the product (RT and DSC, same as the IO servers) as of 2014 and that is officially supported. Lol, true
  14. Don't forget about the existance of the much much newer ethernet rio targets -- if you can handle slower loop rates (and shoving all high speed logic onto the FPGA) they're really a lot easier to deal with (at least in my experience). Still, I think these benchmarks should give you a good idea: http://www.ni.com/product-documentation/10596/en/ and http://www.ni.com/white-paper/52642/en/ If you grab the excel sheet off the first one you can guess how much data is transferred and it estimates latency and delays through each node. For a basic enough example the second page shows results for the 9068. In this case 4 slaves at 10 ms uses 13% of the CPU, similar to the 9024.
  15. It may be challenging to make, but I think these web elements are nice: http://getbootstrap.com/components/#btn-groups You can label each item so you get the benefits of a radio group (in fact you could argue this looks more like a radio button than most radio buttons). Plus its actually a button, so you get the feeling that it takes immediate effect. Also, note the "Notify me of replies" when you post here on lava after the upgrade. Having the check or the x makes it pretty easy to understand the meaning, but thats because its also labeled well..."Notify me of replies" is an obviously true or false statement. I think this happens more often if the "ON" or "OFF" is on top of or otherwise seems to be part of the 'moving part' of the switch. Because then it kind of feels like you're pressing a button labeled "ON" rather than indicating the state. If you separate the label from the moving part (like the dr's switches on the right) I think it works.
  16. One other concern I have with priority/severity is...well how do you decide? If you're writing application-specific code, sure its reasonable. But developing a library? Something that may be critical to you may be minor or expected from the application, so anything reporting that would have to do conversion of some kind. How do you guys handle that sort of thing?
  17. Another more recent thread on the same topic you may not have seen: To me, when I see needs like "multiple concurrent errors and priority/severity" it sounds like the real interest is in better way to report errors, not handle them. I mean, I can count on 1 hand the number of times I actually check the specific error code programmatically (TCP errors come to mind, sometimes file I/O). More often I either handle any error coming from a function or sequence of functions, or just spit it up to a log or to the user. From that perspective, it recently occurred to me that syslog (the newer one, RFC5424) really has most everything you want in a reporting packet: source machine, source process, severity, time, general string, and a set of key-value pairs which can hold anything. Similarly you could use the existing error cluster (or the old syslog packet, RFC3164) where the message/source string is just a dynamic json object so you can add any info you want. At one point I made a prototype of this using the variant repository and probe (using the variant as just a key-value store for things like severity, call chain, etc, and using the probe to display it)...but the conclusion I came to is the same conclusion I think everyone else came to: its just way too hard to move from the old error cluster to the new.
  18. I can't find any validation of this statement. From what I can tell, other solutions are similar to what JKSH suggested. For example: https://www.kepware.com/products/kepserverex/drivers/opc-ua-client/. I would also assume there is required to be a client-server interaction since OPC UA is capable of going over HTTP, which is inherently client-server. Are you sure server-server exists for OPC UA?
  19. if you mean connecting TO two opc ua servers I would guess yes.You specify what you want to connect to through the url. If you mean hosting two servers, I would guess yes but they would have to use separate ports. If this is what you were asking, why do you want two servers? I would assume in most cases people want their scada server to be the source of all truth, not the source of some of the truth.
  20. you can also use a service name with a port of 0. That way the actual port won't have to be fixed just the name. http://zone.ni.com/reference/en-XX/help/371361M-01/glang/open_application_reference/ ("port number or service name" section) http://zone.ni.com/reference/en-XX/help/371361M-01/lvdialog/vi_server_config_options/ ("port", "service name" sections)
  21. If I'm understanding your problem correctly, I think you can use the 'multiple output' function of string to IP to get all the IPs associated with that host name. If needed, you can do the same with 'localhost' and I think its returned on windows in the same order every time (letting you know if the VPN is connected if your vpn works that way). If your VPN always has the same subnet, you could also just OR the returned list with the VPN subnet and see if you get a match. If not, find the IP which matches your local IP address. Something along those lines.
  22. If I remember correctly the NI ini code reads the whole file when you open it, but it keeps all the values in a single array (no var attribute lookup) so if you do random access its real slow. I've seen similar performance issues with openG, mgi and the json libraries (on different scales, of course), and I've also seen it with the labview xml and json functions. I personally think the only real right answer is:
  23. Not too long ago someone turned me on to the indeed trends page. I don't know how useful the data is but if anyone hasn't seen it its kind of neat: http://www.indeed.com/jobtrends/q-labview.html Which looks negative, but then you compare that to other languages and.. http://www.indeed.com/jobtrends/q-labview-q-python-q-java-q-C%23-q-C++.html?relative=1 In relative terms, python is a huge winner. If you add in standard labview terms you get these interesting compares: http://www.indeed.com/jobtrends/q-labview-test-measurement-q-python-test-measurement.html http://www.indeed.com/jobtrends/q-labview-instrument-q-python-instrument.html
  24. Ah but how much has scada changed since 1996? Everything is still basically just modbus with valve icons, right?
  25. I saw a conversation (argument) about that at some point but I don't recall the conclusion. I think there are arguments for a global install as well as a local install, depending on the tool. For example I'm assuming nobody is arguing this should be project-specific. On the other part (NPM) I thought it was an interesting idea and did some looking around. Chocolatey (despite its stupid name) seems to be relatively popular and the spec file is fundamentally the same as the vipm spec file with some added features (like wildcards): https://github.com/chocolatey/chocolateytemplates/blob/master/_templates/chocolatey/__NAME__.nuspec And then I stumbled across this thing called "OneGet" which is actually included in windows 10 (under a different name, PackageManagement). Its basically a manager of other package managers and includes (a) a chocolatey implementation and (b) an API for adding other package managers. It would require a little bit of c# coding but in theory you could wrap up the VIPM API and call it from OneGet. I don't have any real conclusion except it seems like theres plenty of options out there. The challenge is some of the lv idiosyncrasies like palettes and linker issues within the files which is what vipm handles for you (most of the time)...
×
×
  • Create New...

Important Information

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