Patent ID: 8010475

Claim:
A method for detecting and avoiding faults in a distributed factory control system having a plurality of industrial controllers, each said controller controlling at least one underlying process, the method comprising: in a first controller, identifying a symptom of a fault condition by identifying a deviation of a state of an underlying process controlled by the first controller from a corresponding state kept by the controller; in the first controller, measuring a persistence of the symptom, and ignoring the symptom if the measured persistence is below a threshold value; finding other controllers involved in the fault condition by generating in at least the first controller a search tree having leaf nodes that are monitored conditions; identifying the fault condition including identifying states of the other controllers involved in the fault condition; and reconfiguring control rules controlling states of the involved controllers to avoid the fault condition in the future; wherein finding other controllers involved in the fault condition further comprises: starting the search tree at a state where place p 1 of a time Petri net is marked for an amount of time φ≧THT max (p 1 ) where THT max (p 1 ) is a maximum token holding time of place p 1 ; if none of the leaf nodes of the search tree in the first controller exceeds its maximum token holding time, then generating a search tree in a second controller starting at a place q of a time Petri net that is an output of a transition t 1 to which p 1 is an input; and creating a chain of controllers by repeating the generating a search tree step in additional controllers until one of the following conditions is met: a. maximum token holding time condition is not exceeded in any leaf node in a search tree; b. none of the places in a controller where the maximum token holding time has been exceeded lies in any path with places or transitions connected to other controllers; and c. a search tree within a controller contains only null-cycles.