1.节点状态,可以直接通过心跳报文进行发送。
state.h种声明了节点状态类型,和通信状态类型,和一些在应用程序种的回调函数;
/* The nodes states
* -----------------
* values are choosen so, that they can be sent directly
* for heartbeat messages...
* Must be coded on 7 bits only
* */
/* Should not be modified */
enum enum_nodeState {
Initialisation = 0x00,
Disconnected = 0x01,
Connecting = 0x02,
Preparing = 0x02,
Stopped = 0x04,
Operational = 0x05,
Pre_operational = 0x7F,
Unknown_state = 0x0F
};
typedef enum enum_nodeState e_nodeState;
typedef struct
{
INTEGER8 csBoot_Up;
INTEGER8 csSDO;
INTEGER8 csEmergency;
INTEGER8 csSYNC;
INTEGER8 csHeartbeat;
INTEGER8 csPDO;
INTEGER8 csLSS;
} s_state_communication;
/**
* @brief Function that user app can overload
* @ingroup statemachine
*/
typedef void (*initialisation_t)(CO_Data*);
typedef void (*preOperational_t)(CO_Data*);
typedef void (*operational_t)(CO_Data*);
typedef void (*stopped_t)(CO_Data*);
文章定义了一个名为`enum_nodeState`的枚举类型,包含了节点的各种状态,如初始化、断开连接、运行等,并确保这些状态值能在心跳消息中直接发送。此外,还定义了结构体`s_state_communication`来存储通信状态的详细信息。文章还提到了几个应用程序可以覆盖的回调函数,如初始化、预操作和运行状态的处理函数。

被折叠的 条评论
为什么被折叠?



