I'm an embedded systems designer, with a little background in fuzzy logic. I'm developing a device for machine diagnostics based on a series of sensors data. My question is whether through fuzzy logic I can develop some kind of diagnostic indicator of machine parts failure.

Let's say that I have the Sensor A and sensor B near three parts. I am wondering if it is possible to get probabilities that part 1, part 2, or part 3 are in failure.

I can collect all physical parameters as temperature, pressure, speed, vibration, etc. related to each of those parts. Also I have the expert person who can give me info about relation among data collection and failures. However, I don't have interest in accomplishing this with an expert system.


There is absolutely no doubt that fuzzy logic can contribute to the reliability and accuracy of real time diagnostics of mechanical, thermodynamic, and electro-magnetic devices. I can state this with assurance because it exists in aeronautics products today.

One of the senior PhDs at the research facility wanted to acquire data via standard techniques and had purchased a brigade of high end Hewlett Packard workstations and instrumentation clusters. Another senior PhD there wanted to build a fuzzy logic container to provide early warnings of failures, just as implied in the question. There was some interplay between those two projects in their application in the field.

My direct involvement was to teach the first PhD OO and C++ and design and implement a scientific computing framework to churn the Big Data for the second PhD. The framework provided a super-set of the union of SciPy and TensorFlow with a little PyTorch added. That we developed these techniques before Java and Python existed is why Hewlett Packard sent engineers to study what we were doing, with DoD permission, of course.

What you want to do is this:

  • Become familiar with the open source options in Java, Python, and C. The general trend is to either use Java-ML or use C wrapped in the above mentioned Py libraries.
  • Use 16 or 24 bit multi-channel data acquisition with time stamps and latched, concurrent A-to-D conversion at a frequency at least twice1 the 16th harmonic of the vibration base frequencies.
  • Ensure that you have sufficient system memory to hold what for embedded qualifies as Big Data2.
  • Ensure that you know how spectra (both amplitude and phase) can be obtained via FFT from channels.
  • Use LINUX, a single board computer, and either Intel Movidius3 or NVidia CUDA for hardware acceleration.
  • The fuzzy logic container and any assistive reinforced learning can be on the embedded CPU and leverage the hardware acceleration.
  • The fuzzy rules can be acquired from the experts to which you have access, as indicated in the question.
  • Read Chaos Theory Tamed by Williams, 1997 to get familiar with phase relationships between input channels and how to analyze changes in chaotic behavior between the harmonics.

Start with small POCs and generate independent components that can be connected and tested independently with input that came from the output of previously tested components. Here are some, in rough order of development and signal path.

  • Data acquisition of multiple samples of multiple channels to a matrix.
  • FFT of acquired data to an amplitude-phase array in the frequency domain.
  • Analysis to determine the patterns in metrics that precede failure.
  • Introduce and train artificial networks (either LSTM or attention type) where indicated to remove redundancy from the information that will be input to the fuzzy logic container.
  • Write up the rules and place them in the container.
  • Train the fuzz.
  • Test the system.

You will need to work with the experts on most of these steps. If you try to involve them at the rule writing stage and they weren't privy to any of the previous developments, they may be confused.

I'm not a lawyer, but, because of the involvement of failure prediction experts, I think you'll need an internationally binding NDA to ensure the experts don't walk away with the product of your research and move to another country.

These are a few considerations for product reliability you may need to consider even after you have a working system.

  • Develop a way to adapt the system in real time ... to tracking changes in what indicates near failure based on a centralized database related to the product.
  • Consider version control and deployment challenges.

I'm sorry that I have no further references. You can try the IEEE library if you have access. I have been too busy doing this type of work to publish what we do, but I think most of the important directions are included here already.


[1] Not much can be learned about impending failure from the primary harmonic of vibration. The first 16 harmonics are sufficient. Because of Nyquist Criteria considerations, the sample rate must be twice the top harmonic. This means that if your vibration is 1 KHz, the sample rate must be at least 32 KHz.

[2] Big Data input rates may be necessary because with 8 channels of strain input from Wheatstone bridges of gauges, 8 channels of accelerometer, 8 channels of IR sensing and the above vibration base harmonic, we have (24 channels + 1 time stamp) x 32 KHz x 3 bytes per channel-sample = 24 Mbytes per second. If your failure detection window holds 10 seconds of vibration data as IEEE 64 bit reals and you send 1 second (overlapping) Hamming windows to the hardware FFT, just for that alone will need 12.8 Gbyte input matrix, 6.4 for the input and 6.4 for the output.

[3] Available for embedded applications from Mouser and other distributors as properly paired single board computers and Movidius mPCIe (mini PCI express) daughter boards from makers like Aaeon.

| improve this answer | |

Fuzzy logic is create "sentences that solve a problem" this have "weights" and mix sentences. if you focus is diagnostic, every sentences shall begin with a sencente like to

"if the main network trunk is ok, the health of machine is right"
"but if the many sensors is not ok, the health of machine is bad" 

in word "many" you set "weight" like to 0.6 from 1, etc, after you apply math to fuzification, after you can apply ai to a set of rules that hold health system in many situations.

| improve this answer | |

Fuzzy logic itself provides nothing which will to solve the problem with algorithms, that means there are no “Fuzzy control libraries” available. Instead, Fuzzy logic is a development technique similar to agile programming and object-oriented design. The idea is to ground the domain problem into linguistic variables which results into linguistic output. Sounds a bit obscure? Let us describe it for the concrete problem:

The first step to do is to formalize existing knowledge with a mindmap. That means, both sensors, all the parameters (temperature, speed, vibration) and the machine parts have to be written down in a mindmap. Additional notes with the concrete part-names and the task of the machine are helpful too. It will be a fact sheet of the domain which can be understand by humans. Then, the domain gets converted into a fuzzy logic program. That means, subfunctions are defined for detecting issues, e.g. “temperaturetoolow?()” and these primitives are combined to higher-level diagnostics.

If a bug in the system is there – and this is likely, because fuzzy systems have a tendency to become complex – the best way to react is to create a bug ticket in the issue tracker, so that the project team of skilled engineers can take a look at it.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.