8.4 مقدِّر الحالة (State Estimator) 

    في الأقسام السابقة قدمنا تغذية راجعة للحالة (state feedback) تحت افتراض ضمني بأن جميع متغيرات الحالة متاحة للتغذية الراجعة. قد لا يصح هذا الافتراض في الممارسة إما لأن متغيرات الحالة غير متاحة للربط المباشر أو لأن أجهزة الاستشعار أو المحوِّلات غير متوفرة أو باهظة جدا. في هذه الحالة، لكي نطبق تغذية راجعة للحالة، يجب أن نصمم جهازا يسمى مقدِّر الحالة (state estimator) أو مراقب الحالة (state observer) بحيث يولد خرج الجهاز تقديرا للحالة. في هذا القسم نقدم مقدِّرات حالة كاملة الأبعاد (full-dimensional state estimators). نستخدم علامة القبعة فوق المتغير للدلالة على تقديره. على سبيل المثال، $ \hat{\mathbf{x}} $ هو تقدير لـ $ \mathbf{x} $ و $ \hat{\bar{\mathbf{x}}} $ هو تقدير لـ $ \bar{\mathbf{x}} $ .

    اعتبر معادلة فضاء الحالة (state-space equation) ذات البعد $ n $

    $$ \begin{array}{l} \dot {\mathbf {x}} (t) = \mathbf {A} \mathbf {x} (t) + \mathbf {b} u (t) \tag {8.38} \\ y (t) = \mathbf {c x} (t) \\ \end{array} $$


    الشكل 8.5 مقدِّر حالة حلقة مفتوحة (open-loop state estimator).

    حيث تكون $ \mathbf{A} $ و $ \mathbf{b} $ و $ \mathbf{c} $ معطاة ويكون الدخل $ u(t) $ والخرج $ y(t) $ متاحين لنا. غير أن الحالة $ \mathbf{x} $ غير متاحة لنا. المشكلة هي تقدير $ \mathbf{x} $ من $ u $ و $ y $ مع معرفة $ \mathbf{A} $ و $ \mathbf{b} $ و $ \mathbf{c} $ . إذا عرفنا $ \mathbf{A} $ و $ \mathbf{b} $ ، يمكننا استنساخ النظام الأصلي كما يلي

    $$ \dot {\hat {\mathbf {x}}} (t) = \mathbf {A} \hat {\mathbf {x}} (t) + \mathbf {b} u \tag {8.39} $$

    كما في الشكل 8.5. لاحظ أن النظام الأصلي قد يكون نظاما كهروميكانيكيا والنظام المستنسخ قد يكون دارة مضخّم عمليات (op-amp). وسيسمى الاستنساخ مقدِّرا حلقة مفتوحة (open-loop estimator). الآن إذا كانت (8.38) و(8.39) لهما الحالة الابتدائية نفسها، فإننا لأي دخل نحصل على $ \hat{\mathbf{x}}(t) = \mathbf{x}(t) $ لكل $ t \geq 0 $ . ولذلك يبقى السؤال هو كيفية إيجاد الحالة الابتدائية لـ(8.38) ثم ضبط الحالة الابتدائية لـ(8.39) على تلك الحالة. إذا كانت (8.38) قابلة للملاحظة (observable)، يمكن حساب حالتها الابتدائية $ \mathbf{x}(0) $ من $ u $ و $ y $ على أي مجال زمني، لنقل $ [0, t_1] $ . يمكننا بعد ذلك حساب الحالة عند $ t_2 $ وضبط $ \hat{\mathbf{x}}(t_2) = \mathbf{x}(t_2) $ . عندئذ نحصل على $ \hat{\mathbf{x}}(t) = \mathbf{x}(t) $ لكل $ t \geq t_2 $ . وبالتالي إذا كانت (8.38) قابلة للملاحظة، يمكن استخدام مقدِّر حلقة مفتوحة لتوليد متجه الحالة.

    هناك عيبان، مع ذلك، في استخدام مقدِّر حلقة مفتوحة. أولا، يجب حساب الحالة الابتدائية وضبطها كل مرة نستخدم فيها المقدِّر. وهذا غير عملي للغاية. ثانيا، والأكثر خطورة، إذا كانت المصفوفة $ \mathbf{A} $ لها قيم ذاتية ذات أجزاء حقيقية موجبة، فإن حتى لفارق صغير جدا بين $ \mathbf{x}(t_0) $ و $ \hat{\mathbf{x}}(t_0) $ عند بعض $ t_0 $ ، والذي قد ينجم عن اضطراب أو تقدير غير كامل للحالة الابتدائية، فإن الفرق بين $ \mathbf{x}(t) $ و $ \hat{\mathbf{x}}(t) $ سينمو مع الزمن. لذلك فإن مقدِّر الحلقة المفتوحة غير مُرضٍ عموما.

    نرى من الشكل 8.5 أنه رغم أن دخل وخرج (8.38) متاحان، فإننا نستخدم الدخل فقط لقيادة مقدِّر الحلقة المفتوحة. الآن سنُعدّل المقدِّر في الشكل 8.5 إلى المقدِّر في الشكل 8.6، حيث يُقارن الخرج $ y(t) = \mathbf{c}\mathbf{x}(t) $ لـ(8.38) مع $ \mathbf{c}\hat{\mathbf{x}}(t) $ . ويُستخدم فرقُهما بعد مروره عبر متجه كسب ثابت $ \mathbf{l} $ من الرتبة $ n \times 1 $ كحد تصحيح. إذا كان الفرق صفرا فلا حاجة للتصحيح. وإذا كان الفرق غير صفري وكان الكسب $ \mathbf{l} $ مصمما على نحو مناسب، فإن الفرق سيدفع الحالة المقدَّرة إلى الحالة الفعلية. يُسمى هذا المقدِّر مقدِّرا حلقة مغلقة (closed-loop) أو مقدِّرا تقاربيا (asymptotic estimator) أو ببساطة مقدِّرا (estimator).


    الشكل 8.6 مقدِّر حالة حلقة مغلقة (closed-loop state estimator).


    الشكل 8.7 مقدِّر حالة حلقة مغلقة (closed-loop state estimator).

    يُعدَّل مقدِّر الحلقة المفتوحة في (8.39) الآن، تبعا للشكل 8.6، إلى

    $$ \dot {\hat {\mathbf {x}}} (t) = \mathbf {A} \hat {\mathbf {x}} (t) + \mathbf {b} u (t) + \mathbf {l} (y (t) - \mathbf {c} \hat {\mathbf {x}} (t)) $$

    والذي يمكن كتابته على الصورة

    $$ \dot {\hat {\mathbf {x}}} (t) = (\mathbf {A} - \mathbf {l c}) \hat {\mathbf {x}} (t) + \mathbf {b} u (t) + \mathbf {l} y (t) \tag {8.40} $$

    وهو موضح في الشكل 8.7. له مدخلان $ u $ و $ y $ ويعطي خرجه حالة مقدَّرة $ \hat{\mathbf{x}} $ . لنعرف

    $$ \mathbf {e} (t) := \mathbf {x} (t) - \hat {\mathbf {x}} (t) $$

    إنه الخطأ بين الحالة الفعلية والحالة المقدَّرة. وباشتقاق $ \mathbf{e} $ ثم إحلال (8.38) و(8.40) فيه نحصل على

    $$ \begin{array}{l} \dot {\mathbf {e}} (t) = \dot {\mathbf {x}} (t) - \dot {\hat {\mathbf {x}}} (t) = \mathbf {A} \mathbf {x} (t) + \mathbf {b} u (t) - (\mathbf {A} - \mathbf {l c}) \hat {\mathbf {x}} (t) - \mathbf {b} u (t) - \mathbf {l} (\mathbf {c x} (t)) \\ = (\mathbf {A} - \mathbf {l c}) \mathbf {x} (t) - (\mathbf {A} - \mathbf {l c}) \hat {\mathbf {x}} (t) = (\mathbf {A} - \mathbf {l c}) (\mathbf {x} (t) - \hat {\mathbf {x}} (t)) \\ \end{array} $$

    أو

    $$ \dot {\mathbf {e}} (t) = (\mathbf {A} - \mathbf {l c}) \mathbf {e} (t) \tag {8.41} $$

    هذه المعادلة تحكم خطأ التقدير. إذا أمكن إسناد جميع القيم الذاتية لـ $ (\mathbf{A} - \mathbf{I}\mathbf{c}) $ اعتباطيا، فيمكننا التحكم في معدل اقتراب $ \mathbf{e}(t) $ من الصفر أو، بصورة مكافئة، معدل اقتراب الحالة المقدَّرة من الحالة الفعلية. مثلا، إذا كانت جميع القيم الذاتية لـ $ (\mathbf{A} - \mathbf{I}\mathbf{c}) $ ذات أجزاء حقيقية سالبة أصغر من $ -\sigma $ ، فإن جميع عناصر $ \mathbf{e} $ ستقترب من الصفر بمعدلات أسرع من $ e^{-\sigma t} $ . وبالتالي، حتى إذا كان هناك خطأ كبير بين $ \hat{\mathbf{x}}(t_0) $ و $ \mathbf{x}(t_0) $ عند الزمن الابتدائي $ t_0 $ ، فإن الحالة المقدَّرة ستقترب من الحالة الفعلية بسرعة. نتيجة لذلك، لا حاجة لحساب الحالة الابتدائية لمعادلة فضاء الحالة الأصلية. وخلاصة القول، إذا أُسنِدت جميع القيم الذاتية لـ $ (\mathbf{A} - \mathbf{I}\mathbf{c}) $ بصورة مناسبة، فإن مقدِّر الحلقة المغلقة مرغوب فيه أكثر بكثير من مقدِّر الحلقة المفتوحة.

    كما في تغذية راجعة للحالة، فإن ما يشكل أفضل القيم الذاتية ليس مسألة بسيطة. ربما ينبغي وضعها بالتساوي على دائرة داخل القطاع المبين في الشكل 8.3. إذا كان من المقرر استخدام المقدِّر في تغذية راجعة للحالة، فيجب أن تكون قيم المقدِّر الذاتية أسرع من القيم الذاتية المرغوبة لتغذية راجعة للحالة. مرة أخرى، ستفرض مسائل التشبع والضوضاء قيودا على الاختيار. إحدى الطرق لتنفيذ الاختيار هي بالمحاكاة الحاسوبية.

    نظرية 8.03 

    اعتبر الزوج $ (\mathbf{A}, \mathbf{c}) $ . يمكن إسناد جميع القيم الذاتية لـ $ (\mathbf{A} - \mathbf{l}\mathbf{c}) $ اعتباطيا باختيار متجه ثابت حقيقي $ \mathbf{l} $ إذا وفقط إذا كان $ (\mathbf{A}, \mathbf{c}) $ قابلا للملاحظة (observable).

    يمكن إثبات هذه النظرية مباشرة أو بصورة غير مباشرة باستخدام نظرية الازدواجية (duality theorem). يكون الزوج $ (\mathbf{A}, \mathbf{c}) $ قابلا للملاحظة إذا وفقط إذا كان $ (\mathbf{A}', \mathbf{c}') $ قابلا للتحكم. إذا كان $ (\mathbf{A}', \mathbf{c}') $ قابلا للتحكم، يمكن إسناد جميع القيم الذاتية لـ $ (\mathbf{A}' - \mathbf{c}' \mathbf{k}) $ اعتباطيا باختيار متجه كسب ثابت $ \mathbf{k} $ . والمصفوفة المنقولة لـ $ (\mathbf{A}' - \mathbf{c}' \mathbf{k}) $ هي $ (\mathbf{A} - \mathbf{k}' \mathbf{c}) $ . وبالتالي لدينا $ \mathbf{l} = \mathbf{k}' $ . وخلاصة القول إن إجراء حساب مكاسب تغذية راجعة للحالة يمكن استخدامه لحساب الكسب $ \mathbf{l} $ في مقدِّرات الحالة.

    حل معادلة ليابونوف (Solving Lyapunov equation) 

    نناقش طريقة مختلفة لتصميم مقدِّر حالة لمعادلة فضاء الحالة ذات البعد $ n $

    $$ \begin{array}{l} \dot {\mathbf {x}} (t) = \mathbf {A} \mathbf {x} (t) + \mathbf {b} u (t) \tag {8.42} \\ y (t) = \mathbf {c x} (t) \\ \end{array} $$

    هذه الطريقة مزدوجة (dual) لإجراء 8.1 في القسم 8.2.1.

    إجراء 8.01 

    1. اختر مصفوفة مستقرة (stable) اعتباطية $ \mathbf{F} $ من الرتبة $ n \times n $ لا تشترك في أي قيم ذاتية مع $ \mathbf{A} $ .

    2. اختر متجها اعتباطيا $ \mathbf{l} $ من الرتبة $ n \times 1 $ بحيث يكون (F.l) قابلا للتحكم (controllable).

    3. حل $ \mathbf{T} $ الفريد في معادلة ليابونوف (Lyapunov equation) $ \mathbf{TA} - \mathbf{FT} = \mathbf{l}\mathbf{c} $ . هذه $ \mathbf{T} $ غير منفردة اتباعا لمزدوج نظرية 8.4.

    4. ثم فإن معادلة فضاء الحالة

    $$ \dot {\mathbf {z}} (t) = \mathbf {F} \mathbf {z} (t) + \mathbf {T b u} (t) + \mathbf {l y} (t) \tag {8.43} $$
    $$ \hat {\mathbf {x}} (t) = \mathbf {T} ^ {- 1} \mathbf {z} (t) \tag {8.44} $$

    تولِّد تقديرا لـ $ \mathbf{x} $

    نبرر الإجراء أولا. لنعرف

    $$ \mathbf {e} (t) := \mathbf {z} (t) - \mathbf {T x} (t) $$

    عندئذ نحصل، باستبدال TA بـ $ \mathbf{FT} + \mathbf{lc} $

    $$ \begin{array}{l} \dot {\mathbf {e}} (t) = \dot {\mathbf {z}} (t) - \mathbf {T} \dot {\mathbf {x}} (t) = \mathbf {F} \mathbf {z} (t) + \mathbf {T} \mathbf {b} u (t) + \mathbf {l} \mathbf {c x} (t) - \mathbf {T} \mathbf {A} \mathbf {x} (t) - \mathbf {T} \mathbf {b} u (t) \\ = \mathbf {F} \mathbf {z} (t) + \mathbf {l c x} (t) - (\mathbf {F T} + \mathbf {l c}) \mathbf {x} (t) = \mathbf {F} (\mathbf {z} (t) - \mathbf {T x} (t)) = \mathbf {F e} (t) \\ \end{array} $$

    إذا كانت $ \mathbf{F} $ مستقرة (stable)، فعند أي $ \mathbf{e}(0) $ يقترب متجه الخطأ $ \mathbf{e}(t) $ من الصفر عندما $ t \to \infty $ . وبالتالي فإن $ \mathbf{z}(t) $ يقترب من $ \mathbf{T}\mathbf{x}(t) $ أو، بصورة مكافئة، فإن $ \mathbf{T}^{-1}\mathbf{z}(t) $ هو تقدير لـ $ \mathbf{x}(t) $ . جميع المناقشات في القسم 8.2.1 تنطبق هنا ولن نعيدها.