-
Posts
4,914 -
Joined
-
Days Won
301
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by ShaunR
-
Software is like a fart. Yours is ok, but everyone elses stinks. LVOOP just ensures no-one can tell who farted
-
If someone has un-bridled access to the machine. Then there is absolutely nothing you can do to protect discovery from a determined effort (it is just a matter of time). It doesn't matter what the programming environment is since I could quite easily drop a hacked windows DLL and then all bets are off. Zeroing memory is a weak (but not inconsequential) way to protect passwords since I only need to fire up Soft-ice and I can see where it is in memory before you clear it. The hard part is finding it in the first place amongst the thousands of lines of code. As you can probably guess. A dialogue box is an easy way to find where to start and then following the code to find the string message sent to the OS. So it doesn't matter what code you write, that is the crack where I can place the crowbar . The main thing to bear in mind, however, is that a password is a means-to-an-end. A password in itself is of no use. It is the info it guards that is of interest. You could have the most secure program in the world but it won't be much good if the user writes down the password and puts it on a post-it attached to the monitor. The only purpose of a password dialogue is to prevent someone looking over your shoulder and reading it; no more. If it is a worry, then use a key and lock the PC in a room with no network. The issue is more about prevention and detection of malicious programs actually getting on to the machine in the first place without your knowledge (reducing the attack vectors) and, if they do get on there, preventing the info they glean from exiting the machine in a meaningful form (like your private PGP keys) or, at the very least, making it difficult to extract meaningful info if info does get out (like your customer database). Isolation from the interweb ( ) .goes a long way to minimising this as does not having USB ports (or those ancient things called flippies or something). If a keylogger does get your passwords, then it's not a lot of use if the file that stores them can't be sent to the intended recipient. This is why generally more emphasis is placed on encrypting data since if you assume that the passwords are unavailable then there is a lot you can do to protect private data,
-
It's common in parallel testing on production lines (if I get what you I think you are asking). For example.Say you have 10 fixtures but you can only test 2 simultaneously (because that's all the hardware you have). When one test completes, it moves to the next non-tested fixture. In between changing from one fixture to another, all tests have to wait so that the switch MUX can re-route to the probes of the next fixture so any test in progress has to reach an arbitrary completion point (finish its current measurement) before the other test set can move on. If fixture "1" fails (i.e the overall test time is is also variable - failure results in a reduced completion time) then it must move to "3". It can only do so when the test set at fixture one has finished its current measurement (once test set "1" has moved on, test set "2" it will continue). Additioally. If "3" also fails, then it moves to "4". If fixture "2" then completes, it must ignore fixtures 3/4 since they have already been tested and move to "5" and so on.
-
Apart from the aforementioned aspects. Another major reason is that Industrial PCs have a guaranteed availability and parts longevity with a definitive obsolescence time scale (usually 5-10 years from introduction). They also tend to come with things like RS485, serial com ports and oodles of usb ports as well as the large PCI /PCIE count..
-
How to exit from switch statement when condition is met first time
ShaunR replied to vhha1972's topic in LabVIEW General
If it works. It's good. There are many ways of doing things and whilst there are "accepted" solutions to common problems; "Smart" is subjective. Your only objective was to "sequence" the drive shutdown since LabVIEW is inherently parallel, and there are a lot of ways you could have achieved that. For example. In addition to your solution, you could also have wired the error terminals on the express VIs to outside the loop (a very common way of sequencing VIs). or for that matter, the 0. You could also have OR'd the STOP boolean to the selector. Worry about "smart" when you know where all the things are in the palettes, you've got a few utilities in your toolbox, written a few programs and been on some courses. This program is the "first pass" (your prototype, if you like). I can guarantee you will be revisiting it making it "smarter", prettier or more flexible. The stop button in the IDE is for the developer only. In deployed applications, users should not have access to it since it circumvents shutdown procedures by stopping the code dead. Never give the user any opportunity to do something you are not expecting otherwise he/she will! -
How to exit from switch statement when condition is met first time
ShaunR replied to vhha1972's topic in LabVIEW General
Just put another motor stop (set the motor value to zero) outside the while loop so that it gets executed after the while loop stops. I'll leave you to figure out how to sequence it to make sure it happens after the loop stops rather than while the loop is running (hint, don't use sequence frames, ever!) -
How to exit from switch statement when condition is met first time
ShaunR replied to vhha1972's topic in LabVIEW General
Give this a go. not sure I got the "sense/direction" you are trying to achieve right (and had to reorganise a bit to make be able to read it). but the "latching" is there. -
How to exit from switch statement when condition is met first time
ShaunR replied to vhha1972's topic in LabVIEW General
The output will be "TRUE" if the direction is detected. It looks like your case structure is set to "False" to turn off. Try swapping the cases around. It is usually better to post your VI or an example of what you are trying to achieve rather than an image. For simple VIs you sometimes get back the VI with the changes. There is a lot of replication in the openG VIs, presumably for completeness. Not using the openG stuff forces me to look in some of the more obscure palettes. -
How to exit from switch statement when condition is met first time
ShaunR replied to vhha1972's topic in LabVIEW General
There are several ways. For example, you can use this VI to detect the "direction" of your boolean change. -
Passing data between languages
ShaunR replied to Mark Yedinak's topic in Application Design & Architecture
I use base64 because everyone has base64 decoders and it has the benefit that images can be planted straight in a browser without explicit conversion (although that's probably not much of interest for your use case) -
Closed Loop Control System Could Go Unstable Due To Noisy Feedback
ShaunR replied to KWaris's topic in LabVIEW General
There are filter examples shipped with the FPGA (look for "notch filter") and there are IPs that you can download from NI that also give you more filters such as the median filter. You can even create your own IP using the IP wizard in the project manager if push comes to shove, but I've never used it (I'm lazy like that) It is not unusual for the derivative term to do nothing in some systems. With such a small integral, it is arguable whether you really need a PI controller even.(P only with deadband for example). However. It's "software", so what the heck eh? It works and that's the main point. -
Closed Loop Control System Could Go Unstable Due To Noisy Feedback
ShaunR replied to KWaris's topic in LabVIEW General
Well. As you know. It is the integral term that dampens ringing and overshoot. +-0.02v out of +-10V is 0.2% of FSD and I expect that is within the spec of the device. So the choices as I see it in the absence of being able to increase the integral and without getting into process modelling are: 1. Apply a 50-60Hz band-stop filter on the input (try and reduce the amplitude of the mains signal). 2. Apply a median filter to the Derivative term (reduce the feedback sensitivity to noise) 3. Introduce a dead-band (turn off control when within set limits-good for mechanical systems) 4. All or a combination of the above. -
Compiled Code Complexity analyzer for LabVIEW 2012
ShaunR replied to gregstoll's topic in LabVIEW General
Interesting little project that opens up a couple of possibilities (like automagically in-lining those identified as capable of being in-lined). Maybe it can be used for older versions by running it in 2012 and back-saving to a previous version (2010/2011?). Can it be extended to include or say something about subroutined vis? I get many error prompts (error 1026 occured at Close reference-vi ref invalid) when scanning either a directory or a project. I can get file output and do analysis though. A bit of documentation wouldn't go amiss as to what "complexity" actually means and what can be gleaned from it. I assume a complexity of >5 is "too complex"? Does this mean it is a candidate for refactoring? If a vi is marked as "Partially Optimised", what does it mean and what can be done about it, if anything? etc. It Needs a bit of love , but very interesting. -
Closed Loop Control System Could Go Unstable Due To Noisy Feedback
ShaunR replied to KWaris's topic in LabVIEW General
What frequency is the sine wave. 50Hz? What is the +-0,02 in comparison to the range (+-5v sensor?) Does your PID controller implementation have a dead band? -
A guesstimate is not a guess. It is an estimate without having all the facts. As Order Of Growth is a simplified relational analysis and usually only denotes a upper bound; it is a "guesstimate" however much maths you put around it. It is a very crude way of describing processes.
-
Perhaps you are just more use to the older terminology of "guesstimate"
-
It was a "play on words". Intelligent? Me? Naaah. I write LabVIEW programs. If I was intelligent I'd write Malbolge.
-
I bet you say that to all the boys
-
Command design pattern and composition of functions
ShaunR replied to 0_o's topic in Object-Oriented Programming
-
Have you got a CAR number?
-
Programmatically changing the value of a "numeric control"?
ShaunR replied to Stepper's topic in LabVIEW General
-
No. As Phillip states. It is not a modem and therefore does not use Modem hardware signalling.
-
Programmatically changing the value of a "numeric control"?
ShaunR replied to Stepper's topic in LabVIEW General
-
Not even a week and there's a patch?
-
My three months worth of hard work but UDP issue
ShaunR replied to KWaris's topic in LabVIEW General
Are you trying to open the port on the LabVIEW side twice? You can only open a port once or, more specifically, you can only bind one socket. If you are trying to "multicast" then you must use a multicast address, however, you will still open only one socket.