Главная страница
Навигация по странице:

  • 225 Файл kurs.py

  • кр. Ю. Ю. Громов, О. Г. Иванова, В. В. Алексеев, М. П. Беляев, Д. П. Швец, аи. Елисеев интеллектуальные информационные системы и технологии


    Скачать 2.03 Mb.
    НазваниеЮ. Ю. Громов, О. Г. Иванова, В. В. Алексеев, М. П. Беляев, Д. П. Швец, аи. Елисеев интеллектуальные информационные системы и технологии
    Дата17.02.2023
    Размер2.03 Mb.
    Формат файлаpdf
    Имя файлаgromov2-a.pdf
    ТипДокументы
    #941483
    страница18 из 20
    1   ...   12   13   14   15   16   17   18   19   20
    191
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule q_zaderzh
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh none))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Принтер печатает с
    большой задержкой)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- zaderzh ")
    (prev_ans "")
    (state diag)) else
    (modify ?F (cur_quest "Застревают ли листы бумаги на выходе из принтера)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- zastr_vyhod ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))
    (send [cur_printer] put-zastr_vyhod none))
    (halt))
    (defrule r_zastr_vyhod
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod yes))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Причина подобного дефекта вызвана загрязнением или ослаблением прижима роликов выхода бумаги
    Для устранения неисправности система предлагает очистить резиновую поверхность ролика и
    проверить пружины на ребристых пластмассовых роликах
    Если не все проблемы устранены, попробуйте выполнить диагностику заново "Застревают ли листы бумаги на выходе из принтера)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- zastr_vyhod ")
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-zastr_vyhod none))
    (halt))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule q_shum
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum none))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Слышен ли повышенный шум при работе принтера)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval "send [cur_printer] put-shum ")
    (prev_ans "")
    (state diag)) else
    (modify ?F (cur_quest "Принтер печатает с
    большой задержкой)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- zaderzh ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))
    (send [cur_printer] put-zaderzh none))
    (halt))

    193
    (defrule r_zaderzh
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh yes))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Подобный дефект вызван отказом интерфейсной платы
    Для устранения неисправности система предлагает заменить её
    Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Принтер печатает с
    большой задержкой)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- zaderzh ")
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-zaderzh none))
    (halt))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule q_kachestvo_laser
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum no) (kachestvo none))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Укажите качество отпечатка)
    (ans "бледное изображение " "на изображении вертикальные белые полосы " "неравномерная контрастность изображения " "на обратной стороне отпечатка видны посторонние изображения " "не закрепляется часть изображения" "нормальное " "вариант отсутствует в
    списке ")
    (sys_ans bled vert_pol contr obrat zakrep norm drugoi_otv)

    194
    (user_eval
    "send
    [cur_printer] put- kachestvo ")
    (prev_ans "")
    (state diag)) else
    (modify ?F (cur_quest "Слышен ли повышенный шум при работе принтера)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval "send [cur_printer] put-shum ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))
    (send [cur_printer] put-shum none))
    (halt))
    (defrule r_shum
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum yes))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Дефект вызван тем, что загрязнились шестерни главного привода принтера
    Для устранения неисправности система предлагает снять редуктор, очистить все шестерни от пыли и
    тонера
    , а
    затем смазать их
    Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Слышен ли повышенный шум при работе принтера)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval "send [cur_printer] put-shum ")
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-shum none))
    (halt))

    195
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule r_bled_laser
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum no) (kachestvo bled))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Бледная печать появляется в
    результате выхода из строя магнитного вала картриджа
    Для устранения неисправности система предлагает заменить магнитный вал
    Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Укажите качество отпечатка)
    (ans "бледное изображение " "на изображении вертикальные белые полосы " "неравномерная контрастность изображения " "на обратной стороне отпечатка видны посторонние изображения " "не закрепляется часть изображения" "нормальное " "вариант отсутствует в
    списке ")
    (sys_ans bled vert_pol contr obrat zakrep norm drugoi_otv)
    (user_eval
    "send
    [cur_printer] put- kachestvo ")
    (prev_q no)
    (prev_ans "бледное изображение ")
    (state diag))
    (send [cur_printer] put-kachestvo none))
    (halt))
    (defrule r_vert_pol_laser
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum no) (kachestvo vert_pol))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Причина дефекта связана с
    за
    - грязнением оптической системы лазер- сканера
    Для устранения неисправности система предлагает очистить её
    Если

    196 не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Укажите качество отпечатка)
    (ans "бледное изображение " "на изображении вертикальные белые полосы " "неравномерная контрастность изображения " "на обратной стороне отпечатка видны посторонние изображения " "не закрепляется часть изображения" "нормальное " "вариант отсутствует в
    списке ")
    (sys_ans bled vert_pol contr obrat zakrep norm drugoi_otv)
    (user_eval
    "send
    [cur_printer] put- kachestvo ")
    (prev_q no)
    (prev_ans "на изображении вертикальные белые полосы ")
    (state diag))
    (send [cur_printer] put-kachestvo none))
    (halt))
    (defrule r_contr_laser
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum no) (kachestvo contr))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Подобный дефект вызван тем, что сильно загрязнился вал переноса изображения
    Для устранения неисправности система предлагает очистить вал от пыли и
    тонера
    Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Укажите качество отпечатка)
    (ans "бледное изображение " "на изображении вертикальные белые полосы " "неравномерная контрастность изображения " "на обратной стороне отпечатка видны посторонние изображения " "не закрепляется часть изображения" "нормальное " "вариант отсутствует в
    списке ")
    (sys_ans bled vert_pol contr obrat zakrep norm drugoi_otv)
    (user_eval
    "send
    [cur_printer] put- kachestvo ")
    (prev_q no)
    (prev_ans неравномерная контрастность изображения ")
    (state diag))
    (send [cur_printer] put-kachestvo none))
    (halt))
    (defrule r_obrat_laser
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum no) (kachestvo obrat))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Дефект вызван износом краёв силиконового вала
    К
    нему прилипает тонер, который переносится на обратную сторону бумаги
    Для устранения неисправности система предлагает заменить силиконовый вал
    Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Укажите качество отпечатка)
    (ans "бледное изображение " "на изображении вертикальные белые полосы " "неравномерная контрастность изображения " "на обратной стороне отпечатка видны посторонние изображения " "не закрепляется часть изображения" "нормальное " "вариант отсутствует в
    списке ")
    (sys_ans bled vert_pol contr obrat zakrep norm drugoi_otv)
    (user_eval
    "send
    [cur_printer] put- kachestvo ")
    (prev_q no)

    198
    (prev_ans "на обратной стороне отпечатка видны посторонние изображения ")
    (state diag))
    (send [cur_printer] put-kachestvo none))
    (halt))
    (defrule r_zakrep_laser
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum no) (kachestvo zakrep))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Подобный дефект возникает из- за разрыва термоплёнки
    Причин может быть много попадание вместе с
    бумагой скрепок, высыхание или отсутствие смазки вместе контакта термоплёнки и
    нагревательного элемента, неравномерный прижим роллера к
    резиновому валу, брак самой термоплёнки
    , повреждение термопленки острыми предметами при попытке извлечения застрявшей бумаги и
    т д
    Для устранения неисправности система предлагает заменить термоплёнку
    Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Укажите качество отпечатка)
    (ans "бледное изображение " "на изображении вертикальные белые полосы " "неравномерная контрастность изображения " "на обратной стороне отпечатка видны посторонние изображения " "не закрепляется часть изображения" "нормальное " "вариант отсутствует в
    списке ")
    (sys_ans bled vert_pol contr obrat zakrep norm drugoi_otv)
    (user_eval
    "send
    [cur_printer] put- kachestvo ")
    (prev_q no)
    (prev_ans "не закрепляется часть изображения)
    (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum no) (kachestvo norm))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Данная система не выявила неисправность в
    принтере
    .")
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Укажите качество отпечатка)
    (ans "бледное изображение " "на изображении вертикальные белые полосы " "неравномерная контрастность изображения " "на обратной стороне отпечатка видны посторонние изображения " "не закрепляется часть изображения" "нормальное " "вариант отсутствует в
    списке ")
    (sys_ans bled vert_pol contr obrat zakrep norm drugoi_otv)
    (user_eval
    "send
    [cur_printer] put- kachestvo ")
    (prev_q no)
    (prev_ans "нормальное ")
    (state diag))
    (send [cur_printer] put-kachestvo none))
    (halt))
    (defrule r_drugoi_otv_laser
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum no) (kachestvo drugoi_otv))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Данная система не может помочь "Укажите качество отпечатка)
    (ans "бледное изображение " "на изображении вертикальные белые полосы " "неравномерная контрастность изображения " "на обратной стороне отпечатка видны посторонние изображения " "не закрепляется часть изображения" "нормальное " "вариант отсутствует в
    списке ")
    (sys_ans bled vert_pol contr obrat zakrep norm drugoi_otv)
    (user_eval
    "send
    [cur_printer] put- kachestvo ")
    (prev_q no)
    (prev_ans "вариант отсутствует в
    списке ")
    (state diag))
    (send [cur_printer] put-kachestvo none))
    (halt))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule q_install_skrip
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes) (print_doc no) (install_skrip none))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "При инсталляции принтера слышен скрип слева)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- install_skrip ")
    (prev_ans "")
    (state diag)) else
    (modify ?F (cur_quest "Выполняется ли печать документа "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- print_doc ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))
    (send [cur_printer] put-print_doc none))
    (halt))

    201
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule q_opred_cart_laser
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes)
    (print_doc no)
    (install_skrip no)
    (opred_cart none))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Принтер определяет наличие картриджа)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- opred_cart ")
    (prev_ans "")
    (state diag)) else
    (modify ?F (cur_quest "При инсталляции принтера слышен скрип слева)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- install_skrip ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))
    (send [cur_printer] put-install_skrip none))
    (halt))
    (defrule r_install_skrip
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes) (print_doc no) (install_skrip yes))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Лопнула шестерня основного привода
    Для устранения неисправности система предлагает заменить шестерню, удалить старую смазку из привода и
    нанести новую
    Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend))

    202
    else
    (modify ?F (cur_quest "При инсталляции принтера слышен скрип слева)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- install_skrip ")
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-install_skrip none))
    (halt))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule q_opred_bum_laser
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes)
    (print_doc no)
    (install_skrip no)
    (opred_cart yes) (opred_bum none))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Принтер определяет наличие бумаги в
    лотке
    ?")
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- opred_bum ")
    (prev_ans "")
    (state diag)) else
    (modify ?F (cur_quest "Принтер определяет наличие картриджа)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- opred_cart ")
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-opred_cart none))
    (halt))
    (defrule r_opred_cart_laser
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes)
    (print_doc no)
    (install_skrip no)
    (opred_cart no))

    203
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "После закрытия верхней крышки принтера к
    картриджу с
    помощью тяги подводится приводная шестерня
    В
    её
    центре есть подпружиненный штифт- контакт, который подключает к
    общему проводу вал фоторецептора
    При попадании на штифт тонера цепь размыкается
    Для устранения неисправности система предлагает отвернуть винт планки прижима штифта и
    очистить направляющее отверстие, в
    котором ходит штифт контакт
    Если не все проблемы устранены, попробуйте выполнить диагностику заново "Принтер определяет наличие картриджа)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- opred_cart ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))
    (send [cur_printer] put-opred_cart none))
    (halt))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule q_zahvat_bum
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes)
    (print_doc no)
    (install_skrip no)
    (opred_cart yes) (opred_bum yes) (zahvat_bum none))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Принтер захватывает бумагу из приёмного лотка)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- zahvat_bum ")

    204
    (prev_ans "")
    (state diag)) else
    (modify ?F (cur_quest "Принтер определяет наличие бумаги в
    лотке
    ?")
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- opred_bum ")
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-opred_bum none))
    (halt))
    (defrule r_opred_bum_laser
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes)
    (print_doc no)
    (install_skrip no)
    (opred_cart yes) (opred_bum no))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Засорился оптический датчик или застрял его активатор
    Для устранения неисправности система предлагает очистить оптический датчик от загрязнений и
    проверить возврат в
    исходное положение его активатора Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Принтер определяет наличие бумаги в
    лотке
    ?")
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- opred_bum ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))
    (send [cur_printer] put-opred_bum none))
    (halt))

    205
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule r_zahvat_bum_yes
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes)
    (print_doc no)
    (install_skrip no)
    (opred_cart yes) (opred_bum yes) (zahvat_bum yes))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Данная система не может помочь "Принтер захватывает бумагу из приёмного лотка)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- zahvat_bum ")
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-zahvat_bum none))
    (halt))
    (defrule r_zahvat_bum_no
    (object (is-a PRINTER_LASER) (name [cur_printer])
    (power yes)
    (print_doc no)
    (install_skrip no)
    (opred_cart yes) (opred_bum yes) (zahvat_bum no))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Неисправен или сильно загряз- нён подающий ролик принтера
    Для устранения неисправности система предлагает произвести восстановление свойств ролика жидкостью для профилактики резиновых поверхностей или заменить его
    Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend))

    206
    else
    (modify ?F (cur_quest "Принтер захватывает бумагу из приёмного лотка)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- zahvat_bum ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))
    (send [cur_printer] put-zahvat_bum none))
    (halt))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Вопросы для диагностики неисправности струйного принтера no) then
    (modify ?F (cur_quest "Принтер делает попытку провернуть основной вали выключается)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- otkl_val ")
    (prev_ans "")
    (state diag)) else
    (modify ?F (cur_quest "Включается ли принтер)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval "send [cur_printer] put-power ")
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-power none))
    (halt))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule q_print_doc_ink
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc none))
    ?F<-(UI-state (prev_q ?pr))

    207
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Выполняется ли печать документа "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- print_doc ")
    (prev_ans "")
    (state diag)) else
    (modify ?F (cur_quest "Принтер делает попытку провернуть основной вали выключается)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- otkl_val ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))
    (send [cur_printer] put-otkl_val none))
    (halt))
    (defrule r_otkl_val
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val yes))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Этот дефект связан с
    пере
    - грузкой главного привода
    Для устранения неисправности система предлагает вначале осмотреть визуально состояние элементов механизма подачи и
    транспорта бумаги, затем провернуть шестерню двигателя
    Если шестерня вращается туго, разобрать механизм и
    проверить втулки вращения валов Обычно этой процедуры достаточно для восстановления работоспособности принтера
    Но если механизм исправен, а
    принтер отключается при отсоединённом двигателе, тоне- исправен сам двигатель
    В
    этом случае его необходимо заменить Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend))

    208
    else
    (modify ?F (cur_quest "Принтер делает попытку провернуть основной вали выключается)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- otkl_val ")
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-otkl_val none))
    (halt))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule q_skrip
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc yes) (skrip none))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Слышен ли скрип при движении каретки)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval "send [cur_printer] put-skrip ")
    (prev_ans "")
    (state diag)) else
    (modify ?F (cur_quest "Выполняется ли печать документа "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- print_doc ")
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-print_doc none))
    (halt))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule q_bum_perekos_ink
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc yes) (skrip no)
    (bum_perekos none))
    ?F<-(UI-state (prev_q ?pr))

    209
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Лист бумаги подаётся с
    пере
    - косом)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- bum_perekos ")
    (prev_ans "")
    (state diag)) else
    (modify ?F (cur_quest "Слышен ли скрип при движении каретки)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval "send [cur_printer] put-skrip ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))
    (send [cur_printer] put-skrip none))
    (halt))
    (defrule r_skrip
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc yes) (skrip yes))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Высохла смазка на направляющей оси каретки
    Для устранения неисправности система предлагает нанести на направляющую ось каретки смазку, предназначенную для пластмассовых деталей
    Если не все проблемы устранены, попробуйте выполнить диагностику заново "Слышен ли скрип при движении каретки)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval "send [cur_printer] put-skrip ")

    210
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-skrip none))
    (halt))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule q_nesk_listov
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc yes) (skrip no)
    (bum_perekos no) (nesk_listov none))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Принтер одновременно захватывает несколько листов)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- nesk_listov ")
    (prev_ans "")
    (state diag)) else
    (modify ?F (cur_quest "Лист бумаги подаётся с
    пере
    - косом)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- bum_perekos ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))
    (send [cur_printer] put-bum_perekos))
    (halt))
    (defrule r_bum_perekos_ink
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc yes) (skrip no)
    (bum_perekos yes))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Для устранения неисправности система предлагает разобрать весь механизм и
    очистить все валы и
    поверхности
    , по которым движется бумага
    Если

    211 не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Лист бумаги подаётся с
    пере
    - косом)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- bum_perekos ")
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-bum_perekos))
    (halt))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule q_zastr_raboch
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc yes) (skrip no)
    (bum_perekos no) (nesk_listov no) (zastr_raboch none))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Застревает ли лист бумаги в
    рабочей полости принтера)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- zastr_raboch ")
    (prev_ans "")
    (state diag)) else
    (modify ?F (cur_quest "Принтер одновременно захватывает несколько листов)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- nesk_listov ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))

    212
    (send [cur_printer] put-nesk_listov))
    (halt))
    (defrule r_nesk_listov
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc yes) (skrip no)
    (bum_perekos no) (nesk_listov yes))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Загрязнилась или стерлась тормозная площадка
    Для устранения неисправности система предлагает очистить её
    или заменить
    Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Принтер одновременно захватывает несколько листов)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- nesk_listov ")
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-nesk_listov))
    (halt))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule q_kachestvo_ink
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc yes) (skrip no)
    (bum_perekos no) (nesk_listov no) (zastr_raboch no) (ka- chestvo none))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Укажите качество отпечатка)
    (ans "бледное изображение " "изображение смазано " "на изображении дополнительные горизонтальные

    213 полосы " "на изображении наезжает" строка на строку " нормальное " "вариант отсутствует в
    списке ")
    (sys_ans bled smaz horiz_pol str_na_str norm drugoi_otv)
    (user_eval
    "send
    [cur_printer] put- kachestvo ")
    (prev_ans "")
    (state diag)) else
    (modify ?F (cur_quest "Застревает ли лист бумаги в
    рабочей полости принтера)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- zastr_raboch ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))
    (send [cur_printer] put-zastr_raboch))
    (halt))
    (defrule r_zastr_raboch
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc yes) (skrip no)
    (bum_perekos no) (nesk_listov no) (zastr_raboch yes))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Подобная неисправность возникает из- за некорректного вытаскивания замятой бумаги
    Для устранения неисправности система предлагает визуально осмотреть механизм
    Если обнаружится отсутствие одного или нескольких металлических роликов прижима к
    рези
    - новым роликам основного вала и
    отломанные ушки, в
    кото
    - рых вращается вал, то необходимо заменить всю пружину
    Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Застревает ли лист бумаги в
    рабочей полости принтера)
    (ans "Нет " "Да ")

    214
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- zastr_raboch ")
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-zastr_raboch))
    (halt))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule r_bled_ink
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc yes) (skrip no)
    (bum_perekos no) (nesk_listov no) (zastr_raboch no) (ka- chestvo bled))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Картридж израсходован
    Для устранения неисправности система предлагает заменить его
    Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Укажите качество отпечатка)
    (ans "бледное изображение " "изображение смазано " "на изображении дополнительные горизонтальные полосы " "на изображении наезжает" строка на строку " нормальное " "вариант отсутствует в
    списке ")
    (sys_ans bled smaz horiz_pol str_na_str norm drugoi_otv)
    (user_eval
    "send
    [cur_printer] put- kachestvo ")
    (prev_q no)
    (prev_ans "бледное изображение ")
    (state diag))
    (send [cur_printer] put-kachestvo))
    (halt))
    (defrule r_smaz_ink
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc yes) (skrip no)

    215
    (bum_perekos no) (nesk_listov no) (zastr_raboch no) (ka- chestvo smaz))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Сильно загрязнились резиновые ножи очистки
    Для устранения неисправности система предлагает промыть их
    Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Укажите качество отпечатка)
    (ans "бледное изображение " "изображение смазано " "на изображении дополнительные горизонтальные полосы " "на изображении наезжает" строка на строку " нормальное " "вариант отсутствует в
    списке ")
    (sys_ans bled smaz horiz_pol str_na_str norm drugoi_otv)
    (user_eval
    "send
    [cur_printer] put- kachestvo ")
    (prev_q no)
    (prev_ans "изображение смазано ")
    (state diag))
    (send [cur_printer] put-kachestvo))
    (halt))
    (defrule r_horiz_pol_ink
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc yes) (skrip no)
    (bum_perekos no) (nesk_listov no) (zastr_raboch no) (ka- chestvo horiz_pol))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Для устранения неисправности система предлагает снять картриджи и
    проверить
    , есть ли на дюзах признаки наличия чернил
    Если они есть, необходимо проверить и
    очистить ракеля очистки
    Также влажным материалом очистить поверхность дюз картриджей
    Если не все проблемы устранены, попробуйте выполнить диагностику заново)

    216
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Укажите качество отпечатка)
    (ans "бледное изображение " "изображение смазано " "на изображении дополнительные горизонтальные полосы " "на изображении наезжает" строка на строку " нормальное " "вариант отсутствует в
    списке ")
    (sys_ans bled smaz horiz_pol str_na_str norm drugoi_otv)
    (user_eval
    "send
    [cur_printer] put- kachestvo ")
    (prev_q no)
    (prev_ans "на изображении дополнительные горизонтальные полосы ")
    (state diag))
    (send [cur_printer] put-kachestvo))
    (halt))
    (defrule r_str_na_str_ink
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc yes) (skrip no)
    (bum_perekos no) (nesk_listov no) (zastr_raboch no) (ka- chestvo str_na_str))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Загрязнился основной вал, поэтому нет хорошего сцепления с
    листом бумаги
    Для устранения неисправности система предлагает очистить основной вал
    Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Укажите качество отпечатка)
    (ans "бледное изображение " "изображение смазано " "на изображении дополнительные горизонтальные полосы " "на изображении наезжает" строка на строку " нормальное " "вариант отсутствует в
    списке ")

    217
    (sys_ans bled smaz horiz_pol str_na_str norm drugoi_otv)
    (user_eval
    "send
    [cur_printer] put- kachestvo ")
    (prev_q no)
    (prev_ans "на изображении наезжает" строка на строку ")
    (state diag))
    (send [cur_printer] put-kachestvo))
    (halt))
    (defrule r_norm_ink
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc yes) (skrip no)
    (bum_perekos no) (nesk_listov no) (zastr_raboch no) (ka- chestvo norm))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Данная система не выявила неисправность в
    принтере
    .")
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Укажите качество отпечатка)
    (ans "бледное изображение " "изображение смазано " "на изображении дополнительные горизонтальные полосы " "на изображении наезжает" строка на строку " нормальное " "вариант отсутствует в
    списке ")
    (sys_ans bled smaz horiz_pol str_na_str norm drugoi_otv)
    (user_eval
    "send
    [cur_printer] put- kachestvo ")
    (prev_q no)
    (prev_ans "нормальное ")
    (state diag))
    (send [cur_printer] put-kachestvo))
    (halt))
    (defrule r_drugoi_otv_ink
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc yes) (skrip no)

    218
    (bum_perekos no) (nesk_listov no) (zastr_raboch no) (ka- chestvo drugoi_otv))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Данная система не может помочь "Укажите качество отпечатка)
    (ans "бледное изображение " "изображение смазано " "на изображении дополнительные горизонтальные полосы " "на изображении наезжает" строка на строку " нормальное " "вариант отсутствует в
    списке ")
    (sys_ans bled smaz horiz_pol str_na_str norm drugoi_otv)
    (user_eval
    "send
    [cur_printer] put- kachestvo ")
    (prev_q no)
    (prev_ans "вариант отсутствует в
    списке ")
    (state diag))
    (send [cur_printer] put-kachestvo))
    (halt))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule q_caret_upor
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc no) (caret_upor none))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "После включения принтера каретка перемещается до упора в
    крайнее положение)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- caret_upor ")
    (prev_ans "")
    (state diag)) else

    219
    (modify ?F (cur_quest "Выполняется ли печать документа "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- print_doc ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))
    (send [cur_printer] put-print_doc))
    (halt))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule q_coord_lenta
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc no) (caret_upor yes) (coord_lenta none))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify
    ?F
    (cur_quest Координатная лента на месте)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- coord_lenta ")
    (prev_ans "")
    (state diag)) else
    (modify ?F (cur_quest "После включения принтера каретка перемещается до упора в
    крайнее положение)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- caret_upor ")
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-caret_upor))
    (halt))
    (defrule q_opred_cart_ink
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc no) (caret_upor no)
    (opred_cart none))
    ?F<-(UI-state (prev_q ?pr))

    220
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Принтер определяет наличие картриджей)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- opred_cart ")
    (prev_ans "")
    (state diag)) else
    (modify ?F (cur_quest "После включения принтера каретка перемещается до упора в
    крайнее положение)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- caret_upor ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))
    (send [cur_printer] put-caret_upor))
    (halt))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule r_coord_lenta_yes
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc no) (caret_upor yes) (coord_lenta yes))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Загрязнился оптический датчик определения положения каретки
    Для устранения неисправности система предлагает промыть оптический датчик спиртом Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify
    ?F
    (cur_quest Координатная лента на месте)
    (ans "Нет " "Да ")

    221
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- coord_lenta ")
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-coord_lenta))
    (halt))
    (defrule r_coord_lenta_no
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc no) (caret_upor yes) (coord_lenta no))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Для устранения неисправности система предлагает возвратить координатную ленту в
    нор
    - мальное положение
    Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify
    ?F
    (cur_quest Координатная лента на месте)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- coord_lenta ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))
    (send [cur_printer] put-coord_lenta))
    (halt))
    (defrule q_pod_bum
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc no) (caret_upor no)
    (opred_cart yes) (pod_bum none))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then

    222
    (modify ?F (cur_quest "Осуществляется ли подача бумаги "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- pod_bum ")
    (prev_ans "")
    (state diag)) else
    (modify ?F (cur_quest "Принтер определяет наличие картриджей)
    (ans "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- opred_cart ")
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-opred_cart))
    (halt))
    (defrule r_opred_cart_ink
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc no) (caret_upor no)
    (opred_cart no))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Для устранения неисправности система предлагает вначале убедиться, что картриджи действительно исправны и
    их контактные площадки чистые, затем вынуть их и
    очистить контактные группы в
    корзине каретки Если это не помогает, то необходимо заменить плату электроники каретки
    Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Принтер определяет наличие картриджей)
    (ans "Нет " "Да ")
    (sys_ans no yes)

    223
    (user_eval
    "send
    [cur_printer] put- opred_cart ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))
    (send [cur_printer] put-opred_cart))
    (halt))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defrule r_pod_bum_yes
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc no) (caret_upor no)
    (opred_cart yes) (pod_bum yes))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Данная система не может
    Вам помочь)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Осуществляется ли подача бумаги "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- pod_bum ")
    (prev_q no)
    (prev_ans "Да ")
    (state diag))
    (send [cur_printer] put-pod_bum))
    (halt))
    (defrule r_pod_bum_no
    (object
    (is-a
    PRINTER_INK)
    (name
    [cur_printer])
    (power yes) (otkl_val no) (print_doc no) (caret_upor no)
    (opred_cart yes) (pod_bum no))
    ?F<-(UI-state (prev_q ?pr))
    =>
    (if (eq ?pr no) then
    (modify ?F (cur_quest "Для устранения неисправности система предлагает протереть ролик подачи бумаги тканью,

    224 смоченной жидкостью для восстановления резиновых роликов Если это не помогает, необходимо заменить ролик
    Если не все проблемы устранены, попробуйте выполнить диагностику заново)
    (ans)
    (sys_ans)
    (user_eval "")
    (prev_ans "")
    (state recomend)) else
    (modify ?F (cur_quest "Осуществляется ли подача бумаги "Нет " "Да ")
    (sys_ans no yes)
    (user_eval
    "send
    [cur_printer] put- pod_bum ")
    (prev_q no)
    (prev_ans "Нет ")
    (state diag))
    (send [cur_printer] put-pod_bum))
    (halt))

    225 Файл kurs.py
    #!/usr/bin/python
    # -*- coding: utf-8 -*- import sys import clips import wx import wx.lib.buttons import wx.html
    # Класс главного окна class MainFrame(wx.Frame): def __init__(self):
    ##################################
    Создание графического интерфейса
    ##################################
    Создание окна приложения wx.Frame.__init__(self, parent = None, id = -1, title = Диагностика неисправности принтера ', size=(550, 450), style=wx.CAPTION | wx.SYSTEM_MENU | wx.CLIP_CHILDREN | wx.CLOSE_BOX) self.Center(wx.BOTH) self.SetIcon(wx.Icon(u'./img/printer.ico',wx.BITMAP_TYPE
    _ICO))
    Добавление поля для вывода приветствия, вопросов и
    рекомендаций self.questText = wx.html.HtmlWindow(id=-1, parent=self, pos=wx.Point(10, 16), size=wx.Size(530, 119), style=wx.html.HW_SCROLLBAR_NEVER)
    Добавление панели для размещения на ней вариантов ответов self.varPanel = wx.Panel(id=-1, parent=self, pos=wx.Point(42, 134), size=wx.Size(520, 214), style=wx.TAB_TRAVERSAL)
    Добавление панели для размещения на ней кнопок управления self.btnPanel = wx.Panel(id=-1, parent=self, pos=wx.Point(30, 360), size=wx.Size(484, 88), style=wx.TAB_TRAVERSAL)
    Добавление кнопки "Назад " на форму

    226
    self.backBtn = wx.lib.buttons.GenBitmapTextButton(bitmap=wx.Bitmap(u'./
    img/back.png', wx.BITMAP_TYPE_PNG), Назад ', parent=self.btnPanel, pos=wx.Point(21, 26), size=wx.Size(128, 30), style=0) self.backBtn.Bind(wx.EVT_BUTTON, self.handleEvent)
    Добавление кнопки "Далее " на форму self.nextBtn = wx.lib.buttons.GenBitmapTextButton(bitmap=wx.Bitmap(u'./
    img/next.png', wx.BITMAP_TYPE_PNG), Далее ', parent=self.btnPanel, pos=wx.Point(336, 26), size=wx.Size(128, 30), style=0) self.nextBtn.Bind(wx.EVT_BUTTON, self.handleEvent)
    Добавление кнопки "Заново " на форму self.renewBtn = wx.lib.buttons.GenBitmapTextButton(bitmap=wx.Bitmap(u'./
    img/renew.png', wx.BITMAP_TYPE_PNG), Заново ', parent=self.btnPanel, pos=wx.Point(179, 10), size=wx.Size(128, 30), style=0) self.renewBtn.Bind(wx.EVT_BUTTON, self.handleEvent)
    Добавление кнопки "Выход " на форму self.exitBtn = wx.lib.buttons.GenBitmapTextButton(bitmap=wx.Bitmap(u'./
    img/exit.png', wx.BITMAP_TYPE_PNG), Выход ', parent=self.btnPanel, pos=wx.Point(178, 45), size=wx.Size(128, 30), style=0) self.exitBtn.Bind(wx.EVT_BUTTON, self.OnQuit)
    Добавление разделительной линии self.sashWindow1 = wx.SashWindow(parent=self, pos=wx.Point(50, 130), size=wx.Size(450, 3), style=wx.CLIP_CHILDREN
    | wx.SW_3D)
    Добавление разделительной линии self.sashWindow2 = wx.SashWindow(parent=self, pos=wx.Point(50, 360),

    227
    size=wx.Size(450, 3), style=wx.CLIP_CHILDREN
    | wx.SW_3D)
    ##################################
    ##################################
    Загрузка и
    запуск экспертной системы clips.Load("kurs.clp") clips.Reset() clips.Run() self.nextState()
    Обновление графического интерфейса в
    соответствии с
    текущим состоянием экспертной системы def nextState(self): factlist = clips.FactList() fState=factlist[1].Slots["state"] fPrevAns=factlist[1].Slots["prev_ans"] fAns=factlist[1].Slots["ans"] fCurQuest=factlist[1].Slots["cur_quest"]
    Переопределение параметров кнопок, панелей и
    разделителей в
    соответствии с
    текущим состоянием экспертной системы if fState == "start": self.varPanel.Hide() self.sashWindow1.Hide() self.backBtn.Enable(False) self.nextBtn.Enable(True) self.renewBtn.Enable(False) elif fState == "diag": self.questText.SetSize(wx.Size(530, 119)) self.varPanel.Show() self.sashWindow1.Show() self.backBtn.Enable(True) self.nextBtn.Enable(True) self.renewBtn.Enable(True) else: self.questText.SetSize(wx.Size(530, 300)) self.varPanel.Hide() self.sashWindow1.Hide() self.backBtn.Enable(True) self.nextBtn.Enable(False) self.renewBtn.Enable(True)

    228
    Переопределение вариантов ответов self.varPanel.DestroyChildren() sizer = wx.BoxSizer(wx.VERTICAL) self.varPanel._buttons = [] for answer in fAns: r = wx.RadioButton(self.varPanel, -1, answer) if answer == fPrevAns: r.SetValue(True) sizer.Add(r, flag = wx.ALL, border = 5) self.varPanel._buttons.append(r) self.varPanel.SetSizer(sizer) self.varPanel.Fit()
    Переопределение вопроса self.questText.SetPage("
    1   ...   12   13   14   15   16   17   18   19   20


    написать администратору сайта