Transparent boolean values form the basis of PLCs, the programming language that controls most manufacturing systems. This is because downtime in a factory can cost large amounts of money, and therefore faults need to be obvious in order to be quickly resolved. While individual components in modern assembly lines are increasingly complex, using computer vision, multi-axis manipulators and even self-driving delivery platforms, their output must ultimately generate a single True/False value in order to be compatible with the larger process. At GradientOne, we recognize that our product, with its focus on a broad range of capabilities for research and development, may only be used for a specific task as one component in a larger system.
Therefore, we have recently added the capability to run pass/fail criteria against previously collected test results. Pass/Fail criteria can be applied onto instrument-measured criteria, such as a oscilloscope-reported frequency of a repeating signal, or on previous GradientOne calculated measurement, such as a pattern match in a set of x-y set of data. This post will go over how to define a simple Pass/Fail criteria.
For this example, we will use pass/fail criteria pull out all the samples in our CAN database where the motor was moving for at least 300 microseconds. First, we have created two patterns on a sample trace, one when the velocity went from 0 to its maximum speed, and the second from when the velocity went from its maximum speed back to 0.
Next, we create a measurement suite. We give it the name Movement Pass/Fail, and it has two steps:
After saving, we can run the new suite by selecting the checkbox next to the name and clicking on Run Selected, selecting the results to run it against, and clicking on Run. The results will appear in the modal:
If we click on the results link, the results generated by this analysis suite under the plot:
We can also search through all data by that result. To find all the instances that passed, we type “Movement__03=1” into the search bar on the SEARCH tab. When converting to measurements to search indexes, spaces are replaced with underscores, punctuation is removed and Pass/Fail is converted to 1/0. As we can see, this returns 19 results:
Whereas searching for “Movement__03=0” returns no results, meaning no runs passed our test; all were moving for more than 0.3 seconds.
From this example we hope to have inspired you to create your own pass/fail criteria. There are lots of scenarios we did not cover, such as the voltage on a trace being outside a range, the rise/fall time of a square pulls being too large, or the presence or absence of a decoded byte in a digital IO trace.