Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Modeling Software with Finite State Machines
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=19292
Страница 1 от 1

Автор:  emilvtc [ Чет Окт 17, 2024 9:46 am ]
Заглавие:  Modeling Software with Finite State Machines

Трябва ми книга, статия, сламка, в която да е описано с примери (като за деца ученици) на разбираем не-академичен език какво представляват крайните автомата (в случая на Мили), как работят и как да се реализират софтуерно.
Ако има един реален обект, който да управляваме - как се дефинират състоянията, преходите, евентите, изходите и т.н.
Също така как да се декомпозира сложна стейт машина с няколко по-прости синхронизирани такива

На времето преди повече от 15г. IAR имаха VisualState софтуерче, което обаче не го поддържат от много време и го няма. Имахме и книжките му в офиса, но при пренасянето ни, някъде се потурчиха и ги нямам сега. (В него имаше примери за светофар, перална машина, CD плеар и др.)

Някой може ли да помогне с подобна литература?

Автор:  TheWizard [ Чет Окт 17, 2024 10:36 am ]
Заглавие:  Re: Modeling Software with Finite State Machines

напиши в гоо заглавието на поста :)
chatGPT питай ... в стил за деца
Arduino, microPY, PLC ...
https://microblocks.fun/

Автор:  Bai Ui [ Чет Окт 17, 2024 3:40 pm ]
Заглавие:  Re: Modeling Software with Finite State Machines

https://fizzim.com/
Генерира код на Verilog и VHDL но е опън сорс, може да го пипнеш ако разбираш Java да ти генерира на С и други езици. Може просто да го ползваш да си чертаеш мехурчести диагрми за презентации и техн. документация.

Автор:  Bai Ui [ Чет Окт 17, 2024 3:53 pm ]
Заглавие:  Re: Modeling Software with Finite State Machines

ОК, малко ъпдейт - накарах чата да ми генерира С код по мехурчеста диаграма от Fizzim, ето го резултата:

Прикачени файлове:
Capture.PNG
Capture.PNG [ 24.25 KiB | Прегледано 4549 пъти ]


Код:
#include <stdio.h>

// Дефиниции на състоянията
typedef enum {
    IDLE,
    READ,
    DLY,
    DONE
} state_t;

state_t current_state = IDLE;  // Начално състояние

// Променливи за изходи
int rd = 0;
int ds = 0;

// Входове
int go = 0;
int ws = 0;

// Функция за промяна на състоянията
void fsm_update() {
    switch(current_state) {
        case IDLE:
            rd = 0;
            ds = 0;
            if (go == 1) {
                current_state = READ;
            }
            break;

        case READ:
            rd = 1;
            ds = 0;
            if (ws == 1) {
                current_state = DLY;
            }
            break;

        case DLY:
            rd = 1;
            ds = 0;
            if (ws == 1) {
                current_state = READ;
            } else {
                current_state = DONE;
            }
            break;

        case DONE:
            rd = 0;
            ds = 1;
            current_state = IDLE;  // Връща се към IDLE след като е приключено
            break;

        default:
            current_state = IDLE;  // Ако има грешка, връща се към IDLE
            break;
    }
}

int main() {
    // Примерно изпълнение
    printf("Начално състояние: IDLE\n");
   
    // Симулираме преходи
    go = 1;  // Старт (go) е активен
    fsm_update();  // Промяна на състоянието
    printf("Текущо състояние: READ, rd=%d, ds=%d\n", rd, ds);
   
    ws = 1;  // Симулираме вход (ws)
    fsm_update();
    printf("Текущо състояние: DLY, rd=%d, ds=%d\n", rd, ds);
   
    ws = 0;  // Продължаваме
    fsm_update();
    printf("Текущо състояние: DONE, rd=%d, ds=%d\n", rd, ds);
   
    fsm_update();  // Връщане в IDLE
    printf("Текущо състояние: IDLE, rd=%d, ds=%d\n", rd, ds);

    return 0;
}


Прикачени файлове:
Capture2.PNG
Capture2.PNG [ 19.18 KiB | Прегледано 4549 пъти ]


пп това е Мур машина, но във Fizzim има много примери включително Мили машини

Автор:  emilvtc [ Чет Окт 17, 2024 4:23 pm ]
Заглавие:  Re: Modeling Software with Finite State Machines

Целта ми е как всичко това да мога да го обесня "цветно" и интуитивно на ученици, както и да им дам правила за правилна декомпозиция на някаква реална задача (прост и по-сложен светофар примерно) на няколко по-малки и синхронно работещи стейт машини, както и иерархично декомпозиране, където е подходящо и възможно.
Като следваща стъпка - да им се покаже как от таблично или мехурчесто описана стейт машина да се напише код на С/С++ .

Интересуват ме за момента МИЛИ машини, при които новото изходно състояние зависи както от входовете, така и от вътрешното моментно състояние на машината.

между другото IAR се оказа, че отново предлагат VisualState за който писах. Има и триал, но документацията, която свалих за сегашната им версия е силно ориентирана към самата програма и умишлено или не в нея няма обяснения за таблично описание на стейт машина.

Автор:  miro_atc [ Чет Окт 17, 2024 5:23 pm ]
Заглавие:  Re: Modeling Software with Finite State Machines

emilvtc написа:
Целта ми е как всичко това да мога да го обесня "цветно"


Е те точно "академичния" вариант ти трябва. Няма как един ученик да схване идеята за конкретен автомат, ако не му обясниш цялата картинка.

От опит мога да кажа, че подробностите много бързо се забравят. Ако ме питаш какъв точно беше автомата Мур или на Мили, не мога да ти кажа без да отворя вики-то. Но принципните неща като краен автомат, автомат с памет и т.н. не бива да се забравят. То даже още по-ниско се почва с комбинаторна логика и логика с памет. Щото автоматите са само частичен случай на схеми с логика и/или памет.

Иначе за демонстрации може да видиш и node red. Не съм го ползвал щото мразя визуалните неща, но с него може да правиш всякакви стейт машини и автоматизации. Демонстрацията може да е по-истинска ако го пуснеш през домашния асистент (homeass), така ще осигуриш връзка с реалния свят - телефони, рутери и тем подобни уреди. Съответно имаш събития, сигнали и каквото се сетиш. Може с нарисувана стейт машинка да размигаш съвсем истинска ламба. Така демото няма да е ограничено до един джам в някакво си приложение.

Автор:  HCL [ Пет Окт 18, 2024 2:02 pm ]
Заглавие:  Re: Modeling Software with Finite State Machines

Запиши кратко видео как играеш Fortnite. В дясно от видеото графики на два автомата, единият показващ състоянието на героя, другият на мунициите.

Автомат_Герой: {бяга, стои}
Автомат_Муниции: {16..0}

Със сигурност ще им привлечеш вниманието. Като задача с повишена трудност можеш да ги подканиш да добавят състояния стреля и презарежда, като с това можеш да онагледиш връзките между автоматите. Презареждането, връща мунициите на 16. А стрелбата от стояща и бягаща позиция онагледява експлозията на състоянията на автомата и как може да се адресира проблема посредством добавяне на нови автомати. Успех, звучи забавно начинание.

Автор:  TheWizard [ Пет Окт 18, 2024 3:07 pm ]
Заглавие:  Re: Modeling Software with Finite State Machines

ако си поиграеш с чата може да получиш интересни резултати :)

Прикачени файлове:
Untitled.png
Untitled.png [ 618.97 KiB | Прегледано 4450 пъти ]

Автор:  TheWizard [ Пет Окт 18, 2024 3:10 pm ]
Заглавие:  Re: Modeling Software with Finite State Machines

ето ти оригинала ... не че е нещо де :D просто тъп въпрос

Прикачени файлове:
MEALY.png
MEALY.png [ 1.48 MiB | Прегледано 4450 пъти ]

Автор:  TheWizard [ Пет Окт 18, 2024 3:18 pm ]
Заглавие:  Re: Modeling Software with Finite State Machines

малко му се скарах че рисува тъпотии :D
Цитат:
Ето една опростена илюстрация, която представя Mealy FSM за деца. Роботът преминава между два състояния, с входни и изходни стойности, които показват как работи машината. Надявам се, че тази версия е по-ясна и помага за разбирането на концепцията!


но може да постигнеш резултати ... свърши ми FREE-то :D

Прикачени файлове:
MEALY2.png
MEALY2.png [ 1.53 MiB | Прегледано 4446 пъти ]

Автор:  stewie [ Пон Окт 28, 2024 12:11 am ]
Заглавие:  Re: Modeling Software with Finite State Machines

Тук има много информация за FSM/HSM. Виж тук за софтуер за моделиране.
Обясненията на Миро Самек за FSM/HSM са много добри. Във видеата има и работещ код.

Много добра (и малка) библиотека за FSM/HSM от Зефир.

Автор:  emilvtc [ Пон Окт 28, 2024 6:19 pm ]
Заглавие:  Re: Modeling Software with Finite State Machines

stewie, Изглежда това ще свърши работа. а и програмата е фри и не иска някакво специално лицензиране, за да се използва.

Клипчетата също са достатъчно ясни, за да бъдат разбрани от ученици.

10х

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/