undirbúningur falla fyrir can samskipti og prófun með lyklaborði

This commit is contained in:
2026-10-16 15:12:07 +00:00
parent 6fdf57cca7
commit 0ee6879f99
21 changed files with 426 additions and 117 deletions
+80
View File
@@ -0,0 +1,80 @@
@startuml P4-architecture
' Project 4, Part 2.2: Layers of the reduced CANopen node (Node ID 1).
' Arrows point from the user to the thing it uses.
' skinparam packageStyle rectangle
skinparam classAttributeIconSize 0
hide empty members
package "Application layer (uses OSI 7)" {
class MotorController {
+ to_operational()
+ to_pre_operational()
+ to_stopped()
}
abstract class State
class SetpointGenerator
class PI_controller
}
package "CANopen layer (OSI 5-7)" {
class CanopenNode {
+ on_frame(frame)
+ poll(now_ms)
}
class SdoServer
class ObjectDictionary
interface NodeApplication {
+ on_nmt_command(cmd)
+ set_target_velocity(rpm)
+ get_velocity() : rpm
+ get_duty() : 0.1 %
}
interface CanBus {
+ send(frame)
}
}
package "Platform layer (Zephyr)" {
class ZephyrCanBus
class MotorDriver
class RotaryEncoderDriver
}
package "Hardware (OSI 1-2)" {
class "CAN controller + transceiver" as CAN
}
MotorController -> State
MotorController --> SetpointGenerator
MotorController --> PI_controller
MotorController ..|> NodeApplication
MotorController --> MotorDriver
MotorController --> RotaryEncoderDriver
CanopenNode --> SdoServer
SdoServer --> ObjectDictionary
CanopenNode --> ObjectDictionary
CanopenNode --> NodeApplication
CanopenNode --> CanBus
ZephyrCanBus ..|> CanBus
ZephyrCanBus --> CAN
note top of CanopenNode
NMT (0x000), boot-up (0x701),
RPDO1 (0x201), TPDO1 (0x181)
end note
note left of SdoServer
0x601 / 0x581, expedited only
abort codes 0x06020000, 0x08000022
end note
note right of ObjectDictionary
0x1000, 0x2000-0x2010, 0x606C,
0x6083, 0x6084, 0x60FF
access rules, little-endian packing
end note
@enduml
+29
View File
@@ -0,0 +1,29 @@
@startuml
' skinparam linetype ortho
' skinparam nodesep 100
skinparam ranksep 80
skinparam state {
BackgroundColor LightBlue
}
' hide empty members
Application <|-- CANopen
class Application {
{field} state machine
{field} controllers
{field} setpoint generator
{method} hello world
}
CANopen : Zephyr
Class01 <-- Class02
Class03 *-- Class04
Class05 o-- Class06
Class07 .. Class08
Class09 -- Class10
@enduml
-50
View File
@@ -1,50 +0,0 @@
@startuml
' skinparam linetype ortho
' skinparam nodesep 100
skinparam ranksep 80
skinparam state {
BackgroundColor LightBlue
}
[*] --> Initialization
state Initialization
Initialization : Entry / Stop motor
Initialization : Entry / Initialize internal parameters
Initialization : Entry / Reset speed measurement
Initialization : Do / Wait 2 seconds
Initialization : Exit / Send Boot-up message
state PreOperational
PreOperational : Entry / Stop motor
PreOperational : Do / Blink LED at 1 Hz
PreOperational : Do / Accept Kp and Ti configuration
PreOperational : Do / Select P or PI controller [c]
PreOperational : Exit / LED off
state Operational
Operational : Entry / LED on
Operational : Do / Run speed controller
Operational : Exit / Stop motor and LED off
state Stopped
Stopped : Entry / Stop motor
Stopped : Do / Blink LED at 2 Hz
Stopped : Exit / LED off
Initialization -r-> PreOperational : initialization\n complete
' Initialization -d-> Operational : initialization\n complete
PreOperational -d-> Operational : set operational [o]
PreOperational -l--> Initialization : reset [r]
Operational -u-> PreOperational : set pre-operational [p]
Operational -> Initialization : reset [r]
Operational --> Stopped : fault detected
Stopped -l-> Initialization : reset [r]
Stopped -> Operational : set operational [o]
Stopped -u-> PreOperational : set pre-operational [p]
@enduml