undirbúningur falla fyrir can samskipti og prófun með lyklaborði
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user