З’єднання FSoE (Fail Safe over EtherCAT) керується невеликим детермінованим скінченним автоматом. І Master, і Slave виконують власну копію автомата, і обидві копії просуваються синхронно, обмінюючись правильною командою FSoE у кожному Safety PDU. Після вмикання живлення або щоразу, коли виявляється помилка зв’язку, з’єднання повертається до стану Reset і починає все спочатку.
На діаграмі нижче показано всі стани та переходи в одному вертикальному поданні. Кожен стан відповідає одній із команд FSoE, а три мітки переходів — OK, STAY і NOT_OK — описують, як отримана команда співвідноситься зі станом, який автомат очікує на даний момент.
Як читати діаграму
Три типи переходів визначаються за командою, отриманою в Safety PDU від вузла-співрозмовника:
| Перехід | Значення | Результат |
|---|---|---|
| OK | Отримана команда є наступним очікуваним станом. | Перехід на один крок вниз по драбині (або утримання в Data після досягнення цього стану). |
| STAY | Отримана команда збігається з поточним станом. | Залишання в поточному стані та очікування. |
| NOT_OK | Отримана команда неочікувана або сталася помилка CRC/watchdog. | Негайне повернення до Reset. |
Кожен стан також надсилає власну команду у вихідному PDU, тож обидва вузли просуваються разом. Наприклад, коли Master перебуває в стані Session, він надсилає команду Session і очікує від Slave відповіді Connection (OK) для продовження, Session (STAY) для очікування або будь-якої іншої команди (NOT_OK) для повернення до Reset.
П’ять станів
1. Reset
Це вхідний стан після вмикання живлення, після перезапуску («reset connection») або щоразу, коли виявляється помилка зв’язку FSoE. У Reset не передаються жодні користувацькі safety-дані; PDU містить команду Reset і, на боці, що спричинила помилку, однобайтовий код помилки. Порядковий номер і успадкований CRC обидва очищуються при вході. Див. FSoE Reset State PDU: Master and Slave Structure щодо точного байтового розташування та таблиці кодів помилок.
2. Session
Master першим залишає Reset, надсилаючи команду Session. Slave приєднується, щойно отримує коректний Session PDU. У цьому стані два вузли обмінюються ідентифікаторами з’єднань і перевіряють, що адреса FSoE Slave є правильною. Команда Connection від співрозмовника є сигналом OK, який переводить автомат у наступний стан.
3. Connection
У стані Connection вузли встановлюють базові параметри зв’язку: довжину safety-даних, таймінги watchdog і Conn_Id. Перехід OK ініціюється отриманням команди Parameter. Поки обидві сторони ще перебувають у Connection, вони продовжують надсилати Connection, і автомат залишається в стані STAY.
4. Parameter
Тут команда Parameter переносить дані SafeParameter, які налаштовують safety-застосунок (наприклад, специфічні для застосунку набори параметрів). Отримання команди Data є сигналом OK для входу в фінальний робочий стан. Якщо обмін параметрами завершується невдало або триває занадто довго, з’єднання повертається до Reset через NOT_OK.
5. Data
Це нормальний робочий стан. Користувацькі safety-дані обмінюються в кожному Safety PDU, і обидва вузли надсилають команду Data. Самопетля OK означає, що з’єднання залишається в Data, доки зв’язок здоровий. Самопетля STAY у Data зазвичай не спостерігається (немає вищого стану для очікування), але автомат все одно трактує повторну команду Data як «залишитися в Data». Будь-яка неочікувана команда або помилка CRC/watchdog повертає автомат у Reset.
Підсумок
Скінченний автомат FSoE — це лінійна драбина з п’яти станів: Reset → Session → Connection → Parameter → Data. Зелений перехід OK просуває автомат на один крок вниз по драбині, сірий перехід STAY утримує його на місці, а червоний перехід NOT_OK скидає його повністю до Reset. Оскільки і Master, і Slave реалізують один і той самий автомат, усе з’єднання безпечно перезапускається, щойно будь-яка зі сторін помічає щось неправильне.
Посилання на стандарт
- ETG.5100 S (D) V1.2.0, специфікація FSoE, яка визначає ці стани та переходи.
Пов’язані статті
Огляд та основи
- What does the FSoE abbreviation actually mean? — що означає абревіатура FSoE
- FSoE frame structure explained by examples — загальна структура Safety PDU
- FSoE: Safety PDU command table — повний список команд FSoE
Структури PDU за станами
- FSoE Reset State PDU: Master and Slave Structure — структура PDU та коди помилок для стану Reset
- FSoE Session PDU: Master and Slave Structure — структура PDU для стану Session
- FSoE Connection PDU: Master and Slave Structure — структура PDU для стану Connection
- FSoE Parameter PDU: Master and Slave Structure — структура PDU для стану Parameter
- FSoE Data PDU: Master and Slave Structure — структура PDU для стану Data
- FSoE Reset PDU: Master and Slave Structure — байтові розташування для всіх довжин safety-даних
CRC
- FSoE CRC: Which polynomial does it use? — 17-бітний поліном, що лежить в основі CRC FSoE
- How are the FSoE CRC tables constructed? — як генеруються таблиці CRC
- FSoE: How does CRC inheritance work? — як ланцюг CRC пов’язує послідовні PDU
- How to compute the CRC checksum for FSoE PDUs? — алгоритм побайтового обчислення CRC
Коди помилок та формат даних
- FSoE: List of all communication error codes — усі коди помилок зв’язку FSoE
- FSoE: Is data transmitted little-endian or big-endian? — порядок байтів багатобайтових полів