Compare commits

...

12 Commits

Author SHA1 Message Date
e46c47454f vault backup: 2026-05-22 16:36:10 2026-05-22 16:36:10 +08:00
赵天浩
96ed4f3022 vault backup: 2026-05-22 14:55:15 2026-05-22 14:55:16 +08:00
赵天浩
7b5f09e135 vault backup: 2026-05-21 18:18:26 2026-05-21 18:18:26 +08:00
赵天浩
2a99dd1cf7 vault backup: 2026-05-14 16:03:33 2026-05-14 16:03:33 +08:00
赵天浩
183eb7a86f vault backup: 2026-05-14 16:02:53 2026-05-14 16:02:53 +08:00
赵天浩
f2eaf76ce7 vault backup: 2026-05-14 15:53:50 2026-05-14 15:53:50 +08:00
赵天浩
a3c0d2563b vault backup: 2026-05-14 15:39:18 2026-05-14 15:39:18 +08:00
赵天浩
506dc756b3 vault backup: 2026-05-14 15:39:12 2026-05-14 15:39:12 +08:00
赵天浩
8ad55fee0b vault backup: 2026-05-14 15:38:23 2026-05-14 15:38:23 +08:00
赵天浩
f9cd4d608a vault backup: 2026-05-14 15:37:21 2026-05-14 15:37:21 +08:00
赵天浩
a18cbaf897 vault backup: 2026-05-14 15:36:26 2026-05-14 15:36:26 +08:00
5d856e6a75 vault backup: 2026-05-10 10:15:30 2026-05-10 10:15:30 +08:00
39 changed files with 7958 additions and 30 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/.obsidian/community-plugins.json

12
.obsidian/app.json vendored
View File

@@ -1 +1,11 @@
{}
{
"showLineNumber": false,
"promptDelete": false,
"alwaysUpdateLinks": true,
"pdfExportSettings": {
"pageSize": "Letter",
"landscape": false,
"margin": "0",
"downscalePercent": 100
}
}

View File

@@ -1,11 +0,0 @@
[
"obsidian-git",
"obsidian-tasks-plugin",
"pdf-plus",
<<<<<<< HEAD
"advanced-canvas",
"obsidian-plantuml",
=======
>>>>>>> origin/main
"tasks-calendar-wrapper"
]

22
.obsidian/graph.json vendored Normal file
View File

@@ -0,0 +1,22 @@
{
"collapse-filter": true,
"search": "",
"showTags": false,
"showAttachments": false,
"hideUnresolved": false,
"showOrphans": true,
"collapse-color-groups": true,
"colorGroups": [],
"collapse-display": true,
"showArrow": false,
"textFadeMultiplier": 0,
"nodeSizeMultiplier": 1,
"lineSizeMultiplier": 1,
"collapse-forces": true,
"centerStrength": 0.518713248970312,
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 1,
"close": false
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,11 @@
{
"id": "export-graph-view",
"name": "Export Graph View",
"version": "1.2.2",
"minAppVersion": "0.15.0",
"description": "Export your vault's graph view to mermaid and dot format.",
"author": "Sean McGhee",
"authorUrl": "https://www.seantiz.com",
"fundingUrl": "https://github.com/sponsors/seantiz",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,119 @@
.quick-export-button,
.export-button {
font-size: 16px;
padding: 20px;
}
.metadata-section {
text-align: center;
margin-top: 20px;
padding: 15px;
border: 1px solid #ccc;
border-radius: 5px;
}
.metadata-section p {
margin: 5px 0;
font-size: 0.9em;
}
.help-text {
font-size: 12px;
border-bottom: none;
margin-top: 20px;
}
.root-notice {
font-size: 12px;
}
.section-button-section {
text-align: right;
margin-top: 50px;
}
.view-button-section {
display: flex;
justify-content: space-around;
margin-top: 20px;
}
.egv-choice-container {
max-width: 800px;
margin: 0 auto;
padding: 20px;
}
.egv-choice-header {
text-align: center;
margin-bottom: 10px;
}
.egv-choice-description {
text-align: center;
margin-bottom: 30px;
color: var(--text-muted);
}
.egv-cards-container {
display: flex;
gap: 30px;
justify-content: center;
flex-wrap: wrap;
}
.egv-choice-card {
background-color: var(--background-secondary);
border-radius: 10px;
padding: 25px;
min-width: 250px;
flex: 1;
display: flex;
flex-direction: column;
transition: transform 0.2s, box-shadow 0.2s;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
cursor: pointer;
max-width: 350px;
}
.egv-choice-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15);
}
.egv-choice-card h3 {
margin-top: 15px;
margin-bottom: 10px;
text-align: center;
}
.egv-choice-card p {
flex-grow: 1;
color: var(--text-muted);
margin-bottom: 20px;
text-align: center;
}
.egv-card-icon {
height: 60px;
margin: 0 auto 15px;
background-size: contain;
background-position: center;
background-repeat: no-repeat;
width: 60px;
}
.single-parent-icon {
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="5"/><path d="M5 18c0-4 7-4 7-4v4"/><path d="M19 18c0-4-7-4-7-4v4"/></svg>');
}
.full-graph-icon {
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="5" cy="6" r="3"/><circle cx="19" cy="6" r="3"/><circle cx="5" cy="18" r="3"/><circle cx="19" cy="18" r="3"/><line x1="5" y1="9" x2="5" y2="15"/><line x1="19" y1="9" x2="19" y2="15"/><line x1="8" y1="6" x2="16" y2="6"/><line x1="8" y1="18" x2="16" y2="18"/><line x1="8" y1="6" x2="16" y2="18"/></svg>');
}
.egv-card-button-container {
text-align: center;
}
.egv-card-button-container button {
width: 100%;

View File

@@ -0,0 +1,792 @@
{
"elements": [
{
"id": "ce8a0064-979c-4d60-a26c-89a3b1802216",
"categoryId": "flowchart",
"description": "a simple flowchart with top to down direction",
"content": "flowchart TD\nStart --> Stop",
"sortingOrder": 1,
"isPinned": false
},
{
"id": "81190b75-35a7-45af-a8d4-94e69ee69980",
"categoryId": "flowchart",
"description": "a simple flowchart with left to right direction",
"content": "flowchart LR\nStart --> Stop",
"sortingOrder": 2,
"isPinned": false
},
{
"id": "e13cedc2-1b11-48d7-bba6-78e307e1cb57",
"categoryId": "flowchart",
"description": "A node with round edges",
"content": "id1(Some text)",
"sortingOrder": 3,
"isPinned": false
},
{
"id": "8e7188cf-932f-452d-89e2-0c5adc0b1dcb",
"categoryId": "flowchart",
"description": "A stadium-shaped node",
"content": "id1([Some text])",
"sortingOrder": 4,
"isPinned": false
},
{
"id": "74abe0f5-d7cd-4830-a37b-0489d7449328",
"categoryId": "flowchart",
"description": "A node in a cylindrical shape",
"content": "id1[(Database)]",
"sortingOrder": 5,
"isPinned": false
},
{
"id": "5fd59c6c-0c37-46c4-a959-bff6446af538",
"categoryId": "flowchart",
"description": "Circle",
"content": "id1((Some text))",
"sortingOrder": 6,
"isPinned": false
},
{
"id": "e58fe5be-675f-44b0-a337-830d36d2684c",
"categoryId": "flowchart",
"description": "Rhombus",
"content": "id1{Some text}",
"sortingOrder": 7,
"isPinned": false
},
{
"id": "417a32f2-b1af-4b94-a370-0d69e96f35b4",
"categoryId": "flowchart",
"description": "Hexagon",
"content": "id1{{Some text}}",
"sortingOrder": 8,
"isPinned": false
},
{
"id": "17487f2b-d361-49ff-bb9f-b51b32ce9d92",
"categoryId": "flowchart",
"description": "Parallelogram skewed right",
"content": "id1[/Some text/]",
"sortingOrder": 9,
"isPinned": false
},
{
"id": "0c09e005-999c-4f69-8c22-33c22e82d9d8",
"categoryId": "flowchart",
"description": "Parallelogram skewed left",
"content": "id1[\\Some text\\]",
"sortingOrder": 10,
"isPinned": false
},
{
"id": "6122256d-84a4-495c-8f9f-1d6836068691",
"categoryId": "flowchart",
"description": "Trapezoid",
"content": "A[/Some text\\]",
"sortingOrder": 11,
"isPinned": false
},
{
"id": "6d31176d-fac1-49c5-8058-4e4dc2c6e5dd",
"categoryId": "flowchart",
"description": "Trapezoid upside down",
"content": "A[\\Some text/]",
"sortingOrder": 12,
"isPinned": false
},
{
"id": "410f9e4d-4629-45f7-949f-f798a9a0b6b9",
"categoryId": "flowchart",
"description": "Double circle node",
"content": "id1(((Some text)))",
"sortingOrder": 13,
"isPinned": false
},
{
"id": "e144a699-ba5e-43ea-8729-0d7f1b9e34d2",
"categoryId": "flowchart",
"description": "A link with arrow head",
"content": "A-->B",
"sortingOrder": 14,
"isPinned": false
},
{
"id": "6340f678-124b-4a42-9f47-6015412d1b98",
"categoryId": "flowchart",
"description": "An open link",
"content": "A --- B",
"sortingOrder": 15,
"isPinned": false
},
{
"id": "0586c4d4-4dc1-4ce1-867d-57e43a932f0b",
"categoryId": "flowchart",
"description": "Text on links",
"content": "A-- This is the text! ---B",
"sortingOrder": 16,
"isPinned": false
},
{
"id": "eb1e584b-5aaf-46f5-bfc9-44b3c406dc2d",
"categoryId": "flowchart",
"description": "A link with arrow head and text",
"content": "A-->|text|B",
"sortingOrder": 17,
"isPinned": false
},
{
"id": "ca8afaf7-7505-4f22-b95b-9a5cff53cad6",
"categoryId": "flowchart",
"description": "Dotted link",
"content": "A-.->B",
"sortingOrder": 18,
"isPinned": false
},
{
"id": "4dffe292-4204-4da3-911d-1025a05ad46c",
"categoryId": "flowchart",
"description": "Thick link",
"content": "A ==> B",
"sortingOrder": 19,
"isPinned": false
},
{
"id": "5ad57178-87bb-488b-b138-b3084d5364c5",
"categoryId": "flowchart",
"description": "Invisible link",
"content": "A ~~~ B",
"sortingOrder": 20,
"isPinned": false
},
{
"id": "b9e7daaa-5915-4a1c-a481-96ac137d16f9",
"categoryId": "flowchart",
"description": "Link with circle edge",
"content": "A --o B",
"sortingOrder": 21,
"isPinned": false
},
{
"id": "a053922d-c961-4e28-b1d2-6321b249c0ae",
"categoryId": "flowchart",
"description": "Link with cross edge",
"content": "A --x B",
"sortingOrder": 22,
"isPinned": false
},
{
"id": "187bf51e-e384-4a39-803c-78bb18b78c8b",
"categoryId": "flowchart",
"description": "Subgraph",
"content": "subgraph one\na1-->a2\nend",
"sortingOrder": 14,
"isPinned": false
},
{
"id": "9857856d-2fd4-4e0d-b058-76855215da37",
"categoryId": "sequenceDiagram",
"description": "a simple sequence diagram",
"content": "sequenceDiagram\nAlice->>John: Hello John, how are you?\nJohn-->>Alice: Great!\nAlice-)John: See you later!",
"sortingOrder": 0,
"isPinned": false
},
{
"id": "47c587ff-c1e1-41f3-9e29-3bc54cce4cb1",
"categoryId": "sequenceDiagram",
"description": "a simple sequence diagram with actors",
"content": "sequenceDiagram\nactor Alice\nactor John\nAlice->>John: Hello John, how are you?\nJohn-->>Alice: Great!\nAlice-)John: See you later!",
"sortingOrder": 1,
"isPinned": false
},
{
"id": "2ae592c0-806e-4640-945f-2dbc576ccdf1",
"categoryId": "classDiagram",
"description": "sample class",
"content": "class Duck{\n +String beakColor\n +swim()\n +quack()\n }",
"sortingOrder": 0,
"isPinned": false
},
{
"id": "467423fe-2d69-49f4-83ca-9314227a2cc6",
"categoryId": "classDiagram",
"description": "sample class",
"content": "class BankAccount\n BankAccount : +String owner\n BankAccount : +Bigdecimal balance\n BankAccount : +deposit(amount)\n BankAccount : +withdrawal(amount)",
"sortingOrder": 1,
"isPinned": false
},
{
"id": "c8275c79-b289-4d75-9ae5-65c3267e94d5",
"categoryId": "classDiagram",
"description": "generic class",
"content": "class Square~Shape~{\n int id\n List~int~ position\n setPoints(List~int~ points)\n getPoints() List~int~\n }\n \n Square : -List~string~ messages\n Square : +setMessages(List~string~ messages)\n Square : +getMessages() List~string~",
"sortingOrder": 2,
"isPinned": false
},
{
"id": "8b09aee4-6260-4ec6-970c-c67168d4ac76",
"categoryId": "classDiagram",
"description": "inheritance",
"content": "classA <|-- classB",
"sortingOrder": 3,
"isPinned": false
},
{
"id": "4ec30fef-b3cc-4bcc-8f4a-fda668776a36",
"categoryId": "classDiagram",
"description": "composition",
"content": "classC *-- classD",
"sortingOrder": 4,
"isPinned": false
},
{
"id": "ea60828f-8ab8-4c4e-88a3-bbaf77a10472",
"categoryId": "classDiagram",
"description": "aggregation",
"content": "classE o-- classF",
"sortingOrder": 5,
"isPinned": false
},
{
"id": "99c0ed8a-8d15-4c1e-b315-4bbb3cabfd64",
"categoryId": "classDiagram",
"description": "association",
"content": "classG <-- classH",
"sortingOrder": 6,
"isPinned": false
},
{
"id": "9bc99a1a-c6f0-4a43-98aa-d18be64bdde7",
"categoryId": "classDiagram",
"description": "solid link",
"content": "classI -- classJ",
"sortingOrder": 7,
"isPinned": false
},
{
"id": "71380dcd-4c29-4907-86d9-36bb822df062",
"categoryId": "classDiagram",
"description": "dependency",
"content": "classK <.. classL",
"sortingOrder": 8,
"isPinned": false
},
{
"id": "6855b6ca-61ee-46d1-b937-085c56f96c2d",
"categoryId": "classDiagram",
"description": "realization",
"content": "classM <|.. classN",
"sortingOrder": 9,
"isPinned": false
},
{
"id": "702caa95-72a3-449f-9da2-a406f9996be0",
"categoryId": "classDiagram",
"description": "dashed link",
"content": "classO .. classP",
"sortingOrder": 10,
"isPinned": false
},
{
"id": "fa3c801c-d9ec-4506-a501-28472e7b8c78",
"categoryId": "classDiagram",
"description": "two-way relation",
"content": "Animal <|--|> Zebra",
"sortingOrder": 11,
"isPinned": false
},
{
"id": "f590de96-2011-4df5-bef1-a068832bff8a",
"categoryId": "classDiagram",
"description": "sample class diagram",
"content": "classDiagram\n Animal <|-- Duck\n Animal <|-- Fish\n Animal <|-- Zebra\n Animal : +int age\n Animal : +String gender\n Animal: +isMammal()\n Animal: +mate()\n class Duck{\n +String beakColor\n +swim()\n +quack()\n }\n class Fish{\n -int sizeInFeet\n -canEat()\n }\n class Zebra{\n +bool is_wild\n +run()\n }",
"sortingOrder": 12,
"isPinned": false
},
{
"id": "b16b29d7-3ecb-45fa-9327-eac5239bd953",
"categoryId": "stateDiagram",
"description": "a sample state diagram",
"content": "stateDiagram-v2\n [*] --> Still\n Still --> [*]\n \n Still --> Moving\n Moving --> Still\n Moving --> Crash\n Crash --> [*]",
"sortingOrder": 0,
"isPinned": false
},
{
"id": "ef56afbc-aa32-4708-a191-3481d673e08a",
"categoryId": "stateDiagram",
"description": "a sample state diagram with left-to-right direction",
"content": "stateDiagram-v2\n direction LR\n [*] --> Still\n Still --> [*]\n \n Still --> Moving\n Moving --> Still\n Moving --> Crash\n Crash --> [*]",
"sortingOrder": 1,
"isPinned": false
},
{
"id": "b04c48f5-2bb4-4fc2-be33-03f6597e2499",
"categoryId": "stateDiagram",
"description": "node with description",
"content": "s2 : This is a state description",
"sortingOrder": 2,
"isPinned": false
},
{
"id": "3dedb769-542f-40dd-99c3-98dd0ed974e6",
"categoryId": "stateDiagram",
"description": "a transition",
"content": "s1 --> s2",
"sortingOrder": 3,
"isPinned": false
},
{
"id": "530b0984-485f-4bad-9d6e-80f5398fc01b",
"categoryId": "stateDiagram",
"description": "a transition with label",
"content": "s1 --> s2: A transition",
"sortingOrder": 4,
"isPinned": false
},
{
"id": "bcec3d91-0232-4e6a-82ed-6581356d6183",
"categoryId": "stateDiagram",
"description": "composite state",
"content": "\n [*] --> First\n state First {\n [*] --> second\n second --> [*]\n }",
"sortingOrder": 5,
"isPinned": false
},
{
"id": "1dcba01a-ac61-4171-8fc9-a616eaed11f2",
"categoryId": "stateDiagram",
"description": "diagram with choice",
"content": "stateDiagram-v2\n state if_state <<choice>>\n [*] --> IsPositive\n IsPositive --> if_state\n if_state --> False: if n < 0\n if_state --> True : if n >= 0",
"sortingOrder": 6,
"isPinned": false
},
{
"id": "57ad4f8a-33cd-43b5-8910-910edf8e7dec",
"categoryId": "stateDiagram",
"description": "diagram with fork",
"content": "stateDiagram-v2\n state fork_state <<fork>>\n [*] --> fork_state\n fork_state --> State2\n fork_state --> State3\n \n state join_state <<join>>\n State2 --> join_state\n State3 --> join_state\n join_state --> State4\n State4 --> [*]",
"sortingOrder": 7,
"isPinned": false
},
{
"id": "4e9935b8-d200-4b71-a054-e959765e7825",
"categoryId": "stateDiagram",
"description": "a diagram with concurrency",
"content": "stateDiagram-v2\n [*] --> Active\n \n state Active {\n [*] --> NumLockOff\n NumLockOff --> NumLockOn : EvNumLockPressed\n NumLockOn --> NumLockOff : EvNumLockPressed\n --\n [*] --> CapsLockOff\n CapsLockOff --> CapsLockOn : EvCapsLockPressed\n CapsLockOn --> CapsLockOff : EvCapsLockPressed\n --\n [*] --> ScrollLockOff\n ScrollLockOff --> ScrollLockOn : EvScrollLockPressed\n ScrollLockOn --> ScrollLockOff : EvScrollLockPressed\n }",
"sortingOrder": 8,
"isPinned": false
},
{
"id": "26791328-43e6-430f-ad2e-76821214a95d",
"categoryId": "entityRelationshipDiagram",
"description": "a sample entity relationship diagram",
"content": "erDiagram\n CUSTOMER ||--o{ ORDER : places\n ORDER ||--|{ LINE-ITEM : contains\n CUSTOMER }|..|{ DELIVERY-ADDRESS : uses",
"sortingOrder": 0,
"isPinned": false
},
{
"id": "cb07fc4d-ae9b-4da3-a938-3a1b0ab0c2ac",
"categoryId": "entityRelationshipDiagram",
"description": "an entity",
"content": " CUSTOMER {\n string name\n string custNumber\n string sector\n }",
"sortingOrder": 1,
"isPinned": false
},
{
"id": "dcae6673-6476-4466-a97a-8a0732574801",
"categoryId": "entityRelationshipDiagram",
"description": "one-to-many relationship",
"content": "A ||--|{ B : label",
"sortingOrder": 2,
"isPinned": false
},
{
"id": "c2ad1cfb-ea4e-4d69-8bf4-b85ecc5b9134",
"categoryId": "entityRelationshipDiagram",
"description": "many-to-many relationship",
"content": "A }|--|{ B : label",
"sortingOrder": 3,
"isPinned": false
},
{
"id": "118f56be-db56-49a7-80ab-3326f7336f3d",
"categoryId": "entityRelationshipDiagram",
"description": "one-to-one relationship",
"content": "A ||--|| B : label",
"sortingOrder": 4,
"isPinned": false
},
{
"id": "bec578a5-0e42-4d24-a0dd-12b4fc25daa5",
"categoryId": "entityRelationshipDiagram",
"description": "many-to-one relationship",
"content": "A }|--|| B : label",
"sortingOrder": 5,
"isPinned": false
},
{
"id": "32d99372-8321-44dd-80c3-1a080644fa5c",
"categoryId": "entityRelationshipDiagram",
"description": "zero/one-to-one relationship",
"content": "A |o--|| B : label",
"sortingOrder": 6,
"isPinned": false
},
{
"id": "2113de04-a4ee-4436-a3ab-435650b23414",
"categoryId": "entityRelationshipDiagram",
"description": "one-to-one/zero relationship",
"content": "A ||--o| B : label",
"sortingOrder": 7,
"isPinned": false
},
{
"id": "30293f49-1289-4976-88d9-34d75c0a6852",
"categoryId": "entityRelationshipDiagram",
"description": "zero-or-more-to-one relationship",
"content": "A }o--|| B : label",
"sortingOrder": 8,
"isPinned": false
},
{
"id": "dc49bc4c-2ea6-495d-9d38-28c33e078f77",
"categoryId": "entityRelationshipDiagram",
"description": "one-to-zero-or-more relationship",
"content": "A ||--o{ B : label",
"sortingOrder": 9,
"isPinned": false
},
{
"id": "5c53fcab-e772-4dcd-ab06-fc941fa168fa",
"categoryId": "entityRelationshipDiagram",
"description": "zero-or-more-to-many relationship",
"content": "A }o--|{ B : label",
"sortingOrder": 10,
"isPinned": false
},
{
"id": "89b04b4e-1e06-4b5c-ae55-fa28f6e08b0b",
"categoryId": "entityRelationshipDiagram",
"description": "many-to-zero-or-more relationship",
"content": "A }|--o{ B : label",
"sortingOrder": 11,
"isPinned": false
},
{
"id": "98ae0edc-7b11-4fcb-b049-94684070b79e",
"categoryId": "userJourneyDiagram",
"description": "a sample user journey diagram",
"content": "journey\n title My working day\n section Go to work\n Make tea: 5: Me\n Go upstairs: 3: Me\n Do work: 1: Me, Cat\n section Go home\n Go downstairs: 5: Me\n Sit down: 5: Me",
"sortingOrder": 0,
"isPinned": false
},
{
"id": "452612b5-f9c4-4406-b150-6d1ffdf52bb4",
"categoryId": "userJourneyDiagram",
"description": "a step in user journey",
"content": " Step Title: 5: ActorName",
"sortingOrder": 1,
"isPinned": false
},
{
"id": "d1b92887-20a1-4430-b26d-4d41aad84da6",
"categoryId": "ganttChart",
"description": "simple gantt chart",
"content": "gantt\n title A Gantt Diagram\n dateFormat YYYY-MM-DD\n section Section\n A task :a1, 2014-01-01, 30d\n Another task :after a1 , 20d\n section Another\n Task in sec :2014-01-12 , 12d\n another task : 24d",
"sortingOrder": 0,
"isPinned": false
},
{
"id": "00ddbe10-684f-4d8c-9e4c-7e933c6f3392",
"categoryId": "ganttChart",
"description": "rich gantt chart",
"content": "gantt\n dateFormat YYYY-MM-DD\n title Adding GANTT diagram functionality to mermaid\n excludes weekends\n \n section A section\n Completed task :done, des1, 2014-01-06,2014-01-08\n Active task :active, des2, 2014-01-09, 3d\n Future task : des3, after des2, 5d\n Future task2 : des4, after des3, 5d\n \n section Critical tasks\n Completed task in the critical line :crit, done, 2014-01-06,24h\n Implement parser and jison :crit, done, after des1, 2d\n Create tests for parser :crit, active, 3d\n Future task in critical line :crit, 5d\n Create tests for renderer :2d\n Add to mermaid :1d\n Functionality added :milestone, 2014-01-25, 0d\n \n section Documentation\n Describe gantt syntax :active, a1, after des1, 3d\n Add gantt diagram to demo page :after a1 , 20h\n Add another diagram to demo page :doc1, after a1 , 48h\n \n section Last section\n Describe gantt syntax :after doc1, 3d\n Add gantt diagram to demo page :20h\n Add another diagram to demo page :48h",
"sortingOrder": 1,
"isPinned": false
},
{
"id": "ede911d1-d519-494a-845a-33a2347a4b41",
"categoryId": "ganttChart",
"description": "milestones example",
"content": "gantt\n dateFormat HH:mm\n axisFormat %H:%M\n Initial milestone : milestone, m1, 17:49,2min\n taska2 : 10min\n taska3 : 5min\n Final milestone : milestone, m2, 18:14, 2min",
"sortingOrder": 2,
"isPinned": false
},
{
"id": "9c641239-521b-4e7d-8680-41400e20eb49",
"categoryId": "pieChart",
"description": "sample pie chart",
"content": "pie title /r/obsidianmd posts by type\n \"Graphs\" : 85\n \"Dashboards\" : 14\n \"Tips\" : 1",
"sortingOrder": 0,
"isPinned": false
},
{
"id": "90fbf382-435d-495b-8c14-a1b758602fec",
"categoryId": "pieChart",
"description": "sample pie chart with values shown in legend",
"content": "pie showData title /r/obsidianmd posts by type\n \"Graphs\" : 85\n \"Dashboards\" : 14\n \"Tips\" : 1",
"sortingOrder": 1,
"isPinned": false
},
{
"id": "4b42a05a-b81e-47ab-a23b-3d6beee6a68f",
"categoryId": "requirementDiagram",
"description": "sample requirements diagram",
"content": " requirementDiagram\n\n requirement test_req {\n id: 1\n text: the test text.\n risk: high\n verifymethod: test\n }\n \n element test_entity {\n type: simulation\n }\n \n test_entity - satisfies -> test_req",
"sortingOrder": 0,
"isPinned": false
},
{
"id": "e0407d51-0c91-45bb-b7d1-6eb669382bd8",
"categoryId": "requirementDiagram",
"description": "sample requirements diagram",
"content": "element customElement {\n type: customType\n docref: customDocRef\n }",
"sortingOrder": 1,
"isPinned": false
},
{
"id": "6f808e9d-4bcc-423e-8372-2283940e285d",
"categoryId": "requirementDiagram",
"description": "a requirement with high risk",
"content": "functionalRequirement myReq {\n id: reqId\n text: someText\n risk: High\n verifymethod: analysis\n }",
"sortingOrder": 2,
"isPinned": false
},
{
"id": "09458e5f-b3af-4f5e-a43f-c96d585bcaee",
"categoryId": "requirementDiagram",
"description": "sample requirements diagram",
"content": "interfaceRequirement myReq2 {\n id: reqId\n text: someText\n risk: Medium\n verifymethod: demonstration\n }",
"sortingOrder": 3,
"isPinned": false
},
{
"id": "5581967d-eb25-4cd5-b161-eb9345585012",
"categoryId": "requirementDiagram",
"description": "sample requirements diagram",
"content": "designConstraint myReq3 {\n id: reqId\n text: someText\n risk: Low\n verifymethod: test\n }",
"sortingOrder": 4,
"isPinned": false
},
{
"id": "4df85f3a-0a21-46ef-94b2-1f7ac20659ba",
"categoryId": "gitGraph",
"description": "simple git graph",
"content": "gitGraph\n commit\n commit\n branch develop\n checkout develop\n commit\n commit\n checkout main\n merge develop\n commit\n commit",
"sortingOrder": 0,
"isPinned": false
},
{
"id": "241c6930-88da-438a-85c9-dc1ca8f4b3e1",
"categoryId": "gitGraph",
"description": "tagged commit",
"content": "commit id: \"Normal\" tag: \"v1.0.0\"",
"sortingOrder": 1,
"isPinned": false
},
{
"id": "6d1bb248-32bd-4c7f-af21-a276e52d5bf6",
"categoryId": "gitGraph",
"description": "reverse commit",
"content": "commit id: \"Reverse\" type: REVERSE",
"sortingOrder": 2,
"isPinned": false
},
{
"id": "65a0b460-cf18-4c7b-a39a-cc8c4ad11578",
"categoryId": "gitGraph",
"description": "highlighted commit",
"content": "commit id: \"Highlight\" type: HIGHLIGHT",
"sortingOrder": 3,
"isPinned": false
},
{
"id": "7cd136f5-4519-49d3-90d8-f845c59f606f",
"categoryId": "gitGraph",
"description": "reverse commit",
"content": "commit id: \"Reverse\" type: REVERSE",
"sortingOrder": 4,
"isPinned": false
},
{
"id": "69d9ed7f-aebd-4dda-a920-05f486dfddba",
"categoryId": "gitGraph",
"description": "git graph with cherry-pick",
"content": "gitGraph\n commit id: \"ZERO\"\n branch develop\n commit id:\"A\"\n checkout main\n commit id:\"ONE\"\n checkout develop\n commit id:\"B\"\n checkout main\n commit id:\"TWO\"\n cherry-pick id:\"A\"\n commit id:\"THREE\"\n checkout develop\n commit id:\"C\"",
"sortingOrder": 5,
"isPinned": false
},
{
"id": "ddc3aff8-b403-4ef7-a8ca-b3dbe8a75272",
"categoryId": "mindmap",
"description": "a simple mindmap",
"content": "mindmap\n Root\n A\n B\n C",
"sortingOrder": 1,
"isPinned": false
},
{
"id": "fc3097e2-fc2c-463e-ac54-e6a91c8573e9",
"categoryId": "mindmap",
"description": "square",
"content": "id[I am a square]",
"sortingOrder": 2,
"isPinned": false
},
{
"id": "76e932cc-e140-41f5-96e4-eef5225569ad",
"categoryId": "mindmap",
"description": "rounded square",
"content": "id(I am a rounded square)",
"sortingOrder": 3,
"isPinned": false
},
{
"id": "2943cf70-a543-4847-99da-5428de6cb5df",
"categoryId": "mindmap",
"description": "circle",
"content": "id((I am a circle))",
"sortingOrder": 4,
"isPinned": false
},
{
"id": "b8cc4c57-a8b1-462e-8558-ddd780339d98",
"categoryId": "mindmap",
"description": "bang",
"content": "id))I am a bang((",
"sortingOrder": 5,
"isPinned": false
},
{
"id": "9ab2c4b7-e2c3-42cd-a846-3fcc36cb0868",
"categoryId": "mindmap",
"description": "cloud",
"content": "id)I am a cloud(",
"sortingOrder": 6,
"isPinned": false
},
{
"id": "be1122b5-fdd0-4958-b305-7f08b2fd3e76",
"categoryId": "mindmap",
"description": "hexagon",
"content": "id{{I am a hexagon}}",
"sortingOrder": 7,
"isPinned": false
},
{
"id": "2cf43034-8777-405c-935d-81a27aba2f64",
"categoryId": "mindmap",
"description": "default",
"content": "I am the default shape",
"sortingOrder": 8,
"isPinned": false
},
{
"id": "b3e18945-295e-4a29-a954-fd3e1c80caff",
"categoryId": "mindmap",
"description": "sample mindmap",
"content": "mindmap\n root((mindmap))\n Origins\n Long history\n Popularisation\n British popular psychology author Tony Buzan\n Research\n On effectiveness<br/>and features\n On Automatic creation\n Uses\n Creative techniques\n Strategic planning\n Argument mapping\n Tools\n Pen and paper\n Mermaid",
"sortingOrder": 9,
"isPinned": false
},
{
"id": "6af01e26-c328-448f-9c0e-7293ccf65ad0",
"categoryId": "timeline",
"description": "sample timeline",
"content": "timeline\n\t\ttitle History of Social Media Platform\n\t\t2002 : LinkedIn\n\t\t2004 : Facebook\n\t\t\t : Google\n\t\t2005 : Youtube\n\t\t2006 : Twitter",
"sortingOrder": 1,
"isPinned": false
},
{
"id": "58536caa-6860-457b-8fd8-96f132530355",
"categoryId": "timeline",
"description": "timeline with grouping",
"content": "timeline\n\t\ttitle Timeline of Industrial Revolution\n\t\tsection 17th-20th century\n\t\t\tIndustry 1.0 : Machinery, Water power, Steam <br>power\n\t\t\tIndustry 2.0 : Electricity, Internal combustion engine, Mass production\n\t\t\tIndustry 3.0 : Electronics, Computers, Automation\n\t\tsection 21st century\n\t\t\tIndustry 4.0 : Internet, Robotics, Internet of Things\n\t\t\tIndustry 5.0 : Artificial intelligence, Big data,3D printing",
"sortingOrder": 2,
"isPinned": false
},
{
"id": "6c7b156f-319b-46c1-a0f7-e62be3571fc9",
"categoryId": "timeline",
"description": "timeline with Forest theme. see the docs for additional themes",
"content": "%%{init: { 'logLevel': 'debug', 'theme': 'forest' } }%%\n\t\ttimeline\n\t\t\ttitle History of Social Media Platform\n\t\t\t 2002 : LinkedIn\n\t\t\t 2004 : Facebook : Google\n\t\t\t 2005 : Youtube\n\t\t\t 2006 : Twitter\n\t\t\t 2007 : Tumblr\n\t\t\t 2008 : Instagram\n\t\t\t 2010 : Pinterest",
"sortingOrder": 3,
"isPinned": false
},
{
"id": "db1924f2-1c69-4e15-a665-74a062d12cd4",
"categoryId": "quadrantChart",
"description": "sample quadrant chart",
"content": "quadrantChart\n\t\ttitle Reach and engagement of campaigns\n\t\tx-axis Low Reach --> High Reach\n\t\ty-axis Low Engagement --> High Engagement\n\t\tquadrant-1 We should expand\n\t\tquadrant-2 Need to promote\n\t\tquadrant-3 Re-evaluate\n\t\tquadrant-4 May be improved\n\t\tCampaign A: [0.3, 0.6]\n\t\tCampaign B: [0.45, 0.23]\n\t\tCampaign C: [0.57, 0.69]\n\t\tCampaign D: [0.78, 0.34]\n\t\tCampaign E: [0.40, 0.34]\n\t\tCampaign F: [0.35, 0.78]",
"sortingOrder": 1,
"isPinned": false
},
{
"id": "f8259530-5179-4548-a42c-e672a7c28ac0",
"categoryId": "quadrantChart",
"description": "themed quadrant chart",
"content": "%%{init: {\"quadrantChart\": {\"chartWidth\": 400, \"chartHeight\": 400}, \"themeVariables\": {\"quadrant1TextFill\": \"#ff0000\"} }}%%\n\t\tquadrantChart\n\t\t x-axis Urgent --> Not Urgent\n\t\t y-axis Not Important --> \"Important ❤\"\n\t\t quadrant-1 Plan\n\t\t quadrant-2 Do\n\t\t quadrant-3 Delegate\n\t\t quadrant-4 Delete",
"sortingOrder": 1,
"isPinned": false
},
{
"id": "8a28b8a2-f058-414b-b82a-900153d11a2f",
"categoryId": "c4Diagram",
"description": "sample C4 diagram (compatible with PlantUML)",
"content": "C4Context\n\t\ttitle System Context diagram for Internet Banking System\n\t\tEnterprise_Boundary(b0, \"BankBoundary0\") {\n\t\t Person(customerA, \"Banking Customer A\", \"A customer of the bank, with personal bank accounts.\")\n\t\t Person(customerB, \"Banking Customer B\")\n\t\t Person_Ext(customerC, \"Banking Customer C\", \"desc\")\n \n\t\t Person(customerD, \"Banking Customer D\", \"A customer of the bank, <br/> with personal bank accounts.\")\n \n\t\t System(SystemAA, \"Internet Banking System\", \"Allows customers to view information about their bank accounts, and make payments.\")\n \n\t\t Enterprise_Boundary(b1, \"BankBoundary\") {\n \n\t\t\tSystemDb_Ext(SystemE, \"Mainframe Banking System\", \"Stores all of the core banking information about customers, accounts, transactions, etc.\")\n \n\t\t\tSystem_Boundary(b2, \"BankBoundary2\") {\n\t\t\t System(SystemA, \"Banking System A\")\n\t\t\t System(SystemB, \"Banking System B\", \"A system of the bank, with personal bank accounts. next line.\")\n\t\t\t}\n \n\t\t\tSystem_Ext(SystemC, \"E-mail system\", \"The internal Microsoft Exchange e-mail system.\")\n\t\t\tSystemDb(SystemD, \"Banking System D Database\", \"A system of the bank, with personal bank accounts.\")\n \n\t\t\tBoundary(b3, \"BankBoundary3\", \"boundary\") {\n\t\t\t SystemQueue(SystemF, \"Banking System F Queue\", \"A system of the bank.\")\n\t\t\t SystemQueue_Ext(SystemG, \"Banking System G Queue\", \"A system of the bank, with personal bank accounts.\")\n\t\t\t}\n\t\t }\n\t\t}\n \n\t\tBiRel(customerA, SystemAA, \"Uses\")\n\t\tBiRel(SystemAA, SystemE, \"Uses\")\n\t\tRel(SystemAA, SystemC, \"Sends e-mails\", \"SMTP\")\n\t\tRel(SystemC, customerA, \"Sends e-mails to\")\n \n\t\tUpdateElementStyle(customerA, $fontColor=\"red\", $bgColor=\"grey\", $borderColor=\"red\")\n\t\tUpdateRelStyle(customerA, SystemAA, $textColor=\"blue\", $lineColor=\"blue\", $offsetX=\"5\")\n\t\tUpdateRelStyle(SystemAA, SystemE, $textColor=\"blue\", $lineColor=\"blue\", $offsetY=\"-10\")\n\t\tUpdateRelStyle(SystemAA, SystemC, $textColor=\"blue\", $lineColor=\"blue\", $offsetY=\"-40\", $offsetX=\"-50\")\n\t\tUpdateRelStyle(SystemC, customerA, $textColor=\"red\", $lineColor=\"red\", $offsetX=\"-50\", $offsetY=\"20\")\n \n\t\tUpdateLayoutConfig($c4ShapeInRow=\"3\", $c4BoundaryInRow=\"1\")",
"sortingOrder": 1,
"isPinned": false
},
{
"id": "d476fcb2-171b-407b-a14c-fc229928f3c5",
"categoryId": "sankeyDiagram",
"description": "",
"content": "sankey-beta\n %% source,target,value\n Electricity grid,Over generation / exports,104.453\n Electricity grid,Heating and cooling - homes,113.726\n Electricity grid,H2 conversion,27.14",
"sortingOrder": 0,
"isPinned": false
},
{
"id": "fd51101c-845f-41cc-98ea-cf3d9064f4fe",
"categoryId": "xyChart",
"description": "a sample XYChart diagram",
"content": "xychart-beta\n title \"Sales Revenue\"\n x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]\n y-axis \"Revenue (in $)\" 4000 --> 11000\n bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]\n line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]",
"sortingOrder": 0,
"isPinned": false
},
{
"id": "4d105a15-f99c-47da-909b-9cf95a3b0d0f",
"categoryId": "packet",
"description": "a sample packet diagram",
"content": "packet-beta\ntitle UDP Packet\n0-15: \"Source Port\"\n16-31: \"Destination Port\"\n32-47: \"Length\"\n48-63: \"Checksum\"\n64-95: \"Data (variable length)\"\n",
"sortingOrder": 0,
"isPinned": false
},
{
"id": "016f803e-9b70-40a9-9ba5-aed11358011f",
"categoryId": "kanban",
"description": "a sample kanban diagram",
"content": "kanban\n Todo\n [Create Documentation]\n docs[Create Blog about the new diagram]\n [In progress]\n id6[Create renderer so that it works in all cases. We also add som extra text here for testing purposes. And some more just for the extra flare.]\n id9[Ready for deploy]\n id8[Design grammar]@{ assigned: 'knsv' }\n id10[Ready for test]\n id4[Create parsing tests]@{ ticket: MC-2038, assigned: 'K.Sveidqvist', priority: 'High' }\n id66[last item]@{ priority: 'Very Low', assigned: 'knsv' }\n id11[Done]\n id5[define getData]\n id2[Title of diagram is more than 100 chars when user duplicates diagram with 100 char]@{ ticket: MC-2036, priority: 'Very High'}\n id3[Update DB function]@{ ticket: MC-2037, assigned: knsv, priority: 'High' }\n\n id12[Can't reproduce]\n id3[Weird flickering in Firefox]",
"sortingOrder": 0,
"isPinned": false
},
{
"id": "64c83d61-8d0f-49a1-a719-a333e59d3063",
"categoryId": "block",
"description": "a sample block diagram",
"content": "block-beta\ncolumns 1\n db((\"DB\"))\n blockArrowId6<[\"&nbsp;&nbsp;&nbsp;\"]>(down)\n block:ID\n A\n B[\"A wide one in the middle\"]\n C\n end\n space\n D\n ID --> D\n C --> D\n style B fill:#969,stroke:#333,stroke-width:4px\n",
"sortingOrder": 0,
"isPinned": false
},
{
"id": "9ae060df-8b48-4c98-a735-3dbe736b2fcc",
"categoryId": "architecture",
"description": "a sample architecture diagram",
"content": "architecture-beta\n group api(cloud)[API]\n\n service db(database)[Database] in api\n service disk1(disk)[Storage] in api\n service disk2(disk)[Storage] in api\n service server(server)[Server] in api\n\n db:L -- R:server\n disk1:T -- B:server\n disk2:T -- B:db\n",
"sortingOrder": 0,
"isPinned": false
}
],
"customCategories": [],
"selectedCategoryId": "block",
"defaultCategorySortOrders": {},
"categoryModifications": {}
}

2633
.obsidian/plugins/mermaid-tools/main.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,11 @@
{
"id": "mermaid-tools",
"name": "Mermaid Tools",
"version": "1.3.0",
"minAppVersion": "1.4.0",
"description": "Improved Mermaid.js experience for Obsidian: visual toolbar with common elements & more",
"author": "dartungar",
"authorUrl": "https://dartungar.com",
"fundingUrl": "https://www.paypal.com/paypalme/dartungar",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,149 @@
.mermaid-toolbar-container, .mermaid-toolbar-container * {
max-width: 100%;
max-height: 100%;
}
.mermaid-toolbar-top-row {
display: flex;
flex-direction: row;
flex-wrap: wrap;
gap: 8px;
}
.mermaid-toolbar-elements-container {
padding-top: 1rem;
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
.mermaid-toolbar-element {
font-size: var(--font-ui-small);
cursor: pointer;
padding: 2px 2px 2px 5px;
border-radius: 3px;
flex: 1 0 auto;
}
.mermaid-toolbar-element:hover {
background-color: var(--interactive-hover);
}
.mermaid-tools-element-category-header::before {
content: "▼ ";
font-size: 70%;
padding-bottom: 2px;
}
.mermaid-tools-element-category-header.collapsed::before {
content: "▶ ";
font-size: 70%;
padding-bottom: 2px;
}
.mermaid-tools-element-container {
padding-top: 6px;
border-bottom: var(--border-width) solid var(--color-base-35);
}
.mermaid-tools-edit-element-modal > div {
margin-bottom: 0.5rem;
}
.mermaid-tools-edit-element-modal label {
margin-right: 1rem;
}
/* Custom Category Management Styles */
.mermaid-tools-category-management {
margin-bottom: 2rem;
padding: 1rem;
border: 1px solid var(--color-base-25);
border-radius: 8px;
background-color: var(--color-base-00);
}
.mermaid-tools-category-management h3 {
margin-top: 1rem;
margin-bottom: 0.5rem;
color: var(--text-accent);
}
.mermaid-tools-category-management button.mod-cta {
margin-bottom: 1rem;
}
/* Edit Category Modal Styles */
.mermaid-tools-edit-category-modal {
min-width: 500px;
}
.mermaid-tools-edit-category-modal .setting-item {
padding: 8px 0;
border: none;
}
.mermaid-tools-edit-category-modal .setting-item-info {
flex-grow: 1;
margin-right: 12px;
}
.mermaid-tools-edit-category-modal .setting-item-name {
font-weight: 600;
color: var(--text-normal);
}
.mermaid-tools-edit-category-modal .setting-item-description {
color: var(--text-muted);
font-size: var(--font-ui-smaller);
}
.mermaid-tools-edit-category-modal input,
.mermaid-tools-edit-category-modal textarea {
width: 100%;
padding: 4px 8px;
border: 1px solid var(--color-base-30);
border-radius: 4px;
background-color: var(--color-base-00);
color: var(--text-normal);
}
.mermaid-tools-edit-category-modal input:focus,
.mermaid-tools-edit-category-modal textarea:focus {
border-color: var(--color-accent);
outline: none;
box-shadow: 0 0 0 2px var(--color-accent-2);
}
.modal-button-container {
display: flex;
justify-content: flex-end;
gap: 10px;
margin-top: 20px;
padding-top: 16px;
border-top: 1px solid var(--color-base-25);
}
.modal-button-container button {
padding: 6px 16px;
border: 1px solid var(--color-base-30);
border-radius: 4px;
background-color: var(--color-base-10);
color: var(--text-normal);
cursor: pointer;
font-size: var(--font-ui-small);
}
.modal-button-container button:hover {
background-color: var(--color-base-20);
}
.modal-button-container button.mod-cta {
background-color: var(--color-accent);
color: var(--text-on-accent);
border-color: var(--color-accent);
}
.modal-button-container button.mod-cta:hover {
background-color: var(--color-accent-hover);
}

View File

@@ -0,0 +1,987 @@
{
"copyLinkToElemenetAnchorTo100": false,
"copyFrameLinkByName": false,
"disableDoubleClickTextEditing": false,
"phoneFooterSafeAreaPadding": false,
"folder": "Excalidraw",
"cropFolder": "",
"annotateFolder": "",
"embedUseExcalidrawFolder": false,
"templateFilePath": "Excalidraw/Template.excalidraw",
"scriptFolderPath": "Excalidraw/Scripts",
"fontAssetsPath": "Excalidraw/CJK Fonts",
"loadChineseFonts": false,
"loadJapaneseFonts": false,
"loadKoreanFonts": false,
"compress": true,
"decompressForMDView": false,
"onceOffCompressFlagReset": true,
"onceOffGPTVersionReset": true,
"autosave": true,
"autosaveIntervalDesktop": 60000,
"autosaveIntervalMobile": 30000,
"drawingFilenamePrefix": "Drawing ",
"drawingEmbedPrefixWithFilename": true,
"drawingFilnameEmbedPostfix": " ",
"drawingFilenameDateTime": "YYYY-MM-DD HH.mm.ss",
"useExcalidrawExtension": true,
"cropSuffix": "",
"cropPrefix": "cropped_",
"annotateSuffix": "",
"annotatePrefix": "annotated_",
"annotatePreserveSize": false,
"displaySVGInPreview": false,
"previewImageType": "SVG",
"renderingConcurrency": 3,
"imageCacheRetentionDays": 30,
"allowImageCache": true,
"allowImageCacheInScene": true,
"displayExportedImageIfAvailable": false,
"previewMatchObsidianTheme": false,
"width": "400",
"height": "",
"overrideObsidianFontSize": false,
"dynamicStyling": "colorful",
"isLeftHanded": false,
"desktopUIMode": "tray",
"tabletUIMode": "compact",
"phoneUIMode": "mobile",
"iframeMatchExcalidrawTheme": true,
"matchTheme": false,
"matchThemeAlways": false,
"matchThemeTrigger": false,
"defaultMode": "normal",
"defaultPenMode": "never",
"penModeDoubleTapEraser": true,
"penModeSingleFingerPanning": true,
"penModeCrosshairVisible": true,
"panWithRightMouseButton": false,
"renderImageInMarkdownReadingMode": false,
"renderImageInHoverPreviewForMDNotes": false,
"renderImageInMarkdownToPDF": false,
"allowPinchZoom": false,
"allowWheelZoom": false,
"zoomToFitOnOpen": true,
"zoomToFitOnResize": false,
"zoomToFitMaxLevel": 2,
"zoomStep": 0.05,
"zoomMin": 0.1,
"zoomMax": 30,
"linkPrefix": "📍",
"urlPrefix": "🌐",
"parseTODO": false,
"todo": "☐",
"done": "🗹",
"hoverPreviewWithoutCTRL": false,
"linkOpacity": 1,
"openInAdjacentPane": true,
"showSecondOrderLinks": true,
"focusOnFileTab": true,
"openInMainWorkspace": true,
"showLinkBrackets": false,
"syncElementLinkWithText": false,
"allowCtrlClick": true,
"forceWrap": false,
"pageTransclusionCharLimit": 200,
"wordWrappingDefault": 0,
"removeTransclusionQuoteSigns": true,
"iframelyAllowed": false,
"pngExportScale": 1,
"exportWithTheme": true,
"exportWithBackground": true,
"exportPaddingSVG": 10,
"exportEmbedScene": false,
"keepInSync": false,
"autoexportSVG": false,
"autoexportPNG": false,
"autoExportLightAndDark": false,
"autoexportExcalidraw": false,
"embedType": "excalidraw",
"embedMarkdownCommentLinks": true,
"embedWikiLink": true,
"syncExcalidraw": false,
"experimentalFileType": false,
"experimentalFileTag": "✏️",
"experimentalLivePreview": true,
"fadeOutExcalidrawMarkup": false,
"loadPropertySuggestions": false,
"experimentalEnableFourthFont": false,
"experimantalFourthFont": "Virgil",
"addDummyTextElement": false,
"zoteroCompatibility": false,
"fieldSuggester": true,
"enableOnloadScripts": false,
"compatibilityMode": false,
"drawingOpenCount": 0,
"library": "deprecated",
"library2": {
"type": "excalidrawlib",
"version": 2,
"source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag2.23.3",
"libraryItems": []
},
"imageElementNotice": true,
"mdSVGwidth": 500,
"mdSVGmaxHeight": 800,
"mdFont": "Virgil",
"mdFontColor": "Black",
"mdBorderColor": "Black",
"mdCSS": "",
"scriptEngineSettings": {},
"previousRelease": "2.23.3",
"showReleaseNotes": true,
"excalidrawMasteryPromoCollapsed": false,
"compareManifestToPluginVersion": true,
"showNewVersionNotification": true,
"latexBoilerplate": "\\color{green}e=mc^2",
"latexPreambleLocation": "preamble.sty",
"taskboneEnabled": false,
"taskboneAPIkey": "",
"pinnedScripts": [],
"sidepanelTabs": [],
"customPens": [
{
"type": "default",
"freedrawOnly": false,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": 0,
"penOptions": {
"highlighter": false,
"constantPressure": false,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 0.6,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "easeOutSine",
"start": {
"cap": true,
"taper": 0,
"easing": "linear"
},
"end": {
"cap": true,
"taper": 0,
"easing": "linear"
}
}
}
},
{
"type": "highlighter",
"freedrawOnly": true,
"strokeColor": "#FFC47C",
"backgroundColor": "#FFC47C",
"fillStyle": "solid",
"strokeWidth": 2,
"roughness": null,
"penOptions": {
"highlighter": true,
"constantPressure": true,
"hasOutline": true,
"outlineWidth": 4,
"options": {
"thinning": 1,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "linear",
"start": {
"taper": 0,
"cap": true,
"easing": "linear"
},
"end": {
"taper": 0,
"cap": true,
"easing": "linear"
}
}
}
},
{
"type": "finetip",
"freedrawOnly": false,
"strokeColor": "#3E6F8D",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0.5,
"roughness": 0,
"penOptions": {
"highlighter": false,
"hasOutline": false,
"outlineWidth": 1,
"constantPressure": true,
"options": {
"smoothing": 0.4,
"thinning": -0.5,
"streamline": 0.4,
"easing": "linear",
"start": {
"taper": 5,
"cap": false,
"easing": "linear"
},
"end": {
"taper": 5,
"cap": false,
"easing": "linear"
}
}
}
},
{
"type": "fountain",
"freedrawOnly": false,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 2,
"roughness": 0,
"penOptions": {
"highlighter": false,
"constantPressure": false,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"smoothing": 0.2,
"thinning": 0.6,
"streamline": 0.2,
"easing": "easeInOutSine",
"start": {
"taper": 150,
"cap": true,
"easing": "linear"
},
"end": {
"taper": 1,
"cap": true,
"easing": "linear"
}
}
}
},
{
"type": "marker",
"freedrawOnly": true,
"strokeColor": "#B83E3E",
"backgroundColor": "#FF7C7C",
"fillStyle": "dashed",
"strokeWidth": 2,
"roughness": 3,
"penOptions": {
"highlighter": false,
"constantPressure": true,
"hasOutline": true,
"outlineWidth": 4,
"options": {
"thinning": 1,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "linear",
"start": {
"taper": 0,
"cap": true,
"easing": "linear"
},
"end": {
"taper": 0,
"cap": true,
"easing": "linear"
}
}
}
},
{
"type": "thick-thin",
"freedrawOnly": true,
"strokeColor": "#CECDCC",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": null,
"penOptions": {
"highlighter": true,
"constantPressure": true,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 1,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "linear",
"start": {
"taper": 0,
"cap": true,
"easing": "linear"
},
"end": {
"cap": true,
"taper": true,
"easing": "linear"
}
}
}
},
{
"type": "thin-thick-thin",
"freedrawOnly": true,
"strokeColor": "#CECDCC",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": null,
"penOptions": {
"highlighter": true,
"constantPressure": true,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 1,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "linear",
"start": {
"cap": true,
"taper": true,
"easing": "linear"
},
"end": {
"cap": true,
"taper": true,
"easing": "linear"
}
}
}
},
{
"type": "default",
"freedrawOnly": false,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": 0,
"penOptions": {
"highlighter": false,
"constantPressure": false,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 0.6,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "easeOutSine",
"start": {
"cap": true,
"taper": 0,
"easing": "linear"
},
"end": {
"cap": true,
"taper": 0,
"easing": "linear"
}
}
}
},
{
"type": "default",
"freedrawOnly": false,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": 0,
"penOptions": {
"highlighter": false,
"constantPressure": false,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 0.6,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "easeOutSine",
"start": {
"cap": true,
"taper": 0,
"easing": "linear"
},
"end": {
"cap": true,
"taper": 0,
"easing": "linear"
}
}
}
},
{
"type": "default",
"freedrawOnly": false,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 0,
"roughness": 0,
"penOptions": {
"highlighter": false,
"constantPressure": false,
"hasOutline": false,
"outlineWidth": 1,
"options": {
"thinning": 0.6,
"smoothing": 0.5,
"streamline": 0.5,
"easing": "easeOutSine",
"start": {
"cap": true,
"taper": 0,
"easing": "linear"
},
"end": {
"cap": true,
"taper": 0,
"easing": "linear"
}
}
}
}
],
"numberOfCustomPens": 0,
"pdfScale": 4,
"pdfBorderBox": true,
"pdfFrame": false,
"pdfGapSize": 20,
"pdfGroupPages": false,
"pdfLockAfterImport": true,
"pdfNumColumns": 1,
"pdfNumRows": 1,
"pdfDirection": "right",
"pdfImportScale": 0.3,
"gridSettings": {
"DYNAMIC_COLOR": true,
"COLOR": "#000000",
"OPACITY": 50,
"GRID_DIRECTION": {
"horizontal": true,
"vertical": true
}
},
"laserSettings": {
"DECAY_LENGTH": 50,
"DECAY_TIME": 1000,
"COLOR": "#ff0000"
},
"embeddableMarkdownDefaults": {
"useObsidianDefaults": false,
"backgroundMatchCanvas": false,
"backgroundMatchElement": true,
"backgroundColor": "#fff",
"backgroundOpacity": 60,
"borderMatchElement": true,
"borderColor": "#fff",
"borderOpacity": 0,
"filenameVisible": false
},
"markdownNodeOneClickEditing": false,
"canvasImmersiveEmbed": true,
"startupScriptPath": "",
"aiEnabled": true,
"aiVerboseLogging": false,
"aiProviderProfiles": {
"OpenAI": {
"provider": "openai",
"apiKey": "",
"baseURL": "https://api.openai.com/v1"
},
"Anthropic": {
"provider": "anthropic",
"apiKey": "",
"baseURL": "https://api.anthropic.com/v1"
},
"Google Gemini": {
"provider": "google",
"apiKey": "",
"baseURL": "https://generativelanguage.googleapis.com/v1beta"
},
"xAI": {
"provider": "xai",
"apiKey": "",
"baseURL": "https://api.x.ai/v1"
},
"OpenAI-compatible": {
"provider": "openai-compatible",
"apiKey": "",
"baseURL": "https://api.openai.com/v1"
}
},
"aiTextModelConfigs": {
"gpt-5-mini": {
"providerId": "OpenAI",
"model": "gpt-5-mini",
"endpoint": "",
"multimodalSupport": true
},
"claude-sonnet-4-5": {
"providerId": "Anthropic",
"model": "claude-sonnet-4-5",
"endpoint": "",
"multimodalSupport": true
},
"gemini-2.5-pro": {
"providerId": "Google Gemini",
"model": "gemini-2.5-pro",
"endpoint": "",
"multimodalSupport": true
},
"grok-4-fast": {
"providerId": "xAI",
"model": "grok-4-fast",
"endpoint": "",
"multimodalSupport": true
}
},
"aiImageModelConfigs": {
"dall-e-2": {
"providerId": "OpenAI",
"model": "dall-e-2",
"supportedSizes": [
"256x256",
"512x512",
"1024x1024"
],
"supportsPromptImageTransforms": true,
"supportsMaskImageEdits": true
},
"dall-e-3": {
"providerId": "OpenAI",
"model": "dall-e-3",
"supportedSizes": [
"1024x1024",
"1792x1024",
"1024x1792"
],
"supportsPromptImageTransforms": false,
"supportsMaskImageEdits": false
},
"gpt-image-1": {
"providerId": "OpenAI",
"model": "gpt-image-1",
"supportedSizes": [
"1024x1024",
"1536x1024",
"1024x1536"
],
"supportsPromptImageTransforms": true,
"supportsMaskImageEdits": true
},
"gpt-image-1-mini": {
"providerId": "OpenAI",
"model": "gpt-image-1-mini",
"supportedSizes": [
"1024x1024",
"1536x1024",
"1024x1536"
],
"supportsPromptImageTransforms": true,
"supportsMaskImageEdits": true
},
"gpt-image-1.5": {
"providerId": "OpenAI",
"model": "gpt-image-1.5",
"supportedSizes": [
"1024x1024",
"1536x1024",
"1024x1536"
],
"supportsPromptImageTransforms": true,
"supportsMaskImageEdits": true
},
"gpt-image-2": {
"providerId": "OpenAI",
"model": "gpt-image-2",
"supportedSizes": [
"1024x1024",
"1536x1024",
"1024x1536",
"2048x2048"
],
"supportsPromptImageTransforms": true,
"supportsMaskImageEdits": true
},
"gemini-2.5-flash-image": {
"providerId": "Google Gemini",
"model": "gemini-2.5-flash-image",
"supportedSizes": [
"1024x1024"
],
"supportsPromptImageTransforms": true,
"supportsMaskImageEdits": false
},
"gemini-3.1-flash-image-preview": {
"providerId": "Google Gemini",
"model": "gemini-3.1-flash-image-preview",
"supportedSizes": [
"1024x1024"
],
"supportsPromptImageTransforms": true,
"supportsMaskImageEdits": false
},
"gemini-3-pro-image-preview": {
"providerId": "Google Gemini",
"model": "gemini-3-pro-image-preview",
"supportedSizes": [
"1024x1024"
],
"supportsPromptImageTransforms": true,
"supportsMaskImageEdits": false
},
"grok-imagine-image-quality": {
"providerId": "xAI",
"model": "grok-imagine-image-quality",
"supportedSizes": [
"1024x1024"
],
"supportsPromptImageTransforms": true,
"supportsMaskImageEdits": false
},
"grok-imagine-image-pro": {
"providerId": "xAI",
"model": "grok-imagine-image-pro",
"supportedSizes": [
"1024x1024"
],
"supportsPromptImageTransforms": true,
"supportsMaskImageEdits": false
}
},
"aiDefaultTextModel": "gpt-5-mini",
"aiDefaultImageGenerationModel": "gpt-image-1",
"aiDefaultMaxOutgoingTokens": 0,
"aiDefaultMaxResponseTokens": 0,
"modifierKeyConfig": {
"Mac": {
"LocalFileDragAction": {
"defaultAction": "image-import",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-import"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": true,
"meta_ctrl": false,
"result": "link"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-url"
},
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": true,
"meta_ctrl": false,
"result": "embeddable"
}
]
},
"WebBrowserDragAction": {
"defaultAction": "image-url",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-url"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": true,
"meta_ctrl": false,
"result": "link"
},
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": true,
"meta_ctrl": false,
"result": "embeddable"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-import"
}
]
},
"InternalDragAction": {
"defaultAction": "link",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "link"
},
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": true,
"result": "embeddable"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": true,
"result": "image-fullsize"
}
]
},
"LinkClickAction": {
"defaultAction": "new-tab",
"rules": [
{
"shift": true,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "active-pane"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "new-tab"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": true,
"meta_ctrl": false,
"result": "new-pane"
},
{
"shift": true,
"ctrl_cmd": true,
"alt_opt": true,
"meta_ctrl": false,
"result": "popout-window"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": true,
"result": "md-properties"
}
]
}
},
"Win": {
"LocalFileDragAction": {
"defaultAction": "image-import",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-import"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "link"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-url"
},
{
"shift": true,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "embeddable"
}
]
},
"WebBrowserDragAction": {
"defaultAction": "image-url",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-url"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "link"
},
{
"shift": true,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "embeddable"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image-import"
}
]
},
"InternalDragAction": {
"defaultAction": "link",
"rules": [
{
"shift": false,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "link"
},
{
"shift": true,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "embeddable"
},
{
"shift": true,
"ctrl_cmd": false,
"alt_opt": false,
"meta_ctrl": false,
"result": "image"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": true,
"meta_ctrl": false,
"result": "image-fullsize"
}
]
},
"LinkClickAction": {
"defaultAction": "new-tab",
"rules": [
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "active-pane"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": false,
"result": "new-tab"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": true,
"meta_ctrl": false,
"result": "new-pane"
},
{
"shift": true,
"ctrl_cmd": true,
"alt_opt": true,
"meta_ctrl": false,
"result": "popout-window"
},
{
"shift": false,
"ctrl_cmd": true,
"alt_opt": false,
"meta_ctrl": true,
"result": "md-properties"
}
]
}
}
},
"slidingPanesSupport": false,
"areaZoomLimit": 1,
"longPressDesktop": 500,
"longPressMobile": 500,
"doubleClickLinkOpenViewMode": true,
"rank": "Bronze",
"modifierKeyOverrides": [
{
"modifiers": [
"Mod"
],
"key": "Enter"
},
{
"modifiers": [
"Mod"
],
"key": "k"
},
{
"modifiers": [
"Mod"
],
"key": "G"
}
],
"showSplashscreen": true,
"pdfSettings": {
"pageSize": "A4",
"pageOrientation": "portrait",
"fitToPage": 1,
"paperColor": "white",
"customPaperColor": "#ffffff",
"alignment": "center",
"margin": "normal"
},
"disableContextMenu": false
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,12 @@
{
"id": "obsidian-excalidraw-plugin",
"name": "Excalidraw",
"version": "2.23.3",
"minAppVersion": "1.5.7",
"description": "Sketch Your Mind. Edit and view Excalidraw drawings. Enter the world of 4D Visual PKM.",
"author": "Zsolt Viczian",
"authorUrl": "https://excalidraw-obsidian.online",
"fundingUrl": "https://ko-fi.com/zsolt",
"helpUrl": "https://github.com/zsviczian/obsidian-excalidraw-plugin#readme",
"isDesktopOnly": false
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,68 @@
{
"commitMessage": "vault backup: {{date}}",
"autoCommitMessage": "vault backup: {{date}}",
"commitMessageScript": "",
"commitDateFormat": "YYYY-MM-DD HH:mm:ss",
"autoSaveInterval": 0,
"autoPushInterval": 0,
"autoPullInterval": 0,
"autoPullOnBoot": false,
"autoCommitOnlyStaged": false,
"disablePush": false,
"pullBeforePush": true,
"disablePopups": false,
"showErrorNotices": true,
"disablePopupsForNoChanges": false,
"listChangedFilesInMessageBody": false,
"showStatusBar": true,
"updateSubmodules": false,
"syncMethod": "merge",
"mergeStrategy": "none",
"customMessageOnAutoBackup": false,
"autoBackupAfterFileChange": false,
"treeStructure": true,
"refreshSourceControl": true,
"basePath": "",
"differentIntervalCommitAndPush": false,
"changedFilesInStatusBar": false,
"showedMobileNotice": true,
"refreshSourceControlTimer": 7000,
"showBranchStatusBar": true,
"setLastSaveToLastCommit": false,
"submoduleRecurseCheckout": false,
"gitDir": "",
"showFileMenu": true,
"authorInHistoryView": "hide",
"dateInHistoryView": false,
"diffStyle": "split",
"hunks": {
"showSigns": false,
"hunkCommands": false,
"statusBar": "disabled"
},
"lineAuthor": {
"show": false,
"followMovement": "inactive",
"authorDisplay": "initials",
"showCommitHash": false,
"dateTimeFormatOptions": "date",
"dateTimeFormatCustomString": "YYYY-MM-DD HH:mm",
"dateTimeTimezone": "viewer-local",
"coloringMaxAge": "1y",
"colorNew": {
"r": 255,
"g": 150,
"b": 150
},
"colorOld": {
"r": 120,
"g": 160,
"b": 255
},
"textColorCss": "var(--text-muted)",
"ignoreWhitespace": false,
"gutterSpacingFallbackLength": 5,
"lastShownAuthorDisplay": "initials",
"lastShownDateTimeFormatOptions": "date"
}
}

View File

@@ -4,24 +4,53 @@
"type": "split",
"children": [
{
"id": "f445e7e4c04b6d6c",
"id": "5b73b7e33e95851e",
"type": "tabs",
"children": [
{
"id": "b0ba3684f585064f",
"id": "495fd9d9166d00b5",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "部门五月份任务规划.md",
"mode": "preview",
"file": "姿态系统硬件详细设计文档_V0.2.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "部门五月份任务规划"
"title": "姿态系统硬件详细设计文档_V0.2"
}
},
{
"id": "65cd3cfabd556a5a",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "姿态系统硬件规格书_修订版.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "姿态系统硬件规格书_修订版"
}
},
{
"id": "e52ace23acc352a4",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "事项.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "事项"
}
}
]
],
"currentTab": 2
}
],
"direction": "vertical"
@@ -94,6 +123,7 @@
"state": {
"type": "backlink",
"state": {
"file": "README.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
@@ -103,7 +133,7 @@
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
"title": "反向链接"
"title": "README 的反向链接列表"
}
},
{
@@ -112,11 +142,12 @@
"state": {
"type": "outgoing-link",
"state": {
"file": "README.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
"title": "出链"
"title": "README 的出链列表"
}
},
{
@@ -154,17 +185,17 @@
"state": {
"type": "outline",
"state": {
"file": "conflict-files-obsidian-git.md",
"file": "hardware_detailed_design.md",
"followCursor": false,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
"title": "conflict-files-obsidian-git 的大纲"
"title": "hardware_detailed_design 的大纲"
}
},
{
"id": "2076822cdefbb8a3",
"id": "f99a7d15791582ed",
"type": "leaf",
"state": {
"type": "git-view",
@@ -189,15 +220,46 @@
"templates:插入模板": false,
"command-palette:打开命令面板": false,
"bases:新建数据库": false,
"obsidian-excalidraw-plugin:新建绘图文件": false,
"obsidian-git:Open Git source control": false,
"pdf-plus:PDF++: Toggle auto-copy": false,
"pdf-plus:PDF++: Toggle auto-focus": false,
"pdf-plus:PDF++: Toggle auto-paste": false
"mermaid-tools:Open Mermaid Toolbar": false
}
},
"active": "2076822cdefbb8a3",
"active": "e52ace23acc352a4",
"lastOpenFiles": [
"部门五月份任务规划.md",
"conflict-files-obsidian-git.md"
"姿态系统硬件规格书_修订版.md",
"事项.md",
"未命名",
"姿态系统硬件详细设计文档_V0.2.md",
"姿态系统产品规格说明书融合模板5.20.md",
"Excalidraw/Drawing 2026-05-22 10.46.22.excalidraw.md",
"Excalidraw/Drawing 2026-05-22 13.45.50.excalidraw.md",
"Excalidraw/Drawing 2026-05-22 13.45.50.excalidraw.svg",
"Pasted image 20260522140141.png",
"Pasted image 20260522140126.png",
"Excalidraw/姿态系统硬件详细设计文档_V0.2.pdf",
"姿态系统硬件详细设计文档_V0.2.pdf",
"硬件设计文档.md",
"Pasted image 20260522134423.png",
"Pasted image 20260522134155.png",
"Pasted image 20260522134048.png",
"未命名.canvas",
"未命名.base",
"Excalidraw/Drawing 2026-05-22 10.46.37.excalidraw.md",
"Pasted image 20260522091534.png",
"Pasted image 20260522091552.png",
"Pasted image 20260522102307.png",
"硬件设计文档.pdf",
"hardware_spec.md",
"Excalidraw/Drawing 2026-05-22 10.28.03.excalidraw.md",
"Excalidraw",
"README.md",
"resource/gif20260514055249.gif",
"resource",
"新建文件夹",
"[Download.md",
"conflict-files-obsidian-git.md",
"诀别书钢琴谱.pdf",
"部门五月份任务规划.md"
]
}

View File

@@ -0,0 +1,14 @@
---
excalidraw-plugin: parsed
tags: [excalidraw]
---
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving'
## Drawing
```compressed-json
N4IgLgngDgpiBcIYA8DGBDANgSwCYCd0B3EAGhADcZ8BnbAewDsEAmcm+gV31TkQAswYKDXgB6MQHNsYfpwBGAOlT0AtmIBeNCtlQbs6RmPry6uA4wC0KDDgLFLUTJ2lH8MTDHQ0YNMWHRJFkUWAGZFULIkT1UYRjAaBABtAF1ydCgoAGUAsD5QSXw8LOwNPkZOTExyHRgiACF0VABrQq5GXABhekx6fAQQAGIAM1GxkABfCaA==
```
%%

View File

@@ -0,0 +1,140 @@
---
excalidraw-plugin: parsed
tags: [excalidraw]
---
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving'
# Excalidraw Data
## Text Elements
9~36V 输入 ^T4cEKd7L
输入保护 ^bRQW7DIT
DCDC: 5V ^HLjVveBB
3.3V核心电源 ^S8PFG8rD
3.3VGNSS电源 ^GrHOf4di
3.3VPHY电源 ^go0f6IUg
MCU ^Lfto3Yog
以太网 PHY ^8uSX8T3Y
IMU 电源 ^CHBDoZo9
GNSS ^C47vP2Wz
%%
## Drawing
```compressed-json
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
yrDuCAA=
```
%%

View File

@@ -0,0 +1,302 @@
---
excalidraw-plugin: parsed
tags: [excalidraw]
---
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving'
# Excalidraw Data
## Text Elements
9-36V DC输入 ^rkrOPpVO
输入保护/滤波/掉电检测 ^VTd98Hgb
接口板DCDC: 5V母线 ^LnhsiTsY
主板电源 ^SdSuStkB
IMU板电源 ^pOwVzqIl
MCU 3.3V ^kmzU5uH0
GNSS 3.3V ^JibYA2H7
PHY 3.3V ^5DTR9mkg
STM32H7核心板 ^ZbSJRIAk
GNSS模块/双天线 ^pad6lfSd
以太网PHY ^hJhB6tZ7
IMU: ADIS16488/SCH1633/STIM300 ^SAP7TeEx
网络隔离变压器 ^u0A2XLCj
RJ45/防护 ^UA74Ileg
TTL UART ^17L3kFd6
RS232收发器 ^iA5fq4E2
RS422收发器 ^yaeBA7fz
RS232外部接口 ^W0f1LlIG
RS422外部接口 ^b3q7kPGd
PPS/Event输入输出 ^wFImo8iF
SWD/Debug UART/产测接口 ^IFnN0yGj
状态指示灯 ^xCY5weNJ
SPI/DRDY/RST/DIO ^WjXux2dE
UART/RTCM/PPS/STATUS ^H7vqp3qt
RMII/MDIO/MDC/RST ^7opS4CHc
%%
## Drawing
```compressed-json
N4KAkARALgngDgUwgLgAQQQDwMYEMA2AlgCYBOuA7hADTgQBuCpAzoQPYB2KqATLZMzYBXUtiRoIACyhQ4zZAHoFAc0JRJQgEYA6bGwC2CgF7N6hbEcK4OCtptbErHALRY8RMpWdx8Q1TdIEfARcZgRmBShcZR5tHgBmbXiaOiCEfQQOKGZuAG1wMFAwYogSbggACQBpAAYAR3oKgFkjABEAcR4AKQB1Lsk6gFYjACsAIRqU4shYRHLA7CiOZWCp
ksxuZwBGeK2apIB2ePjBwZ4ANl3BgA5+EphN3YAWbS2t663z65rPrYBOJ5PeJ3SAUEjqbjvfYfHiDEFSBCEZTSbjnGrw6wrcSodEFARQUhsADWCAAwmx8GxSOUAMRbBD0+lrSCaXDYInKQlCDjEcmU6kSAnWZhwXCBLLMiAAM0I+HwAGVYKsJIIPJLmATiQgeuDJNw+HiIBrCSTFTBlehVWV4VzkRxwjk0Ft4WxRdg1A8nTVcdMIJzhHAAJLER2o
XIAXXhUvIGWD3A4Qjl8MIPKw5VwTUlXJ59uYoYTScNYQQxEhl2uB3Og3iNSe8MYLHYXDQ53rTFYnAAcpwxJDq39vU8/jwfSVCMxWmkoCXuFKCGF4ZphDyAKLBDJZUP5aaFPElWbY6BYKDMseliSkImkADyAAU4AA1a8QPcAXxBu53kDKEjGzGurQAFqDPoD4UJIACqYTKJocD0DwTzXgAmqeMzwIeYqElQb54pGhpCHAxC4NO56oFsBwHACPDXNc
aLXIMzqGkQHBEvGib4PClLsjOaBzvgC6GpIoQACrHgAMimrG8fOCAFO+BRFGe8xXnej7PvCB7lNOmAnvCGxoNs1HnNo9EHDU5xVjUNzHAc8Keqgzg8H8xnnO8nzfL8AJAvCYLEBCTrHNoFF/MOCH0ScWyDK2gmIsiJ5oLCGLLBao74iaZIUlStKMgySCLmyHLZrymUCugQocCKYqZLphoynKZoWkaFLWkWmokjqfl6gl8LGlqDWHlapY2sIdoOpC
Lpuh6kLevC/oEcGW54b60a4LGpEFhxhopsQaYSLgnZZsuxC5vm7E9QgPFkZ8Q5/JWCFto2nCog9HYcN2HC9k6Ty1lW3xRcmE5TpdfECb6S7csQa7pNVi3wgRREkZCwVPNRtE1PRjG+sxUmoBtnFsNxpEgwgGnHuUfzOPE5wPqgrSkoAyfGAKaKWaUKJOnk5T1O0wzzNRpwUDyoQRjYiOfNZAAYqtsr2XChraVAACCRDKM26BiFkTCSg2UDmAQStI
qrED6CQxCrPCehZLgKZMHGEjVPUjQtB03R9AMwzjJMLqkEiKYEGz8XoBTVM03TTOSrgQhQGwABK4RC9iBJCCTTHWxUsUok6cSy76QnMP7EksbOMlyXcinfqREBGIwzCkHUFRiaSEHi/g17i2wgwK4BhAK1skqaReCCLJiZuGvpDl7JR2hRejpwXFctyGvZlNOa8blfD8rlecChq+f5vBovCkjpwHA5JVi3CpUabUZfy2W5Uy+XsnNPJ8llgrkBVo
rijVy2ygqSoDWakNVq6UOp7wNL6XqpoAHlEGodPwkgTrjUNK6NkU0vSXzmkGEMeQlolBWmtNihZfTbV2ugXA6lDRFSQWgPGRYLqkR2E8M4Bw9jxAgSUBsr1uC2UNFwps71PpkQOE8A43xqIHA4d+QGwREbSX4snMGR0oYbmyHkPcZd9zoS0mTD85dygPmEsQP41wKgwRfDueSO5NH6N/P+ICIEwKQWgrBeCiEUJ6OgNovapAsIWOmFY6YNjSgV0G
IQfQ+g6h/H0IGW8XRSBVHMH8eAYlSBdE0KhLxcwfF+JwtMPBkB4bEUuuRSiKMaJ0QYpxSSRDNpYwJiSImMlD4iXEjU+RYQS4KS2hXQxxjTHmI0t4squjR6bD2GiIK3xrhPC2DwWENRJF2U2E5Fya8PKb0BNvX0u8uq8HmdoIEIVWHDniNcaiczD7H31NnEow9sSXygTfN+6A6T3zyoaVkT8iqv1KtAD+lVv6Sjqv/c0gC1Q9WvmAvZUir7pX6rAo
B8DRp5mQb6VB7pYDTUwVybBsNaoxgQLbXGZ0tqpjHhAXAt54E5jGrQ0lkCGH6m9FTWiA46x8PbE2Z6nLHpvR7CLE41YqYA0nLI4GzTPnKPXDDXBcNCLFMYcjVGlTMYlGxrU/GhMi4KNJuzCQTNAC78oAEqMFCABO7QARzYKEAJHGgBWV0AAMWgBpWxZhQf25QjWmstTah1zqxYC3jsyv1ktjb4BlnqxWytDbq2nNSB6Ot3D6xVuUY2xBTYfN9BbK
I1tSDEsrtXWu9dG7N1bu3Tu3de5ex9hwP2ZMDWMxNeaq1dqnXh0jjHOOwtuCJ0Ueq1O1zM6JUEq0nSBccbEy6cUMuITyiYDEoGKoRIAAaQhxZVBGFUC6AB9CgYxCRwAgtSoZ2T0ALCWOfPSmxKx/CnpUs4lxIqUWWQZZ4q8Pjr08lsnyup9SAm0OZQdOd+2oAPoae5F9IXpV+XfHKkovmFSOlB9+wov7VWBX/BFKokUQa1NC/U2HoFgsRRCqhI1E
F0rIhNNBWKMGzVxQtOVBLVpEvWgysc5L0wAEUaXHXI3QxlJTXLxDEYs6iL1uVoAXr6fhXYBXMthDwERVNL7jjFQgORqBiaLmldDTc6jrF7jQseo87NPE/nQGJDgkhWDCWYChN8H5glmYgGEiJUSYlxISUklJaSMmeP7uQ3xbBsKWIcwZ6dEgzkNCMWwb6nZrjtC6PKTdXQ6hNGEoQaOmT/OUsC8FgJoWvzhfQEY68CsoALofDAegTwiQKyqJ2Rdz
gpSYCaIurLwycu5MsbheVCMSnKoqTPNVkANX0uIeqhpErdVDrzm0wuHTZLFECVOpzFmrOEBsx4uWHX5aSjHs4ERLxAR/EGJIv4WxmGwmGxAJeqztCuTfRs/4n6d7fqdH8RI1x4ghRODWBT8QgSSZKEfJEGdeC3MgGBtAjzr6IdeTlB+nyCrP2KrfJDn8qoSijOhmBmHiOQKhW93g+GEAYctFhkjCCaEUZQZNajZEZqGiwfRtAEYoyEuJXxtjO0KW
4Ey8NCG1OucCCZU6Wi/wwr/V5dwlsYmZMfRFnMqyCQqzRRITItTU3QYlHBquGVunWcFIgEU9TpSqKDYxtU+bJLxsjcm006bvpdsSEAKXGgBj5UAP7mdM6ZoEGA+QAs9aAH6/F1brXee+96SX3Afg9+sFp2hKl8pT82DdLbgEPjMRoNuUaNms4263wImw2Ka02SkzVbe0OaK6zvnUulda6N0IG3bu10B7JRUirTW/V6B3de9JD71Afug+tqjrHVg8
fUDdqtwgNOoOA5bCzi02bI72kaeLkt0uPT5jxH0J2RZK4DhNGYKSQYnI/iAS2BwGAPQIJ9w66esDF6DKiMGIckxQq54Pr+E+hyZy1mPY3s9t5K9p1JCN9FcrPqiJfFDjiCTnDhAG8jBo/PBhDHAeVICqhtjvVLjuTvjiUE8rht1CAn1NgU1LgZALaGRqik6JRpivZHsDigGCzmGEbgQsxpqmSjzumPKNxkLqxiLiUqIscDsBvHLqrF/tLgIrJglD
sOvFZLWKKkDA7triyNpqoluBomFtlrtqZhXPKMQPKEIIqESGMP4uvhoYVk5pFvQNFrFvFolslqlulvzpoR1phEFqYWAIEpOmFk5reJujABxvQJgK0IGBBDBDACMESHAPoH8BBJIIGGJO1kZm4XlmYfphYRXNHPKJgOcO0NusoPKMoBxlAHUK0PQJIGJIBK0M4D/DuFkhhLlh4V4Z+HUU5lKPKIGFABBEhHmIiArIMBxqQBUPEJoOLJ2MkkkQ0V1g
Ej1vhAqqbgNmjJbinNbsLhAFxI0jqsoVIMOlAKOlsYtp4RviQrofoYYVAMYbfkZtoWMk/swq/l9rPPeqduIb6EvFTNem8P/h+kATskTt8OAXFDcmfClLASVNBrlLBsjj8uCejugVjrVDjoRnji1ATqAkTrCk8mTqQaiSUBQdTtdhiuggzgwfNDgobuzkxpznwaUOxntMJDwbxjScWKRBRNWJcOZBylJlyk9LLhIfLkIu8KdgxAxICAoeKkoT2ioR
DCorKhSXMX1kqmUiqkNlbjjGsRsVrlKRnuUIANxyHutqgACXYh61roD6lGnAr8xx4iyJ7J5Syhpp7hqF7Z7VS568rxp6yRrJomwjwZr8zl42wVykDb674HD76H7H6n7n6X7X5t7ez+Cd4BwQDmnGkYhtqj4BpoCT4rHT5Abz4AbA67H7ELYTotG2LoAwAQQHB7ErjyhSgQTYDRy4B/DVpgTKDOBiTixXGHj37JTprrCbAWT3aDBPBoh3pXCUSwq3
aDCfHrIAFbxfogFOhnBBQA5Cbp4g5AkthQF9ngZEEkhwEIGQlIEo6oEAooYIm/xYHIk4G4lpQ4YYkk7YlwIC4oqhiEl050GM6+jM7knMGUmEJjZ1Lc5kKUo34C60pUE27AX8GMLOSuRnCAiXzSaqy8Lcl8qCIiwSKuTozKYa7qaaZSoyn65qKs7mF1FaGjIZHlBwDXgUAPhGB1CBj4BNEFatEVwlZlYVZVY1Z1YNZNYtZtZ+auGNH2bkUnFaSBiE
A9AcCFGSCLp5zJappVD6DRxjCYBGCTHpiiXdb5K9aKpIzKkW5VIrHqk0mamSmL75wr7jppFllFYQC0X0WMXMXdk6Ima3EOTfT3a3TfSuQWSiLnLbL3ArKzL3Zzk/HBWghE70EmT/C3TrwBX/qAlg4FmQ67nQ5glo7w7vJQnfIIawllTnmY61GQAgrPkU5okPlLnE77mk4kEvmU5vloolBEn070G0aMF/ls6MaAXQXJh0nkIPiMlQVrEsk8LDjnYD
jsKiE8roWvSYVlgMQiIBXima6WVEV646akX/kKkGVOiLGqpqnsH1LaoLbhrlCBhNAQQGmplUKsymkQBXU3UWmx6Zm8C2kSz2lhpyzHjOkSA56xrun57/XoDF6+klBl7Zq5qVnVliS1n1mNnNmtkUDtmdlxkd74Ch7oDPW3XD7tpj4JykBJxT4z5blkQL4zbWXW62VHHdISUSDXAQRsB/Cdj0AjArhwAKzCTizygwCaDRy3gPg8BNCEBuUDxDy7mP
4OTUQv5DiPHjmf7f7bA/DhXfGbK/ElC7KgEv48DvAHAblAYga+jQEw6QaFXwEI79ksjQkFXZX/LIYlVobXmNSNVVXtSPl1UVVkEQD4nkYflUZfmkl4oMbLQc4sa260mcF7Q9AjWnSR3jVi5nA0R61fCzVoBoWcI8n8oK5lhsq1hRRA7SKqYEWSpKLEXbXqHpEUU7ZUXsXlBEj6BGAQSDBCAVCTBiXV0M3oB+EBFBEhFhGaARFRExFxEJFaU5LuGd
1BI+EVxPCAQ1BSikhPD6BwCTjXDCRITtAQSkDtCSCASARwAT0BbTFLazG+gm79ZGVLEmVYwr4an24HFWVzZjpr503eHd0QCN3N2t3t3i0jIeW+j7awjXDaAnbXAAheS1jyGLybAzKvruTzkvZ/E1XDivDfYfaPHHZ62vHA5AZpWUoZUwF1WHlW15XIEvwW1oEXmlXShImu2VV4GE41WYnXze13m+2kYEk0HEkdVM50bdUsHh0nUgW85CWU6QXx0w
VGii5kRfBQg0Q0Tp3AaiGLUJT0RAhmTnBcljj4ValaYV1qGh0lCX1Knm433Xajb9VMSP3nW/Vd4QBNCNyoCJDxDDU2gPUONOMQQuNJDuO1RWnvWiwBNfUho/VO5/VekA2ulA3oUekF5RNg0+nW0QBQ0V65pM0s1s0c1c08180C1C0i1i2VoJlY2PXeO+NuP40Znj7Zl332hk1g75kblFk2Vv3Lab4SBGA8B7FsCVnRwNYKwHCtBdD6DOBCRShIT+
NO536DxnoQ2QD7ZDk1AhTnYUTPGTnK2iKznq2AFRUQDa3Lnz7nAEOblg7G13JENm1aikO5Unkwn23UNO2YGgoMM+34Ge3u31U3k4nAK+h+1QUB20HYqdVkn4ph1UkR3SOkK85bb/NHS8EJ2yP/CLIRSozKOZ2QAoVqOoAURAiLKVhrWl2O466qFylhjiVaLXF12f1dCECaBIQKw8AVAHCsWUvlkQBZE5F5Go2FHFGlHlGVHVGlVUtTFT0hbssOXM
DRwUCBibq4DEBGAUAIDXBdDCRxEcApjOBEiUKFbZYpFNHn0mPzFX3mNHWmUiN25nWr4kuQC5zU2v0KKlkrYVx0sMtMssv/06nS3OBhUWRHAzLy3HKEuwNP6uRq2IORWLl7x7CxAG0/YA6sLnCUTnC4N2v4Pp6m1ZUvKW13NI75UoFUPFVAovPsN/NMPoksNPkNWMPkFcP+08PtXfklC/ngv4LCNAUDXR3kKARx2WsyOXTDgG2CEzLKNq5Z0YVSEM
7fZIXrNEv6ObWQwkVtuFImtmPlIWPHWds2PWuEURMOPtCdjyjyiVPTN4meNJmHvHunuWlZDWmBohNQAp4Om+5OmJOpMxNaxMDxOg1GzJOl7+nQ0VzdO9P9ODPDOjPjO4CTNnuQDt6lPY0QBXsnuuOweUrpkdpE0k05mNNz6U05ytM03tPHFKRdN1Ckj4C7rwDKCLrRzRyBikBQDxAt1CBAheu9nnqeXOCTImL/Y1Af4vFTmPCpsIPvoa37OHNkRh
Xfb/qG0QHbkgkPLZt/JHmI5gy22FuPPFsYGIku3gocMfNVte01s+0AvvmNtB2gsh3ykQt9VrEwvpi4B9vbv8akQnPkSLIMSwooU8KqNTtsJ4vaP3RbR6MbXl1bVGNkVd2ivuUiscuDCtDCTRzRIchsvRccvtGdHdG9HdwDFDEjFjETHCXJE6X5aStOb1aEDizXAwC4BsBdDKCVmNzEAwC9BNAjAVouElen2eFGuruKmGVmuqkWsucTa7tl2FlL57
FtNOt2UuvlAJdJcpfKBes3FAOPCJDMJHAfa1jfb/DaPK0RQRtid7PRt7K0RJAYODBWQIUJBikxTyfg6Kd7lfO3OIH5sUOo45tPMlu6evP6flv3ke1GdfNlvIqUHme06B0gv8NdUrvSgdvWMkKDWUq+YSM8ajXMnIuVjfY0RgH8mqzjtYvZ04saNWTORS7q4l0LvhdLuV3GP9f7XCLX3mv1NmWR0WVP32NJm3gVBIQ3seOuqPW8/8+oe3v+rj7BPL
R2lhOOnc+/uA1fuMcg3vvg0pNpOBnlCMUUdUdwA0d0cMdMcsdsclO+xlMOMi8C+gYYeE1drE3anMS5mPfNPP3L5Eezfv32UVeDBwCSDdBVD4AcBGBCA1CSD4BVAcaEB/CECtDgXbZGYccLMQD7YDhxApvK4bPDjK17DHMRXidneQghRgMzLrkpUBwXPpXnyZUkMW2qcpNwanlFuO2/dXn/dEYGfMPgLVs/Nu14n1uAsWcw8/kCPw+sHUmR0Od7TY
DOdI94GyPaN48wjIXZ2Qj7PYv+eLLejaNK7zthekuGPkvbgz16u12AP10SCASaDyhdD0cKysTT0f3n/oDz2L3L2r3r2b3b27372H3H2dbitld0uDlIwE8AVjMAFYOREYKtBXBsAHwCsVoMsAD5jBnAf/A1g/zLKkc1YSELoLeBXAKw/g14QCH+C6BCAegbADoMoFJA1BD0XXMVqkU96P9P6kgJoHAAOBVdzIUoTQA+GwCboeAD4LgdHDgDtBraMX
SevQOaKOYK4fwKUGM30C3ghAMyBAO0GYDKAWgNQZoMoEWCoDSudlRgZgIgBiRhIQgQMPQFvBjB2gzgJoJIHFgPgII0cGoGMC+yAQng2gnrhINnrlBbwFAZgPKAfBdxSQm6JoESE3StBWgFAP4K0CECOApQrggAboIwEcsOMi6DgLeGkojAng7QBWNgBGCARnA+AIwDUEAhN1PYtA7Sm4L67G412g3Ddqz17SrFzKtjG1tsXtYv0DizrTpugEv7X9
b+rEI9IeDW4DkDIQ5SRAG2chso0YOjSAEvHgZfFI2+fYAjGxXIVgQogOURKrlOYZtnu1fV7rXzIb3M7a33bTpeXwT0MAe6oTvjCm75vMOGZnFqnB0/JD8W2I/Bngj0hb9tJ+5CQHpw0FxMkkWg7b6N9BMRPAi6DAFfnyXmqSFc6B1PHgDnOSTDSgoXLnrT1lIG5dqF9KoQdRZ7Dc2e/bTnnY33ZJl5QwkJoOwhZaAAOC0ADD+h7hNIOMiRJI5lgc
EpHUi3qkvT6k+2+py8CRCvT9nngTSq9/25sQDukwrhVAfefvLoAHyD4h8w+EfKPjHzj7op4yZvRDnSNJGMiqR1TTDnb2w71Mne5NF3lTVaElk5uHQhgEIHiDEBrgzAEYOLCQhjBSQ1orYF0B3pbARAfwdjnMwfyeUgQL+RZAlVuisoUY12JeKOVz67MFyCwmFJ8D/SRQTmcncmhX0IZV9iGOw+2nX3IaN8tOzfHTq3zB4k4CCtVUHiZxuH99Ie6K
B4TRlh5gsXhY/KFl21Aq4AUm1CX4dI0Tq8A5kwI9kiCJ84Z0/OUI4DACG25mR4RKmRQkiP34RdD+krSimf0/qihiA5wfAO0VLDoDJBsCGVnKwVZKsVWarDVlqx1axDxBbFT+tgGwG4D8BhA4gaQPIHtBKB1Aw8Yaz0p7UFiWI5YjiNG5WtNi+Iybg6zaEmi5xCrRccuNW40tk+3AUcvsDWZohU208b4CKlDZeVf0swk7hGJQYxttGl3EKNdyiiRQ
7u8Is5gHAIZZsa+aYvYR90zGHDsxxwsqqcPb5fDDOXfYzj31rbfDmq1BKHsC0rHD84eNYxHvZxR7QcZ+Y1WRn9kBD/AQ2EI3kiowJ44tk208UMUTwRHU89+0pScaiJ6roiBumIobm+LqHs9pGeIpodqWdzoBkOgAQitAA6uoKBAAM8qABKTRjz3UheB7I9vKEsk2T7J4ve9gniDQcjX28vd9or15Geks8EgNXgB0thAdyg9Ac0ZaOtG2j7Rjo50a
QFdGkB3RpvatOb0vYuS3JdkhySbRt7vU6mdQvUU03w4/ijRRk9oZ/QqBbBSAwkIonAFvCDAKACrAHE0EwAjBo4dQcWKyz6HzBPRUtb0VWCzgAhTsKuGZHrUO4MRjuT2VCVrRiqnBhycYsvpAS2EpiK2NzXYXm3U4FtKGWYjHC3xOF6c6J5wytoxKLHMTTOpYu4RADaqWcqx1nNEe2zeEfio6DYlbhBQx5SNzoAmW6OjD2AAkCe3AbsSTynYowhMA
I9GLv3HGqS6ekXClkAJnFxcHKkgfoGMHOBQBAIrLVcR4IkCVdqutXero1wgjNdWuPQdrp1xP7dc4hDAhISjJYFsDxYHArgTwL4ECChBIgwzHQLS7H8n+EATdOcHFikhrwwkTQEBDGBbBAIMAJOD0CQi3hbwdQPUMV25l5JigRuUxtUJVK6SRs99BoeN1tY7EpuxZSqf+P0GozJA6MzGb1Pj79DQJY8IcC8CODxsdgw4N4KcEO4A5ROs05BvNNQYu
RVmj2UabsFhQETgSoGK5spwhJqcdcGnPaZRIOk5ijpbfFEvRIuF4YmJ1wr4bcPYnljoeXEp4TxJs7PS7ONJD4ZSiVno9EWrY5FlWBOADhvQIMvlHNQnYLV/Oow1hCIRC7KSYZEAXXHDMP7qyMRzPHSbfT0m4jGhe7fcI9UACncoACpNQAIr+IvGkUmTnmLy+enkoJmyOfbhMp5OkbkRrFiYTsf2/I1NEnw16V5ygNUuqQ1KaktTiAbUjqV1J6kY0
EOM8heUvLTIj4tRWZe3qTTzJlS7WhHR1p0lNkct4gFQBLJflbpNAVwpIRdIMB6DKAeg14P4ESCECaU+pEteZikzHhnJYg8yGoDOyOBfAgxytBCGGLmGndIx3AdhPPiOCaN4xYOU+OHOTHXMDyW097jtM+5nkqJtDcqsWNTlnTLhGcs4a+Qh43S7pjwyAK214kvTZ+34AScU0rktifppEc7LWGojfRG5MuXFn2MFL8cBwcEy5F3LHHfjYZKInakfz
0FczYumSJzPKAVi3gDgokFcBsBxnUVBQUlGSnJQUrCQlKxAFSmpQ0oPj3FfMkAWAIgHnAoB+gGAXAIQHKAkBKA5WWUJpmvgKhGs7STUOxFjzXphkyeYAqNkzcQFnvebhIAcVOKXFGwTBQA1oa4KaIf6ZNmZBZSjkPsB3BCY5D1ozSkGmtaKjVV2D7BCFCVJCijGchpsEQj3a7mtLYXPIVOZErhRRL+Q/dE5NE46SnNOnVVzpG0gjJnPB7cMOJvDZ
ttIueFFyyqfE0uQJJGBCSseJSaZNRG9CU8W54maSZJJzqCknIF2MRKtRMUSke5fcixfDwyXDysl2s9YrrI54TyJuMwR6s9WQAAAdDgPAMDDyhroNEBQPKFJA1TLg8QNFcJCuo1gSh/zC9pdWupoBEVyKhftcDRUYrPgxwHFXiu9AbzWRPk2Xn5K5EBSeRwNPkSFKSanz1eQozXhFggVdAoFQgGBXAoQVIKUFaCjBSgiVEZTEOMK1AGSpRWUr0VmK
2lUSPpUEq7kBU2pr/Jw7/zTmQCv8SUtNEcBrwRIB8CuFaBQBWsQzFcPEFJCmxNAPQeUMyw9GS1OO63DOtWDAYjkr0xCiacGMeDTSHslCuab0vASHLxlCYncqwsjkSB0x+wzTvHPhJ8LaJay/MZ8y2XfMdlYivZbnM4kkkrOTBDScXLYKvSy5uAXocosx5/DSIetT4IQsDUYs9F2IT4JcAoh60zg0Msxb3LJbqTpxp/ZGU5hD5MtF0DcS5aEs/oCy
hZIssWUQMlnSztQcshWRXKpkqyJWQApzJ3BwBGAOAbABWMoOvCBgngYwP4LgBXBVBRV0/ZJWIMfFqz9KL4keZYzBUGSIVBsloW72AWHEOmn9MdTwAnWkhLl1S71p5TESJATsawgMSQsmntLjgLwZCd7J6UHMYq+PQDI9yIkRySJObJNeRIeapqaGztZObeUEUbLhFF0vNU1XEU5zWqFY4tQ9NLVCM5F/E7tpShYqfSq5qipGLMi+DCZl+Tc8EY8o
FLYgTgI4GEEo2+XrVflA6yxYPK0lAqtZo8nWfUPBX6ztiJkiAPPMAA7foABS0wAN2egADeVAA0cqAALNWXnlAdNBmkzeZpZE2lmVqeVlbvMzxJpomB8pXsfO5V/teV4UrNMKPKDmrLV1q21YuntWOrnVrq91elMTKWa9NRmszZqNt4/ydRxU3DpCAAWGzfxxo01Z/T+BIR6A0cHoJ2AOBEgagzAZrE8GnyLoau9ACgK0A9XYK9s00BCH+g3iAhA1
KMKaRQpQk+zI1eyXCfdj8obDHuiY4iamNw1zKY5u0r7osqOHprVlpG9ZcD02VA9c1oi6jQWro15yGN3E6sScteElyJ+Ak/QFcvrXAzqwFwKKA8uJ6Cbnlwm15e2r+wnM52Um4ltsT+XLs9MvMmZtS1nH6CIIQzJ4MxQQArdp1+g3dRYAPVHrmAJ6s9ReqvU3qQlulR9c+NNbArlNoK1Te+vU3akv103d3sUr/X/bAdwOj6TbNsXS09gQ4e7LsBMT
VhhCF2D2Yhrz5UK0J/W1WkJhWFnI1hUUYbeTSw3xqcNsy7aVNu4VN8E51Euhgtt+ZLbtQ2a1bXmI20Nt9lTbYOkxoAoVr5Fb03nFwE40qL6EAhSRBWBHLwiexd2m7a3P7FBUzkJ2WFKOJ+V9qPt9PfbYCrNzo7X1WOrVF+KMkXUJA0cLoMwgUCAAmNONQWa/dAewYMHtD12aH20vUJo5oHxvsvNgUzlcFNc08qS8goiKf5okB5aCtRWkrWVoq1Va
atdWl+cqMer+7A9IexLYVP1W6i0tA6FpoUoJ2/qSOHLDgDwHJmN56A1ZbACuB6C3gkIzFJ4EhA7jJBQNifHBeBLMivAqwZkSRIGLg1vFxkqtMNT1pQ2ScLsL+EvgbRWkKcWFoJIXVHPr6xyZtWkObcRsV1fMCxrDeFAIt2XK7C1BytXYIw13j9oWAktgKdurklI3grCCsF9m85gjUA2iyEYKQDZGKs+r2mnhOP7mDrEZw6uxRXHIhiR4gRIcWAuJ
5nWKHK0g2QfIMUHKDVBBQjQVoLvUn1Ulx4/QVACMDRxmAgYIwNgA4BiRzgmgMSEYBCj4AngD4A4EhBXBI7AB32/QfEDgDixo4HGKUAcGK1EgNsQgP4BxkwDtBo4gEZQN/vIP/9xB6SoeW7qU0e79JXu2AwUqy0myct+g1A+gcwPnAQJs4sCWgGBEHAp4CmNEAbQCq07laMwlnRGtQ01U3g8+N4CsI+xaKRwuwffU90P1Kdj9iaybTbWm08KJd82k
jTLqzUg8c11+vvlTif1bai1fDXbY9LLWnKWN5ytjbgCPp6661v+htfx2Ta0RpkY7NtX2HIi8c0QeFbuY7tk0ArtDh1bJSpv0M7tvd+SnUhIGEjCQxIqAAHdHAZKC9EOwx0Y+McmOPsvJH1BzS+0T3+Tk9HKuJiry81hSs9fmgVegE73d7N0veqAP3sH3D6uDY+hWBPtlWY1pjIxsYwrAmO169VKWlTSVLw5GqW9P6qqcIZXAdlAw6gzIPKGwB1Bz
gRgc4PQC6AcZWQNan7T2QGlerBhuLZNlPGN3nJxppC9peRG63IaJOMVSRKuQYWhHRt2G8bcLs4Wi6FlF+3hVfof3JGVtcKYgpdJLEZGB+Ku+6bkfV29VNdrGhsXUB/3ca0A7CE5iszESm6QDmLUEZO37GS5dgEuXtT7sXb/KvtOBpGcgfKC5cpQdQJ4CuB4DYG6ZTmGg3QYYNMGWDbBjg38C4M8G+DAh+IWuIvCkh6AishWJIH0BsApQ1wIQFKHO
CtAOM5wAwl0EB6iCKDmhp8ZpKZ46HjKeh8eTjtd746fjoChylqZ1N6nrDtSiavsCciBUIGJzc7JcGz4jkvZ3S/Ez4YUxJB4qCFQKiKUUmhyEombMkzmre7Hl8NBw2bbSdLb0m6qt+q4etvhZsmyxWRl/SWrf08mP99Y3nIfLrY/DyjQpsiAxH46nYLsEp27YpPX79j6CpwN4DWBHGIi2jB/dSfJsjNdGQVVjB+nGe57lAsiCQHgIADZTQAIvKtmx
yYh2vPsIHzT5uPRL3s2Ptt5nI5zfvJjQeatj6e7zZnsNDnzc08Qf43OiBOyVQT4JyE9CdhPl75Vlet1W+cfMvGsODvPtM7wy147jZtNInRy2jjXgegvA2jnUAoBGBOwTQbADUGcDMAmguAEckIAa1ejvVKJhwzcANoYml9wasNl0qjbUKDqcbNcnvoe6xqplCanKpSZiNi79paaukyybI3LaKNqRrs/2bYk05n9qukc6PzOVHbijOQMo99IN2kQZ
ywI1NmnSBm9iZJbcm4PMlTbwSqepipU8iM+1RchDNiwUDS30G1cEAYwIZlKE0pg6wFoh8Q5IekOyH5Dih5Q6obtO0yHTxWE9U0HaBCAOMEEeIFVi6BbAFYFQXnhUFaCdhYOIZjQw+rABHnn17urdlrryWQrMtFUoi+3ocoBWgrBwEK+maa0Z1U+iFcU6mwLojkyFOzcNb1u8MxsLgJkGcn9JWYKZ6F+EzYeEZe5NmOFLZ+ZQRvbPxHlLVGm/fLqZ
PbK+z6R7S0C2HOMbRztnXk0UYbG0Nmxs58y5CHeCwjrLYBqSWudBn9jk2/+67sCMVMDGnd8M/I5UIU1RnN2I3Oqx+o01oWUYd5zC1MahvzJ3zjK785+d/NOaoVe89le5qCkJNtjAo8C/yovl+6yLFFrqdRdov0XGLzF1iyhZi1+75Q0NxG5/IJp163jmOj4+lq+PGHmr9NfQULOuBwB4g6lGANgClDchnA9ADMAcGwCNdN07FwaZxfoKQb/VqbDr
cvpCoGQcTQl+YWzsL5iXiTkl85nGqP3kmT9GYjazSa2udmVLsunsyIpOn5rMj9w7bTkYLl7anpBRw7Z/uKNsXTL/bNseRE3hLnjFLy5uRbvAOPbEK1EO5b9Yav/WpxiB37SOorg9BF6WwMSPgEDDtADTyV32k6ZdNumPTXpn036YDNCAgziVtJeGeNbA2TzGOs83rP6MNWCLRStvTzY5Yp2pQadjO1ndA0DDFmzWlyJvErCjl3lBZ7E0WaQ0lmC+
X0Bw7TuciRRqzsY0IwLuNsrXSJIu+S9SbhJEarbO1nNbbco2HXpzx1wfvnKOWFz3bB2y60ZYbH0BBT91gKNhKxVS97tod6U5bogP0EaI7CEEfbuk37m1Jcmp9Wjt0O1Xzzjdg2ZptfM8BAAaJqAALhPdxh70A0D+B4g5j3eSfzvk1Y2yvWNY3U9ONkCzsfxvZ79jEAPmwLaFsi2xbEtpoFLZls03MpV59C7A4Qdu4sL2onCw00NXN6ubxHNuw5Tg
DC3CARIQMGcByLiwiQ9AB8KIE3SpZGgctpE/3YwRK3oNqtgS15T/yjXN9MVNBvQtL4G3y+RtiIybaiMb3e5Z+uI0pd3tH39rculIwrs0tHWaNOloc3pbOsGXCjN93nFQF9uvS2xNYd4BAwUzAHVz9R33EOCOAjlPgMdg2XHYQPeX6iFO3GegE0DxA6gJW28O0BXFbqEnTmYSKlfSuZXsrUJvKwVYqBFWSrFdrQzXdfF1231BhlSY1e/UmriLDlVJ
+k6JCZOvh6pynVUZMhTVJEKLZhENfaUrxJ7wlnW19GMj0Rjk3oIdvNeXsNnBdJj2S2tapPm3t7zzP7mkdW0H2NL1th2+yd0ucnXbeR5jZ7YnPpgqltasy65xoVnIADbSkO0JrDsibC+ZkeU7WF/t7n3LcBlUy7s6O1OYzuSiG8ZPhssO0Hz58F6g7YfoOljmDlldg//OY3AL2N39kQ79IkPCb6AQR+6BEdiPBZkj6RzwLkcVAGHL5+m/MhhfsPkt
nD9m03vjOEW+HjAhyvEE3SYAiQ2AbRs4sAiBho4+AKADwFIDXBNAkgB8BxvJ1YKOLyJlGMZEUxAHMTatqYcDKSAfAvs/wL7H9CihjLJON5+7MbpJNGPlrq25s9HM3sbOiqHZ7Z4492d7WsSNr1ic45OtuOuT518teOY4INiHgvjrXf7ciiecAnb10J/ZY3NzJlh1YUdjAcadxPLFQ6xOxqYkAUBxYgYd09cCq7Z3knBgowSYLMEWCrBNguwQ4KcE
uD1DaA5HZVeAfrtQHYN8B4YaacJmWnLVpzEm5TdsA03XZXu3bPAnAi4qlYX4NuYjff5YQJkNV7Ts1dWRTs09siPUv7AfZ5k13BKtdpjWpUlnq9k16tbNfmPYj4uqx9a4Ofdm7XbDB19nJcdO3sj0amRfttrHvCBJMq/s5Iz9vIsoo30Z4IDOefm7374d/UHMi+DaMG5MT97e0ZeGu7a7wL8GxeYJGeDbw8oBQCuEYBZAmY9MQAF+KSDiAPLJg9wf
qoiHlD3C5ftlUZeCe9PPLAAtulNjXKwh3jcxd7HsXEANlxy65eiJhIvL/l4K+FeivxX5L4XtB9g/weoA2HmlxPnr2pbuHjLlu78Y5abpjB2AB8LgCPUwBWghAJoDwClBPAmgbADjA+DGBo94T/Uz1Un3tk7A/06J+ZPxe/xfFVXj1jV2cgndSndXiYus6gGYUm1Gz679e3Ja3cKXCNWz3MQ64YnqWHH+7rS069Ps7bTn3Ji6x6+R5sbNADKn18JJ
KQTvaIpwaA++6Dcf321OfCiPxxmpRuZNB52Nwndtl/aOWgYcWG9BqAwB2gU6nJzgd8LeDfB/gwIcENCHhDIh0Qqp1XcZ7VXq3748DxA+aHGrstrTpzKV/K+VeQNkrmpd1dQDlI/0POvt3enuVmezkFn9V2/i1e2eMSNYP9JRBmTDggQ10cyKEcmVLXtha9ibWY4b4WuHaltvd3vdtf2PbHOzx15trPenXXXHji5564pQxfKZ6Rh9346ffP50YRuu
oyG8FJfERTuEgD9qRjcdGanL6sBw3breab5QPQVoAoEnCaA/AjxiYwoEADlco6nhWQvCVTkwkej8x8IBsfygXH8JAJ+OoSf+CQJkyoReEek9IFlPWR7T1F5KPkNAm7mkk+BhpPsn9oPJ8U/KfVP6nzT9p9apyrab6ANHxj6x84+5j9Pxn5Dl1XYW/5eFzm01eZde8K4mgKuEhGwA9ABmdQUgIINGDQnMApICJKSAUf6fwJlwIz7xZM+wb1HIDVb2
O+s+nBNvPh+z0bSNdnfXPF39z1d7bMW3d3PnwL/vcPf37Y/x94LxyakV+hjll9695WpR4xf9TcX65WovkyYNontlj9+ucFIowzgd3Yv65Yd2/PzFnlhGQk56eZvbfY+5Vp2C6AZuPF6AJISkLSEZCshOQvIQUKKEFCOvKOiM91+jNI+1N/X3HYN5MPDeq8pINvwgA79dXpaQ4RICD8cuKvPfBtEd5Z/W82ep3Lt9NphtXfGPzvFJtZ+a8j+bPDpK
yxI73we+Mn7Xifl747dun0az/afi+4Dcz8tdMuRi8bje9y+lH3G5RCgWUbnTB8XlHFnIhjgJKm+dWjOv37V8veH2PMgXGf2x05/X3XQBAANqdAAQANAAcGNAALk9AAewdUPIgLIDKA3Dy3ksHIj0iZcHVF3wd0XXn0gAILQ32N9Tfc30t84Aa3wUM7ffQAd9otRhwkBqAigIE8ipd40b0KaXX2achvJtwrg/wACGAhQIcCCggQdVxAQhkIL1gNYf
WN4ASAb0GeEVpTsKU1uwPDJTDER57UaSnchMMBlWZHAxwIohQjAZX+lZXcpCXMhMfymktIjVZ03cI/FNU2to/JOWe8/PdOUPt7bJXSOdXHE53Ps3bAAMMsvbUChi8S3G524BNERJwSg8QLwgHZGEC7QqQXtd9xesHtZrWBFA2JZFy8AHeAyAdUdKtwgZmEY4Evh67Wfzrc4ANgBTACvaYCsVigVKF6C9wApDAAegsAH+BWtWsCcCA5ERD0RnANwO
YQ0Qfw0cCF3GZEGABgj8GGD7AiYImCXAgzDcCTgc5Er9TId4Ash2EAYIqENQMUCgAxgbaBTAVuNAEyC0gVRFzR7YBoGaA2gToF6B+gIYFGAJgU8CNg2AHaHKAqQTQDUBfgmUEwASwW8A6CJQLy2mB58b0HhCnDM4BOwonPRH2BruH4FODBDSAEyBiAK4J5AbgjIL3AMAEilzQq4cIALQG4JuBbg24DuC7ge4X4PdMAQiQCBCQQj8DoZwQ4gEhDOg
1U2KAZgmMQjcLgU5EWRU2BIB7UdgqeG9AtgTEN0Er4C4IVhcsI+AVZ+2HEPlCsIRUIrh9Aw0CCAlwZVkadm7VvXhB3TRgFFpOQqEOyAdQdQAsVG3fhycwXMSJGiRYkeJESRsAZJDgBUkdJD0DGiH1g+BEgWCSeIJyEEQsDmdHYAUwvsDWjsCHDTYKcCKkVwNa0SFH4G+B4Q6BmuhfAlZ1zZw/Cxx3cd7O7xsdwgwgkiDM1aIMHM3vF1zC83XD22v
tkgn7ysgZ+TIP8weAHILnMqdQhX45o1M3RKCcWYEVmRWESsGQC3LP6yA8AXBH3KQg5GsGwCGnHuXaDOgqum6Cdg1ENWC9wYYNGD4Qm6AmCKwSYV5C3A+MKhAkw76GugFwncHWDIwqMIDlaIaYLcCLsL6wuwjIAHEIUzkaUIrdWoC4LxDHAZYEJC6iB4OqhSQ/NDrhKQ4tBpCy0ekLZDGQw8BZCRWdkIhCzQnkJGCxgyUKFCr0BIFRCJQjEJ3BwwR
sK1CeQF8IJC7gokM/CsgXNGrwF0ZdFXR10LdB3Q90VvGAj/g0CNIBgQ8CLBDII7kJhDNwmMXLATkGciqMaIc7CQj0QqUNQj0IgnDlCFQkIDrEMI4gFVCgsdUJSUfHLUPwAdQut31Cf1Q0LYBjQkgC5DNwC0MkArQxQJtCK4KwhsIagOLASwksFLDSwMsT0L8QfWU7BeAzgOZAux0YCyArBFJd4hHBizH4incPsP9HmR6IFOjE0KeUIyphkIpMOCi
jvU73WlQ/G/wCDMwxS2zCY/e71sc9nAL3iiT3Z1ziC//BIPOdKwy5wkAYvKwx9c6w4ZAbCsQvINX4F9V2UjdigsJ3bETgPt2XMYfAxkAcMAqf1HDYUFoJwC2gs0JnDigYYL6CwAGoAPDZwr8BEQvI2Wl8ikQqsGmDAo9EJCikw84AGjuogzE8j+OUaKCpxoiHF5DAoh2SXNPA1hGrAHwo3HODGOLCLfCcIj8JJCq8OdCIi68UiMbxyIlvBoE6iEC
MBDaI1kKJCGI00KYjG/aYH2AREYcA+AgQb6BuAIGCsHnD+I4qJxDjo24NQB7g86K3wd8PfAPwj8E/FSloyK/AVFfQJ6OZCXo+iMIAOQ9SIDhhgvkP45DgnaOvDTIHiMlCHw3IMOjFYYSKVDXpFULpiNQr0Nkj5IvUIX8BjI0IQATQ/GOYBNI7SMX8lA8oE4pysS1R4paserEaxmsVrAsj3CKyOmknIcyANoBOR9FGce3cZ21tfZPeECoadZw1CNl
wqyCOA9gIGNFDRMMKOmVTXU/W3cYo7z1CDfPNOXzD9nZKOulaNEsLSjL3DPySDsolJ0WRawokPrCBIufkug9aQhXOQ/REJx0UOw/zmTYqwIGPQ1dGFAIHD0A4D0BdzcUcP2Y2oicL7Upw+JwWivwXqP6jUItYIMxruIKFOQRwGaKkRigf4HmihggzG30y4m8xmj+OPRBrii4xcIMwEIH6PLjm4quJGC/gWuPWCVvPcLnsJgjcP7jB4gzCBBjIH4B
DDm4zFmriB49uMPCp4sRF1jFkVuOvR7lI2Ksgxo6iH2jIUZ8OuCTo6GNwjYYiQEIja8EiIbwm8CiIeiMY6iOei6I0ENxjGI6EK+jegkyCMgfgO5UBEjY4bGriqY+EAhjj4qGJhjtqGGirIayOsgbImyFslwA2yDsg7ciQzGPQAwIl+LxioI5iLAAiYi4H1p3OYERsheddaL6jkIviPyRA4/ECEi1QkSOVCeQCSPAhaE+9WAS5IoLAUiOYhqy5ieY
zqP5iSKa0JZdfCfwkCJgiUInCJIiaIliJ4iRIlA1NQzi0phPI+WnfxM+Q7lcj19PE1P8W4gxx/Qt4qyFJjPAkETG1r/U22TU45YINii7Yj/zzDCxJ2JscUokL1/8PYxIM8cqw8oBi9rgP2Jrpj0IqJlC2xLyHBlk2COKeUo4/sVGUxTBKnqjlTBv0BsQPIylHD4RTOL6MOo6cJ5Ceo0GM6864r8C+w9EBCCXj0kpcM0SvwHJNa0RyWWlYR9Eg+Kf
Cjo0BPfDfQPCKgBc0YMnhiwyRGMjIUYi/DRiGQx+Kxjn4tkPej8Y6CLRCyk0pLJjto1uKASxIyGJqSSgOpIyZmaVmnZpOabml5p+aQWmFpRaTpKZC0E7GIwS34gmIMxcE4dlHJEKS4GRDgufOLITxkwSMY4GEqSIZj6EpmOkjJQbULYT2Y74x7kuEtSJ4S1ALSL4SdIgRMyJsiXInyI+WEojKIKiKohqJZYmSLkTWURw1sif3AMMO40GNRKnsRLX
gGchDkQvwBwJg472MhL/Y11sdLYs23v9LXW7zijcwh2OsSko2xJdjT3b/2dsL3dPycSvvKLxSCVmDxJ09sg4qLbEw4+wybVlGYJMFJaIZWJrAnnBOP7DY7QcMvsYktOMaCTgccMSTGnHOK6C84ncALjJ4r8BuAvIr4GS9ow5yGmCooKeA1SdwSKBfxLgG4F1THA85ANS8U41OmBYQRIAQgLU6aycCSE5wENSVg5eMGidwO7Ar8nIbFKcCbU1/Fld
TgM4CqN7wsGIn8mGI+PxCT48BMeCgyEMgRiIyZGLPx2k2MiojNk26W2Tek1+I+j34nqKCgK4sRG2jhkheL6jLk6ZMwjqk06NqTz49ABA4xIPpjsFwOEZjGYJmKZg2SaInpLei80/pOwTcE8sHXIh2S7Fjjy0tEMpjI0hgVlDrkh5LuTxIudNDMnk1hN1Ce5RSPeSVI7mM+Tpw3hO2p+Eg33KBMuLoh6IwgXLkGJhiUYnGJvXSb3KsfWdhGvRFE/0
MihAwx4BRhwqFNm9l08Oz1iAazBZBCjazIDF9CJ3QTEkR2tMe2c9lnIxNMcMw62K89H/KXWf8WJKxLv1mTZ2IHMJFH/0ZT//TKMi9RGVxJqAFYDlJDNvE6dLbETmCJzKSVzSOKqifRERDDSIkjy2d1pU1OJHC5U9PASTTqXAMNBlUrqIyS1UtJKjTVU2EJ0Tm4+EMncDMTbhChEwyuJIzHwleK/A3gFyHRgTwkxD0RJMkxFEz5kO1OKA9aF4BwZR
MgBLAB1M6TJCitMr1KEydMk5inhYxP9OCiieYoCAzTgEDIQg1heIAqSrky4JrTT4s6IgTE0ppPDIkYqMnTT0YkoFQTs0ntLqI+krBI/iRgpCLKT8zCyESyks3JLVlKEjAGrTY0sBLPjfMrXnI5KOUgGo5aOejkY5mOVuhN4UErpK2SIs3+EwTPowmIGUo7CsErALIaBjEkrICmJQiKE7lKiBZ0mhPpitdRmL6zmYyyNZiXktdI4SDZD5PzTzQ75I
Fjubf5PKAX+JehXo16FVk/4d6PegPpSjG9NkTkTbYE9kFMZyAz4JyFL3VsHIVhHCorAk7A1prsSTjORYw+5XKRVwxwKph/gVMKgz/Aq2M88zE22Kf8wgylJQyDrKIKC9XvelPPdX9T7yyjvvfDJMJ8o/2MKi0s/22HAvgWEFHIqMoJKqjyIaeMW8WjCVNicpU6JJYzqIUcKlMOMsbi4zfQHjJSS5wnYO0z+4sYNszgot1NmDp4cyGCiPOERDpz7s
8UPhCajI5GcCqwQEDmip0g6J6zPMzLKmTsQ+tIgBMmeZJyYlk/JlWSimLtKfjXoyLL7TospcNgifgQZxHICWD7A6zyE1LPBiMs18KyyfMhNPKBRRX3n95A+YPlD5w+SPmj5Y+FXO6S1cmrN2ToI3BKTDg5RClmQlzEhInTOs43J8Sxcm5KYSBs+5KGzHklhLZjxst5L7Ups3mN3TVEfdNKVLQDcXlZFWZVlVZ1WRBH3FdWMq12ylHRz3nwzga7j4
sPfLZmp1DA77HIVzkVZjsD7A04FHIDXLRK9ApkYEWbUREFZglwpTQxIijjE1syCCo/cxL+z7YoRQiCbE4HKcdQcyRTPt0os53f1RI1lOrCRA9INrTiMxHPn4HZGsCKDX7CTCqj2EI2NvDcc2vyTjGolOOHDicuVNJz6nRVMnDOo6nPziBMuTO9TYQoswYVlpfZLcCzA5L2sDmEDsTczzMvjOmAbIKeBHI+NEhL2AgoSiGJiA7cSVmQngdzOjSqki
XM3ypcnLK6YemJtLA5QtCDnbToOTtMzTu093JOFasgtPFCnA1hG30pqYI0NzK07ENNzsI7zLrSsC9AGikLRK0RtE7RB0Q64kpFKTSkKsrNPQTc0igr2SvwImPeBOxMTROYRwQTGr81UpIHrlnszYM9Sus0POoTJIiPLWJBs7Qv6zb00bNXS+1ddMTzN07hJ3TZs35MFjdIq3M7AquGrjq4GuJrgggWuNrg64oU6bwu5voAAtVsoZeDW+xV4BIA0Y
XDIcEIUIw2IAxhiE/9P1if057W+BNGKy0Z1zYmS3TDb/Dzy3tSUkIPHzLEgHN7MZ8pPznzMMiHNkUWUvDJyiagerThzPEkWG3zg4hICwlczAVMxymsuZC7EGMv5yiSqrEBwaDhUEETJzPxJJNzjQC3oNfzBgpcJnIIC5/HPDiksRFRzdE/sBIVIoLnMJMoiuMRiL64n9O1dboXMwBBFkIEBQKqEtArNzJc4kPYLK4PLN159eYrKN4ys0AIfiRCnN
N7TxCgZIcCA5BIGkKU6BTAYKp03IJAT0C1gumTpcq+XqkOMRqWalWpVT0flupa2UejKs8LLIKaJF4oHSGsq7Q+Vp4I4EWQw3JCNmQxhY4HxKCSk4EYKZ02mOjz508PIMLi84kLjyTCibO2Ik8r5MtDrC+bIPTPFaSlkpkQXxX8VAldSjvci8lmM4s0GP0QDUl9fwpX0DIJywlCqYERBFSzIb4rRTNFV4CG1GFOfB31mEO8PnhlY2ZHezB86DPSLA
g0xNHzfshDP+zJ8x2OpSCiz/xiC3Y1P0cScMlfPKKfY/g2qLOU3gDqLGEJXBHJruRQtedVYQVJFh1wlZlVwOi+vyYzCc6/N6LEAhVM4yhilVJGK+osYuLiFM31RTo28r8BeAaIU4CVjXs3i39y6cxUvsjv85MpMh1S/EufStSo3MqszgsXMmSMCs4styJAWGmgTEaOBJRo0aZBLhLHi6rPILPc7BMgknAtyAtTGlezNIS9cjBhPCDgYkv+KTiusp
mS9IoVRFUxVeBUQVkFVBXQVXcqrMRKII6bK9yBlOZDOQgDG6HNTgoEcv2AAcHiwohLyq8uuBiSmmIpKHSpgoXSySpdNjyxs2koTzUAhkssKmSvdL+TWShtNAFwBSAWgFYBeAUQFKOJJR2yBS5E23M/0E4Bug9cj5yE4NbcyHuxawdZn24AQSKFuyMSF30+KTsfbh2AIGEk0dk/KA70ohms+Uogy13QlI3cvszIpu9sik0onzyNKfItLCwkHK/958
0L3iCl8scwfLtdfDI7L/vcALrKA47lORZFMuuX5SS/f0u4BIGZcxu4QytAMvzmI4JGb9u/CAB6ARgZdEwAeASGAqtui+oNHD+i+/JjKlUp/OYjUk2nJAKlw9hDAYFMbfUIqbdaYPuIfgY4HOwPgYcCRDZM8Ys7i8KmZAgYGIeexcr9kjCR7ztGXYAoqLIBTEOKSS2ssBLMChsvQBrc8UUlF7cmUSdz5RDcoRKcY5EpizIJfFnGD5kWEGRD3gMYrS
zpylgvjSvw+csgUYAaBVgVlyyVTXK+S0LPhLRC54t7KYsqQvmQBnEqpB8IoNNk/jLyqmCSzxq1NlvKw8xdN0Ko8/QuGy5YowvYSPyzmPMLt0jSKsLfymwoWyJAbSt0r9K50pvS+7WwzIhAimEHYjxgmeGz4MJDWNZ0tYqMXwUpM763LAAkxZx1LaKtz31LoouDOWVmK3IrNKqUp72PdaU1KNtKmU+0pvdovGoB7sN8311kYK439xAZ0c16yqi4RO
YOstlKuHyvzMAxHxrdkfRp1R9bwQMEx9o4VoCQgFALIjp8QiQvPIIiVMpSJqSasmopqiRTH0DAaa6UGZ9kbJn3j0VjRgIxtmA0jyPlgLHnx81djAMho9wlICqiUQKuJXArkBTj1pEGa1oFJryaymtZr2aiOC/kktQT1ZtHeWQINECOFav19081JjPE8BAgSIFmAEgTIEKBKgXvifLF8s8pAo9GHlogDX6GFJs+RZC1tACL9KJw68hwMCpLwxc3Ay
8GR7hrBr0VyFNTj8poP1SUivwLSKoo2DJ+z4M/hX+rWK80qBqP/OxJT8F8u0uXzIatlLJcXSrfIkqSkTRX3K/3ZovB9sQWZAdSW83c0TjJU5OLUrShXy2K8HKFlmdMBbOoBPBVZN/K68ei0cLGUBi9YlBd4QKnKsqac/OPzKVmEyHWZn3WNiih5U/ZKMgjU2yoky0GFYTEQg62EBDrpgSmFnrI604Gjrw64XI0L+6+Kq8yaq/CJFExRW3KlEHc2U
WdyQsyADCzOq9XPyrC0tEBMRMGW6COyKIM8Jsrz6v4uYK407LOSqzRLgrileCxKRdE3RHKvfqPcncpRKYxMMOcgRwB1M+BruPuJ+ihUQkvwbkC34sPjes+aroSny0huYSlq15N4dJstaumy+YzatTy/yk2s7q6gbutoYNKmCvRgSyhTFmRyIYIogZzAzYD8pvarw11dhohou+BWEYnNk43quOrTC8NdaxJTGKsfL+r4o5DPyKOK2fK4rii/S1KKo
c1fPwzAwe+zuc0ALCXmRgRM5IPzS/d63L83gQhRFCz8/+1QCsaocJxqarPGtaCCax6lV8JjUkCaAFAdDxxVuaCCG4I4bBxl8bhIfxsCbuPIkRCawmhY03lljHeXRsXNKNA2Mha8jxFqwLKj3Frc0U8RwFzay8StrrxW2vvFRAxDkibomoJrib1WBJvyktalmzpd9a/CzpLW7HavQBmBVgXYFzgTgW4FeBfgQfBBBYQU8LpaBWO9BNFNRxfSUKhwx
RSJne6vAluG8nn4bVCg3PbyPqefB3N5MaBjrkN4+Ro+yE6+iuu8llSXVTr1GvIrtstGwop0aGUkoqvcvY6HIqLO/YuodqSM6mKfcUc0RHRZZKqqI0yZyKmCXc/7N7Vh8CcuNyK8k7coAOBXQemwxVp+PuqMrNZSMvjiejWMwpySgCeo/jrK6evXqFMgECCgTmOuU2C+47YEmqcWncC0U/0GchWaJgqKl5CRwTZo0Uw0l9w4jJykXOIbxcmcsSr6y
2qqty76iUTtzpRR3LlEXckgtVy8q7qq/qjdMRDVd59MyGtSgGkPOnSqqsBotyeWu2FqlQS8ErvkH5TqRhKEGp4o/qJWn/K8jEKxNlCg2EaiFpbSErRiBB8Ggkt8rEc6aufLZq8hsYTKS6CqlyaS1ANMLPyuhuTzGG1DGYbTRKFrgAYWioFvUjqrtwChcG4J2rBCFMKABwyFCBjcjNYvrX1BtvZhHW9hU/WhVKw5aiqv9dSz7OJSR8h/1+qzmilIB
rActbUtLs645zBrsM/Oqz8oaqoBMag4yoykb/0WOtS9fmptWJixS8VPPym61SuYyIy0G169a3bxocZo4JoEDBiapoGpqFAedtJBma+Y1J8XzGdrnaF2pdpXakbWPW5r2RRFz5q0ml0jwcufAh2yaz5fnwrgumxmWZl+mtmSGaOZBWqTJp22dsXat2umB3ambGpi18DVHXx4c9fD3iX9ygWdWFlRZcWSXUZZVdUVlRmzyhOZjIc7FOwRMJfWQqf8T
pVcgFkfcouAADUswms4QmTnIy9Uh7Ju5/WR4nncVhciHeqnkIlJMTz9UttOaM1RbQZN/PTOrQyT7HOp4rF88L3dcBK4AJqBpE2GoKivE90rTxDs2iHXgq6uAP84o7FGBWYKogducaL8moKajB6xoO1LPG9qIsrkkyepfyFW/uvjLY2OCogYIZaMJHKiYkjuqMxNUqqwrWWvJM2L8OgcEI6rU4apwS3A7Lw+AceXbzk7FYlLKrLOvS+oBLr6+pIrg
QSm+QhL75KEt1bn5UVrdzxW5BoKq3i1ZhnIZkERHpai6T+N4ipy0BvNy2CiBsC0rVG1TtUwycLTkjItIuuELSCuLv7SeqhrNmjGcyUIuAfi4BvZb7yshta7KGutK9aBjH1tWrVI+hpTzA27av/KIACHX3VD1Y9VPVz1S9WvU6LWDsFLJiqDRFKq8+DXQ6ZCXClDExGonC1SfodcLXDAGjDXJpf8hfSrACFE4F/dki/NoJTqOuiuLbDS+joSNTS9O
sBr3/NjuT8623OvBrG2oAOz8agTMBeasgt0tLqLLAHD6qu4yTvu0cWBKkaNhxTGoJyEWzJRvzqwTrQ06s41AIxaegrFrVS6c94DeLdurYOZzWtYZ1mdgo+TF8qkyncG27W836OjD9upQslCPlFHOCMoob+s+A4qmmISqgu3NHy7gtIrodUnVUrrdVyuzssq6dk+LsLSaW6nsDTxQzLqIaJkq+vAa1WwOHy1CtaQyL1MASrQqBqtKrDL0Yuzcqq7N
c41qqMRwJHrXIY65hCa7FW6mKdaKGyPNdbbkx2s663y71rablIvrv9afyphqG6TavA2cA5BBQUq0iDNQVIMOGkShGyFbSKCCh0KlW1M92lC7Iw6gQEqsuARQ32r6Ue3CCQ+wJLA7rBxf80aWu5a5PBMAIqO2HBu7aOyx1Uby2y0o0bLmpjqLCMM25r0b7m5xO9je5QyKIzXmkTokwvsM1sTF2wzHO2ZyIKJ0UkgWut1caR29xsR7bw6MvJzYy3jM
x7vo7Hu29YQMREz6dwcztOwao4GKuxpkGci5y0+7+v0dzkhELFNPgBfQO8Xa1yDZ6ay+XtVab63lptz+Wh+syrhWl+r+Cuyrcqiy6sqgqcCTOhiHcgLevzplDlWnLqBLziw4yaAe9PvQH0h9EfSuN7i9qrf79ez/skKGs1LuHFZrZ932DTyi5Nl6PM9rtt68Bwwsd7jC53qNraGt3sZKfkrapZKTa403oNGDZg1YN2DTg24NeDQ6tdLCB5EzkLWt
UaUX1lu8UvHgOdHwqgDtm9hBT6Y2QItOwYQVZrGUHPbyjmtWUKAJCgviIvvNpPqxOu+yjSlOsY6kjA90e8XumlPQzXYsHPe8ywyHNwyFFKGvZrbrUMCE7aioHuBkEIY/J76QDOSqdBDvJNkqCa/RTqHblO7Guai1O1qLMrp+rTuGK5+/oLJbYQ1CtGl9aVZvLTfWLMwogFBgcCUH3gBfuvRJBjsU2DXKhIZxMRyV2THJbOxVtFyY0zls56K4MAYg
HTjKAYuNR9cfX1buypEqNaFM7XLDdedJ1JuAkIjRUta7W+9KrAsu3EOv7cuxXto9oLQEzTg4LMEwhMoTGE2rV6h9/o1ykB1foayrgX6FRYFMdyrER/+tCO6ytCt1oEq9CvYZjyqG+PJob6Sv1ooG5s42tNERDMQwkMpDErRisFDJQxUM1DKCrD7OBg5DmctuPfy2ZQGC4EEI6dA2jxZRyU/wkHt6nJJxT1m3YGHISqpHv44ZCa7AHyPqsPy+qk6z
QbLbtBl/wSj4/VDIMH2O97s4686/ioLrqw+2u+EAfLlvEqfE2Rm8rcJMKHB7fS+ANmQyefjgbq8cwD2bqx+/wZN6p+wYpCG4ysIYrSIh6uKiHACvHucC1M45iOSADWZDOQAndQsEyDOsEakGshiTOOZK/B1O+g9aV7Mv6Sh6qoV7b+iQAqHjjSAfOMYBuod17cq0Xuq6tc9nNlo5C4Z3S7SEmZyxUehpyH6GOeg0eC6rzYm0A1SbGizosGLJixYs
ngH2wq6xW60YN7kBryJWGbgNYbMgdgTYel7J05rsqTSSm3pdaCBqkueTiB7rpd7DQL8o2qPewbuoHTRUgDztJAV03dNPTb019N/TQM26dQ+xasFLRyJIBwYxpGPv4HtgP1mEJVmY2P+bFJSTlDUf7NouI6SktGCGTpqXhvxSQ/ZEciijm5RpOaHulirUs2K1jrxG3u2IPraMor7r5NqwrjH+6qR0jPhq5rFZhctrG1wfnNJEfYsOxYezkfDLx+pF
ozighvkcfztOzFqnqse4UaMzYgS4AuBxR1ZhX7963/PMgPgG7hOBPOWVzpzhxi5DSpP4+EKUxvS67jmLxTGZF1Hji/UZv7vRiLFGHYLEE0mHELGYbhMHikXrEKmhpQujCUWWiF/xE25MeDyABpVuy7TiucvKByHQW0wBhbUWxcAaHOhxgBZbS0cQaeysXsN6RwYdmaMzse9Dngthx1t2H7ezMcXSOBz1qd68x0gbOHyB78soHPe0sc/p8nK6kKcs
rHK1KdCrYqzQ59WD1pOqAQYyFoUTsXgaDVrqy7JWYlBidw+wxQyZwHxjmEcb51s+4pPKRnDEZN+wJo/ZsLbDm27ro6si8vsxGkMi5oLCa+ziutLjB0sN4ruOisPMHBKioucIwA6nFsH9QDvsc9rIpL3k7fS4GUxy6dBfh34qglxrh7K3RFqDkUNEevqsDZdHo7jdO7Frs6vweyr/G+NWIYJ77lUCeNjzUxZEEbfOvys1SPJ2CcDyxgxCZ+BkJvFj
99ChhieKGMJlVqGHDR5B19HKLMm0DHKbEMbDHheiMbInhJ85MonDFF6tonzkmXtTHakpidnLpc3F2EdRHHgHEciXGR1Jc5hxAcoLox1sLEnvQCSeDk96jLpTHLelrpmqaSA4ft7FJ6kuUmm7fMYfj1Josc0mSxq4c/pDBYwVMFzBSwWsFbBewUcF4gZwTm7kTCsDgrHJwQlg0VmKaVEaxrO7MChpGr7CAnl3AOGGj7lOdzaLKwSQZUHNpNQYXGS2
8KeNKK+q5uxG9Bo9yzqQa+xKwydx4kaba2U+ppEqsp+HOE77Bp0AsgZyTtRstKo6ushALgTWemm7dH5yU7/nLkdU64R3kdHqIPdFssqPxlqa/G2pk1K1SPsLBr0ROc78fxKgoMNwP6dwRmfJ5aFJfvn0bytlrTHPRrCdzRUq++oyqhW5+renIxxYe+iv4vWg0ZDykH0KnAEnAarSBhwLq9HILdl05duXJjz5cBXIVxFcxXCVz2nYuyOY+mlhmMRO
QgC0U2IUdgaSZ2GSGw4fJKFJ7MZXTlq04e1JCxmbOLH347Sf0EvBHwT8FCAAISCEQhMIQiEohQgBiEZE8yftkX8dlH9UB+8TqXd3iM1M8NKZv2vDZHrQhTz6xTd2XWb4qVrUUYKeFZp9KkxGiuu7OZ0KbL7eZyKfeZop6fP5na2rcY+6G2iWe+6oa1dplnyMbKa5TqRv/WwaMGt9wvGaM85GkLbdO8eHaHx7kcn6Ueh/OzjzZjHs/H5+78YrjKW7
4Fuhp4DBZGdcW4afJ6wCzea+xt5tnKwXN4nRKPmqwE+bPqih9loDmVp7CZSq+W9KsFan67KoEmDWpBptHxQyyCX5LJgEGBjoCj0cGGQBiBsF9hfOTwU8lPFTzU8NPLTwjmDpzhc+nIobnRM6JgiaYumgZtMbwH5J58ohmcxtucA61JrdP66A2nuaRn9BXv1SFtKgf2yFchfIUKFihfGZLzAoGyCUXzkNkl8NyZuZtTbxrPZHBkgob600UVmXvICi
WtJmeni53LMsUkkRi+ZRH1BhiqXHtrCtqe6q257yfmbSl+fFmIvXjp+6Qs8kdErKRhHIVnp3FyZHscvNWak7+xeCq7zyprweBaGo3wbcboF5Fsx1ejcyrfHQhpBfCHrZ+1LmR7sVHOSGgl5IadH2EQhu6XigPxYNoNFGZEGXDMkZeKSAQD4lEG8+9CY5bMJuhaDnGFgVsfqsqkVvDGS5+RajGlC5Lq2RoA5WaExDMysu2HAB66a5aWJnKO4CzfTs
At8rfEYBt8hA9fOLm9e0uYkLy51kdWZ9+yXtOzo59RYYmre2SZ0LQZuasbmHeoEq67oZ1SY7nzhjScuGgOoWKGM5BMPkWR/wa8FXoOMa7hXAeDeUHWTQNR3mm9KYRaTmQFlr4rGFnIy9G4aGIHCldlU6MmbRSrLKZEeIdUgGUHBDXHbwH7RyEVPQb2Z9hUvnS+rMJvnpdLEar6YpnQbiniwhKfdjPut+b3H8MtDmsHTio8febLoVNhMRczJdzN0r
GxkanZzkNlCphml4ftIhpAlSoaWtdGVJHDme26GNmGp7Yian5M/jL06Rp8lou5pWs7oxhcKGBkkLJkLErEmBVk5hWWEql1vDXmSa3uhXtFjMZpJ2g0NFUNVYIi3AAloSlDgBQ2qIGnAak6ACPgMgcoGVgUQO4AYBCABAB3RvqlTilAq16tbWBUmEQG/hOidIEVBVB2Jf7I613xC/DpwfQDGAK19EeOF21hta7XxYW+dxIB1ztabX75sdfwiu15td
xGZ8qdfqSu16OBFmCgBdcbX9Aa8F0bV17AHrXx1/QDbgeaneTXWh1zmr3bj19IH9hf2YIClBaic9f0BFQcFf6yucO9ZXAoV8Gd2y71hhOEg78I6FrWd1jtenX0gcWEJRl1i0GfXmAbAEJA5QNrAChKwJICHB/xv7F25i1iDag38AFCC9BUTBZcta0QB1JOZi1owDYADAKZIYACAJOAvhDkNxaihSyO9eXWZzUMDyXa1zkBIBFjF+zT8WN6cCPonN
djeIA1PHaFfXcATQGCA9+Hjbhwp0MYApAgyGCFwAAACj1pbIdsQU35N6gBxAp4AAEpJQWOGUBEwMUHmBpNuTbHDeAQzYSB0QVTcGANNmjf/Xv4WdZJBN1nWE4BbnCsNjhUwb2GWmmCwTeE2OHc2CIAuNnWu1Jq0fNdpcXQSOFJWgtgsbFASQUgE7AmMLzfC3LwJgAE2hNy6G7QaNuwBGA5mHwWrQ4APjYQBEtzze/FKURYEIBGAYSCI2WKTfIB6Z
GYICK2noc2CEANQAwG/Xj0Cdp7lowAwHlA0gGreTWGrfAFCBFYIrZK2yt2pBo3HAZgA82MoDWB0hwBhMHHFe5UBNvBAgKUCYBMgIRHSzxt8tgRFIYvLeS2hPBERNDlU+UCy24AG4O22LV3baXBMADreq37NjgBy3s8IUQsQrEKXXCAMgtJVfAgAA
```
%%

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

138
README.md Normal file
View File

@@ -0,0 +1,138 @@
# 姿态传感器
## 开发环境
* Python
* [OpenOCD](https://pan.7iwind.cn/directlink/pan/工具/xpack-openocd-0.12.0-7-win32-x64.zip)
* [CLion](https://www.jetbrains.com/clion/download/?section=windows)
* [arm-none-eabi-gcc](https://developer.arm.com/-/media/Files/downloads/gnu/15.2.rel1/binrel/arm-gnu-toolchain-15.2.rel1-mingw-w64-x86_64-arm-none-eabi.msi)
* [protoc-nanopb](https://pan.7iwind.cn/directlink/pan/工具/protoc-nanopb.zip)
## 环境配置说明
1. 下载所有运行条件中提到的文件
2. 解压OpenOCD至可找到的文件夹
3. 解压protoc-nanopb并解压至可找到的文件夹添加其内的bin路径到环境变量
4. 安装CLion
5. 安装arm-none-eabi-gcc一路下一步即可可自定义安装路径安装成功后将bin目录添加至环境变量
6. 打开powershell执行`pip install uv`
## CLion烧录及调试配置
1. 用CLion打开项目路径
2. 在弹出的窗口勾选CM4与CM7的启用预设![[step1.gif|447]]
3. 点击确定开始生成CMake构建缓存![[gif20260514054158.gif|513]]
4. 配置CLion的openocd路径为解压openocd路径下bin文件夹里openocd.exe可执行文件的路径![[gif20260514054645.gif|613]]
5. 添加CLion的openocd烧录目标![[gif20260514055249.gif]]
6. 点击上方绿色三角箭头即可烧录固件到目标板
## 技术架构
```mermaid
flowchart TB
subgraph App["用户程序层 src/"]
direction LR
CM7["CM7 导航应用\nmain.c"]
CM4["CM4 采集应用\nmain_CM4.c"]
AppSupport["应用支撑\nshell / banner / time_base / elog_port"]
end
subgraph Service["业务功能层"]
direction LR
LCFSM["组合导航状态机\nlc_fsm"]
SensorTask["传感器采集任务\nIMU / GNSS"]
ProtoApp["消息协议适配\nproto"]
LogApp["日志与命令行适配"]
end
subgraph Domain["功能模块层"]
direction LR
subgraph Nav["loosely_coupled_navigation"]
direction TB
LC["LooselyCoupled"]
Align["Alignment / Attitude"]
INS["INS / Mechanization"]
EKF["EKF"]
EarthMath["Earth / Math"]
end
subgraph Sensors["sensors"]
direction TB
IMU["IMU 统一接口"]
IMUDriver["ADIS16488 / STIM300 / SCH1633"]
GNSS["GNSS 统一接口"]
GNSSDriver["K922 / libnmea"]
end
subgraph Proto["proto"]
direction TB
ProtoFile["V0_0_1.proto"]
NanoPB["nanopb 生成代码"]
end
end
subgraph BSP["BSP 模块 bsp/"]
direction TB
subgraph BspService["BSP 服务接口层"]
direction LR
OpenAMP["OpenAMP"]
Stream["STREAM"]
SPI["SPI"]
Timer["TIMER"]
Exti["EXTI"]
Enter["ENTER"]
end
subgraph BspBase["BSP 基础抽象层"]
direction LR
IO["IO"]
RCC["RCC"]
DMA["DMA"]
Resource["OpenAMP Resource"]
end
subgraph BspPort["STM32H7xx Port 层"]
direction LR
StreamPort["stream_port / stream_uart_port"]
IOPort["io_port"]
SPIPort["spi_port"]
TimerPort["timer_port / time_base_port"]
ExtiPort["exti_port"]
OpenAMPPort["openamp_port"]
RCCPort["rcc_port"]
DMAPort["dma_port"]
end
subgraph Chip["芯片启动与片上资源层"]
direction LR
ChipInit["init_CM4 / init_CM7"]
IT["stm32h7xx_it"]
Memory["MPU / SDRAM / sysmem / syscalls"]
HAL["STM32H7xx HAL / CMSIS"]
end
end
subgraph Lib["第三方与公共库"]
direction LR
ThreadX["ThreadX"]
CMSISDSP["CMSIS-DSP"]
Metal["libmetal / open_amp"]
LwRB["lwrb"]
ShellLib["microshell"]
EasyLogger["easylogger"]
QF["qf-fsm"]
end
App --- Service
Service --- Domain
Domain --- BSP
BSP --- Lib
```
## 协作者
> 高效的协作会激发无尽的创造力,将他们的名字记录在这里吧
## 协作者
> 高效的协作会激发无尽的创造力,将他们的名字记录在这里吧

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 845 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

BIN
resource/step1.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

2
事项.md Normal file
View File

@@ -0,0 +1,2 @@
TCP传输RTCM

View File

@@ -0,0 +1,909 @@
# 姿态系统产品规格说明书融合模板
> 文档定位:本文件为船载/水下高精度姿态系统的产品级总规格书模板。它不是单纯PRD而是用于承接产品需求、硬件需求、软件需求、接口控制、原理图评审、PCB评审、测试验收、认证准备、生产交付和RTM追溯的主规格文档。
---
## 文档控制信息
| 项目 | 内容 |
|---|---|
| 文档名称 | 姿态系统产品规格说明书 |
| 文档编号 | SPEC-POSE-2026-V1.0 |
| 产品名称 | 船载/水下高精度组合航姿系统 |
| 产品型号 | POSE-XXX |
| 产品类型 | AHRS / INS / POS / MRU |
| 适用阶段 | 原型机 / 工程样机 / 正式测试版 / 产品发布版 |
| 硬件版本 | HW_Vx.x |
| 软件版本 | SW_Vx.x |
| 原理图版本 | SCH_Vx.x |
| PCB版本 | PCB_Vx.x |
| BOM版本 | BOM_Vx.x |
| 编写部门 | 产品 / 硬件 / 嵌入式 / 算法 / 测试 / 质量 |
| 审核人 | 产品、硬件、嵌入式、算法、测试、质量、认证、生产 |
| 批准人 | |
| 文档状态 | 草稿 / 评审中 / 已冻结 / 已发布 |
| 密级 | 内部受控 / 对外删减版 |
### 版本记录
| 版本 | 日期 | 修改内容 | 修改人 | 评审结论 |
|---|---|---|---|---|
| V0.1 | | 初稿 | | |
| V0.9 | | 评审稿 | | |
| V1.0 | | 冻结发布版 | | |
## 1. 产品概述
### 1.1 产品定位
| 项目 | 规格描述 |
|---|---|
| 产品类型 | 船载/水下高精度组合航姿系统,属于 AHRS / INS / POS / MRU 类产品 |
| 典型应用 | 多波束测深、无人船USV、ROV/AUV、水下测绘、声呐运动补偿、海洋工程测量 |
| 核心功能 | 输出姿态、航向、升沉、位置、速度、时间、质量指标和系统状态 |
| 核心输入 | IMU、GNSS、双天线航向、RTK/RTCM、PPS/PTP、Event Input可选DVL |
| 核心输出 | Roll、Pitch、Heading、Heave、Position、Velocity、Angular Rate、Acceleration、Status |
| 产品目标 | 为多波束声呐和船载测绘系统提供高精度地理参考、姿态补偿和运动补偿数据 |
| 对标方向 | Applanix POS MV、SBG Ekinox/Apogee、HydroPOS、OCTANS/HYDRINS、NovAtel SPAN/ALIGN、Advanced Navigation Certus类OEM方案 |
### 1.2 产品组成
| 组成部分 | 说明 |
|---|---|
| 主控计算单元 | STM32H747 或同级双核MCU/处理器 |
| IMU单元 | 战术级MEMS IMU支持 ADIS16488、STIM300、SCH1633 等配置 |
| GNSS单元 | 多频多星座RTK-GNSS支持主/副双天线定向 |
| 时间同步单元 | PPS、PTP、Event Input、IMU时间戳 |
| 通信接口单元 | Ethernet、RS232/RS422/RS485、USB/调试口 |
| 存储单元 | eMMC或等效存储用于Raw IMU、GNSS观测值、POS数据和日志 |
| 电源单元 | 船载宽压输入、电源保护、掉电检测、保持供电 |
| 结构防护单元 | IP67外壳、防水连接器、安装基准、坐标轴标识 |
| 配套软件 | Web配置、FTP下载、日志导出、参数配置、后处理数据导出 |
| 配套文档 | ICD、安装配置手册、协议说明书、出厂测试与校准规范、维护手册 |
### 1.3 产品关键默认规格
> 本节为原理图、PCB、软件、测试和正式准入的统一基线。正式产品规格不得长期保留模糊项。
| 项目 | 正式规格 | 原型机例外 | 验收方式 | 优先级 |
| ----------- | ---------------------------------- | ----------------------- | --------------------- | ----- |
| 产品输入电压 | **936V DC** | 原型机允许12V实验室供电但不得作为产品规格 | 电源拉偏、反接、瞬断、浪涌预扫 | P0 |
| PPS同步精度 | **PPS捕获时间戳误差≤5µs** | 不建议降低 | 示波器/逻辑分析仪 | P0 |
| PTP同步精度 | **目标≤1µs**;未验证时标注“待硬件实测” | 可阶段性待验证 | PTP主从测试 | P0/P1 |
| STIM300接口 | **默认UART/RS422类接口接入** | 最终以器件手册和硬件实现为准 | 连续采集、帧号、时间戳、丢帧统计 | P0 |
| ADIS16488接口 | SPI + DRDY/GPIO + RST | 无 | SPI时序、DRDY触发测试 | P1 |
| SCH1633接口 | SPI + DRDY/GPIO + RST | 待器件手册确认 | 初始化、读数、时间戳测试 | P1 |
| 数据存储 | **≥16GB eMMC或等效存储** | 原型机可临时使用SD/外部存储验证 | 连续写入、文件解析、FTP下载 | P0 |
| 掉电保护 | **必须支持掉电检测 + 保持供电 + 文件flush/sync** | 未实现则列P1风险 | 写入中断电,重启后文件系统不损坏 | P0 |
| COM1默认输出 | PASHR + PRDID建议100Hz | 可配置 | 串口抓包 | P0 |
| COM2默认输出 | TSS1建议100Hz | 可配置 | 声呐/上位机联调 | P0 |
| COM3默认用途 | RTCM差分输入 | 可配置 | RTK固定测试 | P1 |
| COM4默认用途 | Debug Log / Binary POS / 备用 | 可配置 | 串口抓包 | P1 |
| 以太网默认功能 | Web配置、FTP下载、TCP/UDP实时输出、PTP待验证 | 无 | Ping/Web/FTP/抓包/PTP测试 | P0/P1 |
| 实时升沉 | 5cm或5%,取大值 | 无 | 摇摆台/外场测试 | P0 |
| 延迟升沉 | 2.5cm或2%默认300s | 可阶段性关闭 | 后处理对比 | P1 |
| 防护等级 | 产品版IP67 | 原型机可裸板/工装 | 气密/浸水测试 | P1/P0 |
### 1.4 产品型号与配置边界
| 配置项 | 原型机/开发版 | 工程样机/正式测试版 | 产品发布版 |
| ------- | ------------------------------ | -------------------- | --------------- |
| 输入电压 | 允许12V实验室供电 | 建议支持936V | 必须936V |
| IMU | ADIS16488/STIM300/SCH1633按样机配置 | 至少闭环一种主IMU + 一种兼容IMU | 明确标配/选配 |
| GNSS | K922或目标GNSS模块 | 双天线、PPS、RTK状态可用 | 双天线RTK/PPK完整 |
| 存储 | 可阶段性外部验证 | eMMC/文件系统可用 | eMMC + 掉电保护必须可用 |
| PTP | 可先验证网口链路 | 给出PTP实测结论 | 达到≤1µs或调整产品宣称 |
| 外壳防护 | 可裸板/工装 | 外场防护方案 | IP67定型 |
| COM输出 | 初步协议输出 | 可配置输出 | 出厂默认协议明确 |
| Web/FTP | 可先开发最小版本 | 支持配置与文件下载 | 作为正式交付功能 |
| 认证 | 暂不认证 | 预扫/摸底 | 按目标市场完成认证 |
### 1.5 行业对标产品概述
| 对标产品 | 产品定位 | 可借鉴点 | 对当前产品启示 |
| ------------------------------------------------------------- | -------------- | ----------------------------------------- | ----------------------- |
| Applanix POS MV SurfMaster / WaveMaster / OceanMaster / Elite | 船用高精度位置姿态系统 | GAMS双天线航向、TrueHeave、微秒级时间标记、COM/以太网输出 | 作为多波束测绘级产品主要对标 |
| SBG Ekinox-D / Apogee-D | 高性价比MEMS组合导航 | MEMS IMU + 双天线GNSS + Web配置 + 后处理 | 作为成本/性能平衡对标 |
| HydroPOS | 国产POS组合航姿系统 | 双GNSS天线、PCS、IMU、PPS、三点输出、后处理 | 作为国产产品文档和使用流程参考 |
| OCTANS / HYDRINS | 高端FOG MRU/INS | 实时升沉/延迟升沉、外部时钟同步、质量指标、安装手册体系 | 作为高端产品文档体系和安装要求参考 |
| NovAtel SPAN / ALIGN | GNSS/INS组合导航平台 | ALIGN双天线航向、LEVERARM、EXTHDGOFFSET、INSPVA日志 | 作为算法和后处理生态参考 |
| Advanced Navigation Certus类OEM | OEM级GNSS/INS模块 | 规格表、接口Pinout、Web配置、GPIO动态功能、协议包分类 | 作为硬件接口、ICD、Web配置、安装检查参考 |
### 1.6 产品层级与性能分级
| 层级 | 产品定位 | 典型对标 | 姿态精度 | 航向精度 | 升沉 | 适用场景 |
| --- | ------------ | ------------------------------------ | ------------ | -------------------- | ----------------- | ------------- |
| 基础级 | 小型无人船/普通声呐辅助 | 入门级POS/MRU | 0.03°0.05° | 0.08°@2m | 5cm或5% | 轻量测绘、教学、一般工程 |
| 标准级 | 当前主推版本 | POS MV SurfMaster / Ekinox-D | ≤0.02°0.03° | ≤0.05°@2m | 5cm或5%延迟2.5cm或2% | 多波束测深、USV |
| 高级级 | 高精度测绘版本 | POS MV WaveMaster / Apogee-D | ≤0.02° | 0.03°@2m / 0.015°@4m | TrueHeave级 | 高精度水下测绘 |
| 旗舰级 | 高端惯导/深海/特殊环境 | POS MV OceanMaster / Elite / HYDRINS | ≤0.01° | ≤0.02°@2m | 高级延迟升沉 | 高端测绘、GNSS受限环境 |
---
## 2. 系统级规格 SYS
### 2.1 系统关键指标冻结表
| ID | 指标类别 | 指标项 | 当前版冻结值 | 目标/扩展值 | 验收方式 | 优先级 |
| ------------ | -------- | --------------- | ---------------------------------- | ------------------ | ------------ | ----- |
| SYS-PERF-001 | 姿态 | Roll/Pitch | RTK有效≤0.02° RMSRTK失效60s≤0.05° RMS | 高级版≤0.01°0.015° | 转台/跑船,对比光纤惯导 | P0 |
| SYS-PERF-002 | 航向 | Heading | 2m基线≤0.05° | 4m基线≤0.03°或≤0.015° | 双天线基线测试、8字绕行 | P0 |
| SYS-PERF-003 | 实时升沉 | Real-time Heave | 5cm或5%,取大值 | TrueHeave级 | 六自由度摇摆台/外场 | P0 |
| SYS-PERF-004 | 延迟升沉 | Delayed Heave | 2.5cm或2%默认300s | 延迟时间可配置 | 后处理真值对比 | P1 |
| SYS-PERF-005 | 位置 | RTK Position | 水平1cm+1ppm垂直2cm+1ppm | PPK/PPP扩展 | RTK固定解统计 | P0 |
| SYS-PERF-006 | 速度 | Velocity | TBD | 根据GNSS/INS能力冻结 | 真值对比 | P1 |
| SYS-PERF-007 | 数据更新率 | IMU Raw | ≥200Hz目标支持1kHz | 1kHz | 日志统计/逻辑分析仪 | P0 |
| SYS-PERF-008 | 数据更新率 | POS输出 | ≥100Hz网口目标200Hz | 200Hz | 串口/网口抓包 | P0 |
| SYS-PERF-009 | 时间同步 | PPS | ≤5µs | 目标≤1µs | 示波器/逻辑分析仪 | P0 |
| SYS-PERF-010 | 时间同步 | PTP | 目标≤1µs | 产品版需实测冻结 | PTP主从测试 | P0/P1 |
| SYS-PERF-011 | GNSS失效保持 | 30s/60s退化量 | TBD | 对标竞品失效保持能力 | 遮挡/回放测试 | P1 |
| SYS-PERF-012 | 输出延迟 | COM/ETH输出延迟 | TBD | 按多波束要求冻结 | 抓包+时间戳对齐 | P1 |
| SYS-PERF-013 | Event打戳 | Event Input时间戳 | TBD | 目标微秒级 | 脉冲发生器测试 | P1 |
### 2.2 工作模式与状态机
| 状态 | 触发条件 | 系统行为 | 输出要求 |
| ---------- | -------------- | ------------------------ | ------------- |
| Power On | 上电 | 电源稳定、MCU启动、加载配置 | 输出启动日志 |
| BIT自检 | 启动后 | 检查IMU、GNSS、存储、PPS、网络、配置区 | 输出自检结果 |
| Standby | 自检通过 | 等待配置或自动进入对准 | 输出状态不输出有效POS |
| Alignment | IMU/GNSS满足条件 | 静基座/晃动基座/双天线辅助对准 | 输出对准进度 |
| Navigation | 对准完成 | 输出姿态、航向、位置、升沉、速度 | 正常协议输出 |
| Degraded | GNSS/RTK/IMU异常 | 降级或纯惯导保持 | 输出质量标志和错误码 |
| Logging | 记录开启 | 写Raw IMU、GNSS观测值、POS、日志 | 文件可回放 |
| Fault | 关键模块异常 | 报警、降级、复位或停止输出 | 错误码明确 |
| Shutdown | 掉电检测 | 停止写入、flush/sync、保存文件索引 | 文件系统不损坏 |
### 2.3 对准与初始化性能
| ID | 对准/初始化项 | 完成条件 | 完成后有效数据 | 验收方法 |
|---|---|---|---|---|
| SYS-INIT-001 | 姿态初始化 | IMU稳定重力方向估计完成 | Roll/Pitch有效 | 静态试验 |
| SYS-INIT-002 | 导航初始化 | GNSS 3D Fix或手动初始位置 | 位置/速度有效 | GNSS定位测试 |
| SYS-INIT-003 | 航向初始化 | 双天线航向、速度航向或外部航向有效 | Heading有效 | 双天线测试 |
| SYS-INIT-004 | 时间初始化 | GNSS时间 + PPS有效 | UTC/GPS时间戳有效 | PPS测试 |
| SYS-ALIGN-001 | 静基座初始对准 | 静止条件满足 | 初始姿态 | 静态试验 |
| SYS-ALIGN-002 | 晃动基座对准 | 船载晃动条件满足 | 初始姿态/航向 | 摇摆台/外场 |
| SYS-ALIGN-003 | 双天线辅助航向对准 | 主副天线有效,基线固定 | 航向快速收敛 | 双天线基线测试 |
| SYS-ALIGN-004 | 热启动 | 配置与上次状态有效 | 缩短启动时间 | 多次上电 |
| SYS-ALIGN-005 | 对准失败处理 | 对准超时或质量不足 | Standby/Degraded/Error | 故障注入 |
### 2.4 GNSS失效与降级策略
| 场景 | 系统行为 | 输出要求 | 验收方式 |
|---|---|---|---|
| RTK固定→浮动 | 保持导航,降低质量标志 | 输出RTK状态变化 | RTK状态切换测试 |
| GNSS短时失效 | 进入惯性保持,协方差增大 | 输出DR状态和误差估计 | 遮挡/回放测试 |
| 双天线航向失效 | 使用IMU航向保持或单天线辅助 | 输出Heading质量标志 | 断开副天线测试 |
| PPS失效 | 切换内部时钟或PTP时钟报警 | 输出时间同步异常 | PPS断开测试 |
| IMU丢帧 | 标记数据异常,必要时降级 | 输出IMU丢帧计数 | 串口/SPI异常注入 |
| 存储异常 | 停止记录或切换日志策略 | 输出存储错误码 | 写满/拔除/断电测试 |
### 2.5 时间同步与数据延迟指标
| 指标 | 规格要求 | 验收方法 |
|---|---|---|
| PPS捕获误差 | ≤5µs | 示波器测PPS边沿与系统时间戳 |
| PTP同步误差 | 目标≤1µs | PTP Master/Slave测试 |
| IMU时间戳抖动 | TBD需统计周期方差 | 连续采集统计 |
| POS输出延迟 | TBD需标定串口/网口输出延迟 | 抓包+时间戳对齐 |
| Event Marker打戳 | 支持外部事件输入并记录时间 | 外部脉冲测试 |
| 每帧相对PPS偏差 | 建议记录到日志 | 日志分析 |
| 时间有效标志 | 输出Time Valid、PPS Valid、PTP Sync等状态 | 协议抓包/状态页 |
---
## 3. 软件规格 SWE
### 3.1 软件架构与双核分工
| ID | 软件项 | 规格要求 | 验收方式 |
|---|---|---|---|
| SWE-ARCH-001 | 双核架构 | CM4负责实时采样、DMA、PPS捕获CM7负责算法、网络、文件系统、协议输出 | 架构评审 |
| SWE-ARCH-002 | RTOS | 使用ThreadX或同级RTOS任务优先级、栈空间、周期明确 | 长稳测试 |
| SWE-ARCH-003 | 核间通信 | 共享内存/无锁环形缓冲区传输带时间戳数据 | IPC压力测试 |
| SWE-ARCH-004 | 状态机 | 支持自检、对准、导航、降级、记录、故障、关机 | 状态迁移测试 |
| SWE-ARCH-005 | 看门狗 | 支持系统级和任务级心跳监控 | 故障注入 |
| SWE-ARCH-006 | 日志系统 | 支持分级日志、模块标签、关键时间戳和错误码 | 日志检查 |
| SWE-ARCH-007 | 配置管理 | 支持默认配置、用户配置、工厂配置、恢复出厂 | 配置测试 |
### 3.2 BSP与驱动规格
| ID | 模块 | 规格要求 | 验收方式 |
| ----------- | ----------- | ---------------------------------- | ---------------- |
| SWE-BSP-001 | GPIO/EXTI | 支持外部中断注册、触发沿、优先级、使能/禁用 | 单元测试 |
| SWE-BSP-002 | UART/Stream | 支持DMA、空闲中断、环形缓冲区、接收回调 | 串口压力测试 |
| SWE-BSP-003 | SPI | 支持IMU高速读取、片选、DRDY触发 | 逻辑分析仪 |
| SWE-BSP-004 | Timer/PPS | 支持PPS/Event硬件捕获、时间戳换算 | PPS测试 |
| SWE-BSP-005 | Ethernet | 支持NetX、TCP/UDP、WebServer、FTP、PTP验证 | Ping/Web/FTP/PTP |
| SWE-BSP-006 | Storage | 支持eMMC读写、文件分割、掉电同步 | 写入和断电测试 |
| SWE-BSP-007 | Watchdog | 支持独立看门狗、窗口看门狗、任务喂狗 | 故障注入 |
| SWE-BSP-008 | Bootloader | 支持升级、回滚、版本校验 | 升级测试 |
### 3.3 算法规格
| ID | 算法项 | 规格要求 | 验收方式 |
|---|---|---|---|
| SWE-ALG-001 | 标定补偿 | 支持零偏、标度因数、非正交误差、温度补偿 | 标定数据回放 |
| SWE-ALG-002 | 初始对准 | 支持静基座、晃动基座、惯性系对准 | 仿真/转台 |
| SWE-ALG-003 | 捷联解算 | 支持姿态、速度、位置积分及圆锥/划船补偿 | 标准轨迹回放 |
| SWE-ALG-004 | 杆臂补偿 | 支持IMU、GNSS天线、声呐、VRP三维杆臂 | 单元测试 |
| SWE-ALG-005 | 松组合EKF | 支持位置/速度量测更新、协方差传播、失效降级 | 仿真/HIL |
| SWE-ALG-006 | 双天线航向融合 | 支持GNSS双天线航向量测融合 | 基线测试 |
| SWE-ALG-007 | 实时升沉 | IIR/自适应滤波输出实时Heave | 摇摆台 |
| SWE-ALG-008 | 延迟升沉 | FIR零相位或等效算法默认300s缓存 | 后处理对比 |
| SWE-ALG-009 | VRP多点输出 | 支持至少3个虚拟参考点 | 配置测试 |
| SWE-ALG-010 | DVL融合 | 可选支持DVL速度量测 | 回放测试 |
| SWE-ALG-011 | 异常量测拒绝 | 对GNSS跳变、航向异常、DVL异常进行抗差处理 | 故障注入 |
| SWE-ALG-012 | 质量估计 | 输出姿态/航向/位置/速度/升沉质量指标或标准差 | 对比验证 |
### 3.4 默认协议与COM口输出矩阵
| 端口 | 默认方向 | 默认协议 | 默认频率 | 默认波特率 | 可配置项 | 用途 |
| ------------ | ----- | --------------------------- | --------: | -------------------: | --------- | ------- |
| COM1 | 输出 | PASHR + PRDID | 100Hz | 建议460800最低115200需验算 | 协议、频率、波特率 | 多波束姿态输入 |
| COM2 | 输出 | TSS1 | 100Hz | 115200/460800 | 协议、频率、波特率 | 声呐兼容 |
| COM3 | 输入 | RTCM | 按RTCM源 | 115200 | 波特率、输入源 | RTK差分 |
| COM4 | 输出/调试 | Debug Log / Binary POS | 10100Hz | 115200/921600 | 日志等级、协议 | 调试/备用 |
| Ethernet UDP | 输出 | Binary POS / Protobuf / 自定义 | 100200Hz | 100M网口 | IP、端口、频率 | 实时输出 |
| Ethernet TCP | 输入/控制 | Web/命令 | N/A | 100M网口 | IP、端口 | 配置控制 |
| FTP | 输出 | 文件下载 | N/A | 100M网口 | 用户、路径 | 数据下载 |
| NTRIP Client | 输入 | RTCM网络差分 | 按服务源 | Ethernet | IP、端口、账号 | CORS差分 |
| Event | 输入 | 脉冲事件 | 按外部设备 | 3.3V/5V待定 | 有效沿、去抖 | 声呐事件打戳 |
### 3.5 数据记录、回放与后处理支持
| 数据类型 | 是否必须 | 内容 | 默认频率 | 文件格式 | 用途 |
|---|---|---|---:|---|---|
| Raw IMU | 必须 | 时间戳、角速度、加速度、温度、状态 | ≥200Hz | BIN + 索引 | 算法回放、PPK |
| GNSS观测值 | 必须 | 原始观测、星历、RTK状态、PPS时间 | 按模块输出 | RINEX/UBX/RTCM/自定义 | PPK |
| POS实时结果 | 必须 | 姿态、航向、位置、速度、升沉、状态 | ≥100Hz | BIN/CSV索引 | 成果回放 |
| 系统日志 | 必须 | 状态机、错误码、时间同步、丢帧、存储异常 | 事件触发 | TXT/BIN | 问题定位 |
| 配置参数 | 必须 | 杆臂、安装角、端口、网络、IMU/GNSS配置 | 修改触发 | JSON/INI/BIN | 启动加载 |
| 后处理导出 | 建议必须 | Raw IMU、GNSS观测、POS、配置、日志 | 按任务 | RINEX/自定义包 | PPK/问题复盘 |
#### 3.5.1 掉电保护条款
| 掉电保护项 | 规格 |
| ----- | ------------------------------------- |
| 掉电检测 | 必须支持PWR_FAIL/PVD/ADC等硬件检测 |
| 保持供电 | 默认目标≥200ms满足文件flush/sync |
| 软件动作 | 停止新写入 → flush/sync → 写文件尾/索引 → 标记安全关闭 |
| 验收方法 | 写入过程中断电,重启后文件系统不损坏,文件可识别 |
| 风险等级 | P0若PPK/Raw记录作为卖点则不得取消 |
### 3.6 诊断、质量指标与错误码
| ID | 规格项 | 要求 |
|---|---|---|
| SWE-DIAG-001 | BIT上电自检 | 检查IMU、GNSS、存储、网络、PPS、配置区 |
| SWE-DIAG-002 | 运行时监测 | 监测GNSS状态、RTK状态、IMU丢帧、PPS异常、存储异常 |
| SWE-DIAG-003 | 质量指标 | 输出姿态、航向、位置、速度、升沉质量标志或标准差 |
| SWE-DIAG-004 | 错误码 | 每类错误有唯一错误码、等级、恢复策略 |
| SWE-DIAG-005 | FDIR | 支持故障检测、隔离和降级重构 |
| SWE-DIAG-006 | 日志导出 | 支持按时间、模块、错误等级导出日志 |
| SWE-QA-001 | 编码规范 | MISRA C:2012、Barr-C、CERT C |
| SWE-QA-002 | 静态分析 | cppcheck、clang-tidy、clang-format、复杂度检查 |
| SWE-QA-003 | 单元测试 | 算法、BSP、协议、文件系统均需测试 |
| SWE-QA-004 | 追溯 | SYS-SWE-SDS-Test-Bug全链路追溯 |
### 3.7 Web配置与监控页面需求
| 页面 | 最小功能 |
| -------- | ---------------------------- |
| 状态页 | 系统状态、GNSS状态、Heading状态、时间同步状态 |
| 卫星页 | 可见卫星、SNR、主/副天线状态、RTK状态 |
| Raw IMU页 | 角速度、加速度、温度、丢帧计数 |
| 姿态页 | Roll/Pitch/Heading、角速度、质量标志 |
| 位置页 | 经纬高、RTK状态、位置标准差 |
| 速度页 | N/E/D速度、船速、速度质量 |
| 升沉页 | 实时升沉、延迟升沉、多参考点升沉 |
| 通信页 | COM口、以太网、协议、频率、错误统计 |
| 数据端口页 | 协议选择、输出频率、目标IP/端口 |
| 安装页 | 安装角、主副天线杆臂、声呐杆臂 |
| GNSS配置页 | 星座、频点、RTK、NTRIP |
| 数据记录页 | 开启/停止记录、文件列表、下载、删除、格式化 |
| 固件升级页 | 固件上传、校验、升级、回滚 |
| 诊断页 | 错误码、BIT结果、时间同步状态、存储状态 |
| 配置备份页 | 导出/导入配置,恢复出厂设置 |
---
## 4. 硬件规格 HW
### 4.1 硬件总体架构
| ID | 硬件项 | 规格要求 |
| ----------- | ------ | ----------------------------------------------------- |
| HW-ARCH-001 | 主控 | STM32H747或同级双核MCU具备FPU、ETH、SPI、UART、Timer、DMA、外部存储接口 |
| HW-ARCH-002 | IMU接口 | 支持ADIS16488、STIM300、SCH1633等目标IMU |
| HW-ARCH-003 | GNSS接口 | 支持多频多星座GNSS、主/副天线、RTCM输入、PPS输出 |
| HW-ARCH-004 | 时间同步 | PPS接入硬件捕获通道PTP能力需实测确认 |
| HW-ARCH-005 | 通信 | Ethernet、≥4路COM、调试口、可选USB/CAN |
| HW-ARCH-006 | 存储 | ≥16GB eMMC或等效存储满足Raw持续写入 |
| HW-ARCH-007 | 扩展 | Event Input、DVL、外部GNSS、外部授时预留 |
| HW-ARCH-008 | 平台化 | 支持核心板+扩展板、GNSS模组、IMU模组、接口板模块化 |
### 4.2 硬件接口资源矩阵
| 功能 | 信号 | MCU资源 | 外部器件 | 方向 | 测试点 | 验收方法 |
| ----------- | ------------- | ------------ | ----------- | --------- | --- | ------- |
| GNSS数据 | GNSS_TX/RX | USARTx | K922/目标GNSS | 双向 | 是 | 串口抓包 |
| GNSS PPS | 1PPS | TIMx_CHx捕获 | GNSS | GNSS→MCU | 是 | 示波器 |
| GNSS状态 | RTK/PVT/ERR | GPIO | GNSS | GNSS→MCU | 建议 | 状态切换 |
| ADIS16488 | SPI + DRDY | SPIx + EXTI | IMU | 双向 | 是 | 逻辑分析仪 |
| SCH1633 | SPI + DRDY | SPIx + EXTI | IMU | 双向 | 是 | 逻辑分析仪 |
| STIM300 | UART/RS422 | USARTx/DMA | IMU | IMU→MCU为主 | 是 | 连续采集 |
| Ethernet | RMII | ETH MAC | PHY | 双向 | 部分 | Ping/抓包 |
| PTP | ETH PTP TS | ETH MAC | PHY | 双向 | 视方案 | PTP测试 |
| COM输出 | RS_T/R | UART + SP336 | 声呐/上位机 | 双向 | 是 | 串口抓包 |
| Event Input | EVENT_IN | TIM/EXTI | 外部设备 | 外部→MCU | 是 | 脉冲测试 |
| eMMC | SDMMC/FMC | SDMMC/FMC | eMMC | 双向 | 否 | 写入测试 |
| 掉电检测 | PWR_FAIL | GPIO/ADC/PVD | 电源监控 | 电源→MCU | 是 | 断电测试 |
| Debug | SWD/JTAG/UART | SWD/USART | 调试器/产测 | 双向 | 是 | 烧录调试 |
### 4.3 IMU兼容矩阵
| 项目 | ADIS16488 | SCH1633 | STIM300 |
|---|---|---|---|
| 默认定位 | 开发/验证IMU | 目标兼容IMU | 高性能/战术级IMU |
| 默认接口 | SPI | SPI | UART/RS422 |
| 数据就绪 | DRDY GPIO/EXTI | DRDY GPIO/EXTI | 串口帧到达/同步信号 |
| 复位 | MCU GPIO | MCU GPIO | 建议MCU可控 |
| 同步方式 | DRDY/PPS对齐 | DRDY/PPS对齐 | 帧时间戳/PPS同步/外部同步 |
| 供电 | 按器件手册 | 按器件手册 | 按STIM300手册确认 |
| 电平 | 3.3V SPI | 3.3V SPI | RS422/TTL待确认 |
| 默认频率 | ≥200Hz | ≥200Hz | 按配置,需支持高频 |
| 关键风险 | SPI时序/DRDY | 初始化/DRDY | 粘包、跳帧、帧解析、时间戳 |
| 验收 | 连续采样无异常 | 连续采样无异常 | 帧号连续、时间戳单调、无未解释丢帧 |
### 4.4 IMU传感器指标表
| 指标项 | 当前要求 | 目标/高配要求 | 说明 |
|---|---|---|---|
| 陀螺量程 | TBD | 根据选型确定 | °/s |
| 加速度计量程 | TBD | 根据选型确定 | g |
| 陀螺零偏不稳定性 | TBD | 越小越好 | °/h |
| 加计零偏不稳定性 | TBD | 越小越好 | mg |
| 角随机游走 | TBD | 越小越好 | °/√h |
| 速度随机游走 | TBD | 越小越好 | m/s/√h |
| 噪声密度 | TBD | 按器件手册 | 陀螺/加计分别定义 |
| 带宽 | TBD | 满足高频采样 | Hz |
| 温度范围 | -40℃~+85℃或按型号 | 工业级 | 与产品环境一致 |
| 温补 | 必须支持 | 全温补偿 | 出厂标定数据 |
### 4.5 GNSS接收机选型对比表
| GNSS方案 | 星座频点 | 最大更新率 | RTK精度 | 授时精度 | RTCM支持 | 当前状态 |
|---|---|---:|---|---|---|---|
| K922 | 待补 | 待补 | 待补 | 待补 | RTCM v3.x | 当前原型机 |
| F9P/X20P类 | 多星座双频 | 25Hz级 | cm级 | ns级 | RTCM v3.x | 参考 |
| Mosaic X5类 | 多星座多频 | 100Hz级 | cm级 | <20ns级 | RTCM v2/v3 | 高配参考 |
| BD992类 | 多星座多频/L-band | 50Hz级 | mm/cm级 | ns级 | RTCM/CMR/CMR+ | 高配参考 |
> 说明该表用于选型与对标不能直接作为产品承诺。当前产品的GNSS指标必须以最终BOM、模块手册和实测报告冻结。
### 4.6 GNSS与双天线规格
| ID | 项目 | 规格要求 |
|---|---|---|
| HW-GNSS-001 | 模块 | 支持多频多星座RTK-GNSS |
| HW-GNSS-002 | 双天线 | 支持主天线和副天线用于定位和定向 |
| HW-GNSS-003 | RTCM输入 | 支持串口或网络RTCM输入 |
| HW-GNSS-004 | PPS输出 | GNSS PPS接入MCU硬件捕获 |
| HW-GNSS-005 | 状态脚 | RTK/PVT/ERR状态接入MCU GPIO定义有效电平 |
| HW-GNSS-006 | 天线供电 | 支持有源天线供电短路保护ESD保护 |
| HW-GNSS-007 | 射频走线 | PCB按50Ω阻抗控制远离噪声源 |
| HW-GNSS-008 | NTRIP | 支持网络RTCM差分输入配置IP/端口/账号 |
### 4.7 双天线基线与航向状态监测
| 项目 | 规格要求 |
|---|---|
| 主天线 | 作为定位主天线输出位置速度PPS观测值 |
| 副天线 | 与主天线构成双天线基线用于航向解算 |
| 基线长度 | 支持配置2m/4m或实测基线长度 |
| 基线向量 | 支持输入主天线至副天线在船体坐标系下的XYZ向量 |
| 基线精度 | 建议实测误差5mm作为高级航向性能前提 |
| 航向状态 | 输出固定解浮动解无解低SNR周跳多路径等状态 |
| 报警 | 支持天线开路/短路基线变化异常RTK失效报警 |
| 验收 | 静态基线场转向机动8字绕行断开副天线测试 |
### 4.8 PPS/PTP/Event/IMU时间同步链路
| 同步对象 | 来源 | 硬件路径 | 软件处理 | 精度目标 | 验收 |
|---|---|---|---|---|---|
| PPS | GNSS模块 | PPS MCU定时器捕获 | 更新UTC/GPS时间基准 | 5µs | 示波器/逻辑分析仪 |
| PTP | Ethernet | ETH MAC/PHY | IEEE1588修正本地时钟 | 1µs目标 | PTP主从测试 |
| IMU时间戳 | IMU DRDY/串口帧 | EXTI/TIM/UART DMA | CM4打戳并送CM7 | TBD | 周期统计 |
| Event Input | 外部声呐/设备 | Event TIM捕获 | 记录事件时间 | TBD | 外部脉冲 |
| POS输出时间 | 系统时钟 | 协议字段 | 输出UTC/GPS/系统时间 | 与PPS一致 | 协议抓包 |
强制条款**PPS不允许仅作为普通GPIO状态读取产品版应优先接入MCU硬件捕获通道。**
### 4.9 GPIO动态功能表
| GPIO功能 | 方向 | 用途 | 是否当前必须 |
|---|---|---|---|
| 1PPS Input | 输入 | 外部授时 | P1 |
| 1PPS Output | 输出 | 给声呐/上位机同步 | P1 |
| Event Input | 输入 | 声呐触发事件打戳 | P1 |
| GNSS Fix Output | 输出 | GNSS有效状态指示 | P2 |
| IMU DRDY | 输入 | IMU数据就绪 | P0 |
| RTCM Input | 输入 | 差分数据输入 | P1 |
| DVL Input | 输入 | 未来水下速度辅助 | P2 |
| TSS1 Output | 输出 | 声呐姿态输出 | P0/P1 |
| Fault Output | 输出 | 系统故障告警 | P2 |
| User DIO | 输入/输出 | 用户自定义 | P2 |
### 4.10 连接器与Pinout模板
| 接口 | 连接器型号 | Pin | 信号 | 方向 | 电平/标准 | 说明 |
| --------- | -------- | --: | -------- | ----- | ----------- | ----------- |
| 电源 | 待定 | 1 | VIN | 输入 | 936V | 船载电源 |
| 电源 | 待定 | 2 | GND | - | - | 电源地 |
| COM0 | 待定 | 1 | TX | 输出 | RS232/RS422 | PASHR/PRDID |
| COM1 | 待定 | 2 | RX | 输入 | RS232/RS422 | 可配置 |
| COM2 | 待定 | 1 | TX | 输出 | RS232/RS422 | TSS1 |
| COM3 | 待定 | 1 | RX | 输入 | RS232/RS422 | RTCM输入 |
| PPS/Event | 待定 | 1 | 1PPS | 输入/输出 | 3.3V/5V待定 | 时间同步 |
| PPS/Event | 待定 | 2 | EVENT_IN | 输入 | 3.3V/5V待定 | 事件打戳 |
| Ethernet | RJ45/航空插 | - | TX/RX | 双向 | 100Base-T | Web/FTP/PTP |
| GNSS ANT1 | SMA/TNC | - | RF_IN1 | 输入 | 50Ω | 主天线 |
| GNSS ANT2 | SMA/TNC | - | RF_IN2 | 输入 | 50Ω | 副天线 |
| Debug | 待定 | - | SWD/UART | 双向 | 3.3V | 调试/产测 |
### 4.11 存储、电源与调试接口
| 项目 | 规格要求 |
|---|---|
| eMMC | 16GB支持Raw IMUGNSS观测值POS数据和日志连续记录 |
| 掉电检测 | 支持PWR_FAIL/PVD/ADC等方式触发安全关文件 |
| 保持供电 | 保持时间200ms或按实测文件系统flush时间确定 |
| SWD/JTAG | 必须保留调试口 |
| Debug UART | 必须保留调试串口或维护口 |
| 关键测试点 | 12V5V3V31V8PPSSPIUARTDRDYReset |
| 产测接口 | 支持自动化烧录版本查询接口遍历出厂校验 |
---
## 5. 电气规格 EE
### 5.1 电源与保护
| 项目 | 产品版规格 | 原型机状态 | 评审要求 |
|---|---|---|---|
| 输入电压 | 936V DC | 可12V调试 | 原理图必须说明差异 |
| 反接保护 | 必须 | 若无则P0/P1 | 投板前关闭 |
| 过压保护 | 必须 | 待确认 | 电源入口TVS/保护 |
| 浪涌/EFT | 必须考虑 | 待确认 | EMC预扫前完成 |
| 保险/限流 | 必须 | 待确认 | 保护电流路径 |
| 电源滤波 | 必须 | 待确认 | DCDC前后滤波 |
| IMU低噪声供电 | 建议必须 | 待确认 | 独立LDO/滤波 |
| GNSS天线供电 | 必须明确 | 待确认 | 电压电流短路保护 |
| 掉电检测 | 必须 | 待确认 | PWR_FAIL/PVD/ADC |
| 保持电源 | 必须 | 待确认 | 超级电容/UPS方案 |
| 测试点 | 必须 | 待确认 | 12V5V3V31V8GNSSPPS |
### 5.2 电源轨
| 电源轨 | 负载对象 | 规格要求 | 验收方式 |
|---|---|---|---|
| +5V | IMU/外设/中间电源 | 电流余量30%纹波满足负载要求 | 示波器 |
| +3V3 | MCU/IO/数字电路 | 电压偏差纹波上电时序满足MCU要求 | 电源测试 |
| +1V8 | MCU/存储/低压外设 | 满足负载和时序要求 | 电源测试 |
| +3V3_GNSS | GNSS/天线供电 | 独立滤波满足有源天线电流需求 | GNSS测试 |
| +3V3_NET | Ethernet PHY | 独立滤波满足PHY上电时序 | 网络测试 |
| IMU_LDO | IMU低噪声供电 | 建议低噪声LDO纹波满足IMU要求 | 纹波测试 |
### 5.3 接口电气规格
| 接口 | 电气要求 | 保护要求 |
|---|---|---|
| UART/TTL | 3.3V CMOS波特率可配置 | ESD/限流 |
| RS232 | 符合RS232电平 | ESD/浪涌 |
| RS422/RS485 | 差分通信终端匹配可配置 | ESD/共模保护/隔离可选 |
| Ethernet | 10/100Base-T差分阻抗控制 | 网络变压器ESD |
| PPS/Event | 明确电平有效沿脉宽输入容限 | ESD/限流/施密特可选 |
| GNSS RF | 50Ω支持有源天线供电 | RF ESD防雷可选 |
| USB | USB FS/HS按型号定义 | ESD/热插拔保护 |
### 5.4 功耗与热设计
| 项目 | 规格要求 | 验收方式 |
|---|---|---|
| 典型功耗 | TBD按最终BOM估算并实测 | 电源分析仪 |
| 最大功耗 | TBD所有接口高负载运行 | 电源分析仪 |
| 峰值电流 | 上电GNSS启动存储写入时需统计 | 示波器/电流探头 |
| 温升 | MCUPHY电源IMU附近温升不得影响精度 | 热像仪/温箱 |
| 散热路径 | 外壳导热铜皮散热热隔离IMU | PCB/结构评审 |
---
## 6. 机械、安装与标定规格
### 6.1 机械规格
| ID | 项目 | 规格要求 |
|---|---|---|
| MECH-001 | 外形尺寸 | 安装孔位重量按型号定义 |
| MECH-002 | 安装基准 | 明确IMU测量中心外壳安装基准船体坐标系 |
| MECH-003 | 坐标轴标识 | 外壳必须标注X/Y/Z或船艏方向 |
| MECH-004 | 连接器 | 防水防松防呆接口定义与用户手册一致 |
| MECH-005 | 散热 | 主控PHY电源存储温升不影响IMU精度 |
| MECH-006 | 防护 | 满足IP67或型号定义 |
| MECH-007 | 维护 | 便于现场连接状态识别数据导出返修定位 |
### 6.2 坐标系定义
| 坐标系 | 定义要求 |
|---|---|
| IMU坐标系 | 以IMU器件/模块测量轴为准明确X/Y/Z方向 |
| 设备坐标系 | 以外壳丝印和安装基准为准必须与文档一致 |
| 船体坐标系 | 建议X向船艏Y向右舷Z向下采用右手坐标系 |
| GNSS天线坐标 | /副天线相位中心位置必须记录 |
| 声呐坐标系 | 明确换能器参考点安装方向波束方向 |
| 输出坐标系 | NED/ENU/船体系/用户自定义输出必须说明 |
### 6.3 安装参数记录表
| 参数 | 内容 | 精度要求 | 记录方式 |
|---|---|---|---|
| IMU安装角 | Roll/Pitch/Yaw安装偏角 | TBD | 安装表 |
| IMU测量中心 | 相对船体参考点XYZ | mm级 | 安装表 |
| GNSS主天线杆臂 | 相对IMU/船体参考点XYZ | mm级 | 安装表 |
| GNSS副天线杆臂 | 相对主天线/IMU XYZ | mm级 | 安装表 |
| 声呐换能器杆臂 | 相对IMU XYZ | mm级 | 安装表 |
| 船体坐标系 | X/Y/Z方向定义 | 必须明确 | 图示+文字 |
| VRP点 | 船头船尾重心等 | mm级 | 配置表 |
| COG | 船体重心或升沉参考点 | mm级 | 配置表 |
### 6.4 安装检查清单
| 检查项 | 是否完成 | 验收说明 |
|---|---|---|
| 供电极性和输入电压检查 | | 936V或实验室12V |
| Web/以太网连接 | | 可访问配置页面 |
| IMU安装方向 | | X/Y/Z与船体坐标一致 |
| 主天线杆臂 | | IMU中心到主天线相位中心 |
| 副天线杆臂/基线 | | 主副天线基线方向和距离 |
| 声呐杆臂 | | IMU到换能器参考点 |
| COM输出 | | PASHR/TSS1/NMEA/Binary |
| PPS/Event | | 有效沿和时间戳正常 |
| 数据记录 | | Raw IMU/GNSS/POS/日志 |
| 初始化状态 | | 姿态导航航向时间均有效 |
| 日志下载 | | Web/FTP可下载 |
| 版本确认 | | 硬件软件配置校准版本一致 |
### 6.5 多波束集成与安装校准
| 项目 | 要求 |
|---|---|
| IMU坐标系 | 明确X/Y/Z方向与外壳丝印软件坐标系一致 |
| 船体坐标系 | 建议采用右手坐标系明确船艏右舷下方向 |
| 声呐坐标系 | 明确声呐换能器安装角和参考点 |
| 杆臂测量 | IMU主天线IMU副天线IMU声呐参考点必须实测 |
| 安装偏角 | Roll/Pitch/Yaw Boresight必须记录 |
| Patch Test | 支持外场Patch Test校准Roll/Pitch/Yaw安装误差 |
| 多点输出 | 支持至少3个VRP输出如IMU点声呐点船体参考点 |
| 线缆接线 | 电源COMPPS/EventEthernetGNSS天线必须有接线图 |
| 集成检查 | 与HYPACK/HYSWEEPQimeraCARIS等软件联调时应确认协议时间坐标系 |
---
## 7. 环境与可靠性规格
| ID | 项目 | 规格要求 | 验收方式 |
|---|---|---|---|
| ENV-001 | 防护等级 | IP67水深1m浸泡30min长期浸泡另定义IP68 | 气密/浸水 |
| ENV-002 | 工作温度 | -40℃~+85或按型号定义 | 高低温循环 |
| ENV-003 | 存储温度 | -40℃~+85或更宽 | 温箱 |
| ENV-004 | 湿热 | 满足船载高湿环境 | 湿热试验 |
| ENV-005 | 振动 | 符合IEC 60945或项目定义 | 振动台 |
| ENV-006 | 冲击 | 满足运输安装拍浪冲击 | 冲击测试 |
| ENV-007 | 盐雾 | 海洋环境适用 | 盐雾测试 |
| ENV-008 | 长稳运行 | 室温/高温/低温长时间运行无严重异常 | 24h/72h/168h |
| ENV-009 | EMC预扫 | 样机阶段完成关键接口预扫 | EMC预扫 |
| ENV-010 | 线缆可靠性 | 防水防松屏蔽拉力满足外场要求 | 线缆测试 |
---
## 8. 认证与合规规格
### 8.1 目标认证清单
| ID | 认证项 | 目标要求 | 阶段 |
|---|---|---|---|
| CERT-001 | CE | EMC安全RoHS等 | 产品发布 |
| CERT-002 | EMC | 辐射传导静电浪涌EFT抗扰度 | 样机/定型 |
| CERT-003 | IEC 60945 | 船用电子环境电磁振动等 | 船载版本 |
| CERT-004 | IP67/IP68 | 防水防尘等级 | 结构定型 |
| CERT-005 | RoHS/环保 | 物料环保合规 | 量产 |
| CERT-006 | 海洋测绘适配 | IHO S-44GB 12327GB/T 42640JT/T 790等 | 产品验证 |
| CERT-007 | 软件质量 | MISRA C静态分析单元测试版本追溯 | 软件发布 |
| CERT-008 | 计量/校准 | IMU/GNSS/姿态/升沉校准报告 | 出厂/交付 |
| CERT-009 | FCC/国内无线相关 | 仅当包含相关无线模块时适用 | 选配 |
### 8.2 认证与预认证设计输入
| 认证风险 | 设计要求 |
|---|---|
| EMC不过 | 电源入口串口网口PPSGNSS RF设计ESD/滤波/屏蔽 |
| 防水不过 | 外壳密封圈连接器防水堵头气密测试前置 |
| 振动不过 | IMU连接器大器件线缆固定抗振 |
| 静电损坏 | 所有外部接口必须有ESD保护 |
| 认证样机不一致 | 原理图PCBBOM结构线缆固件版本冻结 |
| 资料不完整 | 说明书电气原理图BOM关键器件认证测试报告齐备 |
---
## 9. 生产制造、出厂校准与交付
### 9.1 生产制造规格
| ID | 项目 | 规格要求 | 验收方式 |
|---|---|---|---|
| MFG-001 | 烧录 | 支持固件烧录Boot配置版本校验 | 产测工装 |
| MFG-002 | 配置加载 | 支持出厂配置IMU标定参数GNSS参数网络参数写入 | 配置校验 |
| MFG-003 | 序列号 | 每台设备唯一SN硬件版本软件版本校准版本 | 标签/系统查询 |
| MFG-004 | 出厂测试 | 电源IMUGNSSPPSCOMEthernet存储全检 | 出厂报告 |
| MFG-005 | 标定 | IMU误差参数安装角温补杆臂默认值 | 标定报告 |
| MFG-006 | 老化 | 常温/高温老化按产品等级定义 | 老化记录 |
| MFG-007 | 包装运输 | 防潮防震防静电运输标识 | 包装检验 |
| MFG-008 | 交付清单 | 主机天线电源线数据线网线安装件说明书校准报告 | 交付检查 |
### 9.2 出厂校准证书要求
| 校准项 | 内容 |
|---|---|
| 设备信息 | SN硬件版本软件版本BOM版本校准日期 |
| IMU标定 | 零偏比例因子非正交温度补偿参数 |
| 安装角 | 设备坐标系与IMU坐标系偏差 |
| GNSS基线 | /副天线基线长度与方向 |
| 姿态校准 | Roll/Pitch/Heading验证结果 |
| 升沉校准 | 摇摆台或标准数据集验证结果 |
| 时间同步 | PPS/PTP测试结果 |
| 出厂结论 | 合格/不合格限制说明签字 |
### 9.3 交付与包装清单
| 类别 | 交付物 |
|---|---|
| 主设备 | 姿态系统主机 |
| 天线 | GNSS主天线GNSS副天线 |
| 线缆 | 电源线COM线以太网线PPS/Event线GNSS天线线缆 |
| 安装件 | 安装支架螺钉防水堵头标识贴 |
| 文档 | 产品说明书安装配置手册接口控制文档协议说明书 |
| 软件 | Web配置工具固件升级工具日志解析工具后处理导出工具 |
| 证书 | 出厂测试报告校准证书合格证 |
| 包装 | 防震箱防静电袋防潮包装箱单 |
### 9.4 维护升级与服务支持
| 项目 | 规格要求 |
|---|---|
| 固件升级 | 支持Web/维护口升级升级失败可回滚或恢复 |
| 配置备份 | 支持导出/导入配置 |
| 日志导出 | 支持按时间模块错误等级导出日志 |
| 故障诊断 | 提供错误码表状态灯说明Web诊断页面 |
| 返修数据 | 支持SN硬件版本软件版本运行日志配置文件导出 |
| 维护手册 | 单独形成故障诊断与维护手册 |
---
## 10. 测试与验收规格
### 10.1 测试层级
| 层级 | 测试对象 | 测试内容 |
|---|---|---|
| 单元测试 SWE.4 | 算法BSP协议文件系统 | 函数级模块级正确性 |
| 板级测试 | 原理图/PCB/接口 | 上电功耗信号电源通信 |
| HIL测试 | 嵌入式系统 | 传感器模拟数据回放状态机异常注入 |
| 实验室测试 | 转台/摇摆台/温箱 | 姿态升沉温度时间同步 |
| 外场测试 | 车载/船载/正式 | GNSSRTK航向升沉声呐联调 |
| 认证测试 | EMC/IP/振动/环境 | 合规验证 |
| 回归测试 | 版本发布前 | 缺陷修复和核心功能复测 |
| 出厂测试 | 量产设备 | 供电接口传感器协议存储校准 |
### 10.2 核心测试矩阵
| 需求ID | 测试项 | 工具/环境 | 通过标准 |
|---|---|---|---|
| SYS-PERF-001 | 姿态精度 | 转台/光纤惯导真值 | RMS满足指标 |
| SYS-PERF-002 | 航向精度 | 双天线基线场/跑船 | 满足基线对应指标 |
| SYS-PERF-003 | 实时升沉 | 六自由度摇摆台 | 5cm或5% |
| SYS-PERF-009 | PPS时间同步 | 示波器/逻辑分析仪 | 5µs |
| SYS-PERF-010 | PTP时间同步 | PTP主钟/从钟 | 目标1µs |
| HW-IMU-007 | IMU连续性 | 长稳采集脚本 | 无未解释丢帧/时间戳回退 |
| SWE-LOG-005 | 掉电保护 | 可控电源/写入负载 | 文件系统不损坏 |
| HW-GNSS-002 | 双天线定向 | RTK/双天线环境 | 航向稳定 |
| SWE-PROT-001 | 协议输出 | 串口抓包/协议解析器 | 字段频率校验正确 |
| CERT-002 | EMC | EMC实验室 | 满足目标标准 |
| ENV-001 | 防水 | 气密/浸水 | 无进水无异常 |
### 10.3 正式测试准入清单
| 类别 | 准入条件 | 是否必须 |
|---|---|---|
| 硬件 | 原理图V2评审完成P0关闭P1有结论 | 必须 |
| 电源 | 输入保护供电稳定无异常发热 | 必须 |
| 防护 | 外壳连接器线缆防水堵头确认 | 必须 |
| IMU | 数据连续时间戳单调无未解释跳帧 | 必须 |
| GNSS | 双天线RTK状态PPS输出正常 | 必须 |
| PPS | 捕获稳定有示波器/逻辑分析仪记录 | 必须 |
| COM | 至少一路姿态/POS输出稳定 | 必须 |
| 网络 | Web/FTP/Ping可用日志可下载 | 必须 |
| 存储 | Raw/POS数据可保存断电不损坏 | 必须 |
| 日志 | 能观察状态错误码时间戳算法输出 | 必须 |
| 软件 | 文件系统COM配置数据打包输出基本可用 | 必须 |
| 算法 | 升沉/松组合可基础联合运行并有log | 必须 |
| 风险 | 遗留问题有负责人风险接受和回退方案 | 必须 |
### 10.4 原理图评审清单
| 模块 | 必查项 | 通过标准 |
| ------- | ----------------------------------------- | ------------ |
| 需求追溯 | 每个关键电路来源于PRD/HRS/RTM/问题单 | 无来源设计需补依据 |
| MCU最小系统 | 电源复位BOOT时钟SWDVBAT完整 | 可稳定启动烧录调试 |
| IMU接口 | ADIS16488STIM300SCH1633供电接口电平复位同步明确 | 每种IMU接入路径清晰 |
| GNSS模块 | 双天线PPSRTK/PVT/ERR串口完整 | 支持定位定向状态监测 |
| PPS | 接入MCU定时器捕获通道 | 不仅是普通GPIO |
| PTP | ETH MAC/PHY硬件能力明确 | 不明确则列风险 |
| 串口COM | RS232/RS422/RS485模式默认配置终端匹配明确 | 可配置可测试 |
| 电源输入 | 936V反接保险浪涌TVS滤波完整 | 满足船载环境 |
| 掉电保护 | 掉电检测保持供电文件安全关闭链路完整 | 支持数据记录安全 |
| 存储 | eMMC供电接口写入能力满足需求 | 支持Raw/PPK记录 |
| 外部接口 | FPCRJ45串口PPSEventGNSS天线定义清楚 | 线缆和结构可落地 |
| ESD/EMC | 外部接口具备保护设计 | 保护器件靠近接口侧 |
| 调试/产测 | SWDDebug UART电源测试点PPS测试点保留 | 可调试可产测 |
### 10.5 PCB评审清单
| 模块 | 必查项 | 通过标准 |
|---|---|---|
| IMU布局 | 靠近机械安装基准远离DCDCPHY高热器件 | 降低热振动噪声影响 |
| IMU坐标轴 | PCB外壳软件坐标系一致 | 丝印和文档一致 |
| GNSS射频 | RF走线50Ω阻抗控制远离噪声源 | RF路径短参考地连续 |
| PPS/Event | 走线短远离高速线和开关电源 | 有测试点回流路径完整 |
| 以太网 | RMII差分线网络变压器RJ45符合规范 | 差分阻抗长度地参考满足 |
| 高速存储 | eMMC/SDRAM走线满足长度阻抗参考平面要求 | 无明显高速信号风险 |
| 电源布局 | DCDC回路紧凑敏感电源滤波隔离 | 纹波和EMI可控 |
| 地平面 | 无关键回流路径中断 | 关键信号下方连续地 |
| 外部接口 | 连接器方向间距防呆防水符合结构 | 装配无干涉 |
| 测试点 | 3V35V1V8PPSSPIUARTDRDYReset可测 | 探针可接触 |
| 热设计 | MCUPHY电源eMMC有散热路径 | 不影响IMU/GNSS |
---
## 11. 需求追溯与风险闭环
### 11.1 需求ID规则
| 分类 | ID前缀 | 示例 |
|---|---|---|
| 系统性能 | SYS-PERF | SYS-PERF-001 |
| 软件 | SWE | SWE-ALG-001 |
| BSP/驱动 | BSP | BSP-SPI-001 |
| 硬件 | HW | HW-IMU-001 |
| 电气 | EE | EE-PWR-001 |
| 机械 | MECH | MECH-001 |
| 环境 | ENV | ENV-001 |
| 认证 | CERT | CERT-001 |
| 制造 | MFG | MFG-001 |
| 测试 | TEST | TEST-SYS-001 |
### 11.2 RTM追溯字段
| 字段 | 要求 |
|---|---|
| PRD需求ID | 全局唯一 |
| 需求分类 | SYS/SWE/BSP/HW/EE/MECH/ENV/CERT/MFG/TEST |
| 功能描述 | 描述物理表现或业务目的不写代码逻辑 |
| 核心性能/约束指标 | 必须量化有单位 |
| 优先级 | P0/P1/P2 |
| 所属子系统 | 算法BSP硬件电源通信存储等 |
| 运行核心 | CM4/CM7/双核/N/A |
| 依赖硬件接口 | 具体外设管脚接口 |
| 详细设计文档 | 对应文档章节 |
| 测试阶段 | 单元测试HIL转台外场认证 |
| 测试用例ID | 对应测试管理平台 |
| 验收标准DoD | 触发条件 + 动作 + 可观测断言 |
| 风险点 | 架构师/负责人视角列出最担心的问题 |
### 11.3 风险清单
| 风险ID | 风险描述 | 等级 | 应对措施 | 关闭标准 |
|---|---|---|---|---|
| RISK-001 | STIM300存在跳帧/粘包风险 | | 独立接口帧解析连续采集统计 | 24h无未解释丢帧 |
| RISK-002 | PTP 1µs目标未硬件验证 | | 确认MAC/PHY硬件时间戳能力 | PTP测试报告 |
| RISK-003 | eMMC掉电损坏风险 | | 掉电检测+保持供电+flush/sync | 断电测试通过 |
| RISK-004 | COM默认协议不清 | | 输出COM矩阵并冻结默认配置 | 串口抓包通过 |
| RISK-005 | 936V电源保护不足 | | 增加反接浪涌保险滤波 | 电源测试通过 |
| RISK-006 | IMU坐标轴/安装角不清 | | 坐标轴图+安装表+标定流程 | 安装评审通过 |
| RISK-007 | GNSS天线供电/保护不足 | | 明确供电电流短路保护ESD | 天线测试通过 |
| RISK-008 | 原理图与测试点不足 | | 建立测试点清单并PCB落实 | 板级测试通过 |
---
## 12. 配套文档与附录体系
### 12.1 配套文档包
| 文档 | 作用 |
|---|---|
| 硬件需求规格书 HRS | 细化主控IMUGNSS电源接口结构认证产测 |
| 软件需求规格书 SRS | 细化双核架构BSP算法协议日志质量要求 |
| 接口控制文档 ICD | 定义所有连接器Pin协议帧格式电平时序 |
| 安装与配置手册 | 定义安装基准杆臂天线GAMSWeb配置 |
| 协议输出说明书 | 定义NMEAPASHRPRDIDTSS1Binary POS |
| Web/网络配置指南 | 定义IP端口Web页面FTPPTPNTRIP |
| 出厂测试与校准规范 | 定义产测标定老化SN交付报告 |
| 故障诊断与维护手册 | 定义错误码状态灯日志导出升级返修定位 |
| 认证与合规计划 | 定义EMCIP67振动温度RoHS船用标准验证 |
| 正式测试方案 | 定义外场/船测目标步骤数据记录和回退方案 |
### 12.2 附录列表
| 附录 | 内容 |
|---|---|
| 附录A | 系统总体框图 |
| 附录B | 软件架构图 |
| 附录C | 硬件框图 |
| 附录D | 电源树 |
| 附录E | 接口定义表 |
| 附录F | COM口协议输出矩阵 |
| 附录G | IMU兼容矩阵 |
| 附录H | GNSS天线与基线安装说明 |
| 附录I | PPS/PTP/Event时间同步链路图 |
| 附录J | 环境与认证测试矩阵 |
| 附录K | 出厂测试清单 |
| 附录L | RTM需求追溯矩阵 |
| 附录M | 风险清单与TBD项 |
| 附录N | 竞品指标对标表 |
| 附录O | 原理图评审清单 |
| 附录P | PCB评审清单 |
| 附录Q | 正式测试准入清单 |
| 附录R | 安装参数记录表 |
| 附录S | 连接器Pinout |
| 附录T | Web配置页面需求 |
| 附录U | 二进制协议包分类 |
---
## 13. 自定义二进制协议包分类建议
> 说明:不照搬任何竞品私有协议,仅借鉴“状态包、配置包、原始数据包、导航结果包、诊断包”的分类方法。
| 包类型 | 内容 | 用途 |
|---|---|---|
| System State | 系统状态错误码滤波状态BIT状态 | 诊断/监控 |
| Time | UTC/GPS时间PPS状态PTP状态 | 时间同步 |
| Raw IMU | 角速度加速度温度状态时间戳 | 算法回放 |
| GNSS PVT | 经纬高速度RTK状态星数DOP | 导航输入/输出 |
| GNSS Orientation | 双天线航向基线长度航向状态 | 航向融合 |
| Attitude | Roll/Pitch/Heading标准差 | 实时输出 |
| Velocity | N/E/D速度船体系速度 | 导航输出 |
| Heave | 实时升沉延迟升沉垂向速度 | 多波束补偿 |
| Vessel Motion | 多参考点运动状态 | VRP输出 |
| Raw GNSS | 原始观测值星历RTCM | PPK/后处理 |
| DVL | 水下速度状态质量 | 可选扩展 |
| Config | COM网络杆臂安装角GNSS配置 | 参数管理 |
| Diagnostics | 丢帧CRC存储PTPPPS温度 | 现场诊断 |
---
## 14. 正式发布冻结条件
| 阶段 | 冻结条件 |
|---|---|
| 规格冻结 | P0/P1需求清晰TBD项不影响当前阶段 |
| 原理图冻结 | P0问题关闭P1有结论或风险接受 |
| PCB冻结 | 关键布局阻抗ESD电源RFIMU位置完成评审 |
| 软件版本冻结 | 静态扫描单元测试核心功能测试通过 |
| 测试版本冻结 | 正式测试前准入清单通过 |
| 产品发布冻结 | 认证出厂测试用户手册交付清单完成 |
---

View File

@@ -0,0 +1,504 @@
# 姿态系统硬件规格书
> 文档定位:本文档为船载/水下高精度姿态系统硬件规格书用于指导硬件原理图设计、PCB设计、BOM选型、接口定义、硬件评审、板级调试、产测和硬件验收。本文档不替代产品需求文档、软件详细设计文档、算法设计文档和用户接口协议文档。
---
## 文档控制信息
| 项目 | 内容 |
| ----- | -------------------------- |
| 文档名称 | 姿态系统硬件规格书 |
| 文档编号 | HWS-POSE-2026-V1.0 |
| 产品名称 | 船载/水下高精度组合航姿系统 |
| 产品型号 | |
| 适用阶段 | 原型机 / 工程样机 / 正式测试版 / 产品发布版 |
| 硬件版本 | HW_Vx.x |
| 原理图版本 | SCH_Vx.x |
| PCB版本 | PCB_Vx.x |
| BOM版本 | BOM_Vx.x |
| 编写部门 | 硬件 / 嵌入式 / 算法 / 测试 |
| 审核人 | 产品、硬件、嵌入式、算法、测试、质量、生产 |
| 文档状态 | 草稿 / 评审中 / 已冻结 / 已发布 |
| 密级 | 内部受控 |
### 版本记录
| 版本 | 日期 | 修改内容 | 修改人 | 评审结论 |
|---|---|---|---|---|
| V0.1 | 2026-05-22 | 根据产品规格模板重构为独立硬件规格书 | | |
| V0.9 | | 硬件评审稿 | | |
| V1.0 | | 硬件冻结版 | | |
---
## 1. 硬件设计目标
### 1.1 硬件定位
本硬件用于船载/水下高精度组合航姿系统,承载 IMU、GNSS、时间同步、通信、存储、电源保护、调试产测和外部接口等功能。硬件设计需要满足后续算法、嵌入式软件、Web配置、数据记录、FTP下载、串口协议输出、PPS/PTP/Event时间同步和外场测试要求。
### 1.2 硬件设计边界
| 类型 | 本文档覆盖 | 本文档不覆盖 |
|---|---|---|
| 覆盖内容 | 主控、IMU、GNSS、通信接口、存储、电源、保护、连接器、测试点、PCB约束、硬件验收 | 算法公式、协议字段详细定义、Web页面详细设计、上位机软件 |
| 设计输出 | 原理图、PCB、BOM、接口定义、硬件测试记录、硬件评审结论 | 软件详细设计、算法测试报告、用户手册 |
| 评审目标 | 是否能投板、是否满足接口和可靠性要求、是否存在P0硬件风险 | 产品商业定位、完整认证策略 |
### 1.3 当前硬件默认目标
| 项目 | 硬件目标 | 优先级 | 验收方式 |
| ----- | ------------------------------------ | --: | ----------------- |
| 输入电压 | 936V DC | P0 | 电源拉偏、反接、瞬断测试 |
| 主控 | STM32H747同级双核 MCU | P0 | 上电、烧录、双核启动、外设连通测试 |
| IMU兼容 | 支持 ADIS16488、STIM300、SCH1633 的硬件接入路径 | P0 | 连续采集、丢帧统计、逻辑分析仪 |
| GNSS | 支持多频多星座 RTK GNSS预留主/副双天线 | P0 | 定位、定向、PPS、RTCM测试 |
| PPS | 输入内阻100欧 | P0 | 万用表 |
| PTP | 以太网硬件链路需支持后续 PTP 验证 | P1 | PTP主从测试 |
| 通信 | Ethernet + 不少于4路COM + 调试口 | P0 | Ping、Web、FTP、串口抓包 |
| 存储 | 16GBeMMC | P0 | 连续写入、文件读取、断电恢复 |
| 掉电保护 | 支持掉电检测与保持供电,满足文件系统安全关闭 | P0 | 写入中断电测试 |
| 防护设计 | 产品版面向 IP67 结构和防水连接器 | P1 | 结构评审、气密/浸水测试 |
---
## 2. 硬件总体架构
### 2.1 系统框图
```mermaid
flowchart LR
PWR[9-36V DC 电源输入] --> PROT[保护/滤波/掉电检测]
PROT --> DCDC[DCDC/LDO 电源树]
DCDC --> MCU[STM32H747/H755 主控]
DCDC --> IMU[IMU: ADIS16488/STIM300/SCH1633]
DCDC --> GNSS[GNSS RTK 双天线模块]
DCDC --> PHY[Ethernet PHY]
DCDC --> EMMC[eMMC/存储]
IMU -->|SPI/UART/DRDY| MCU
GNSS -->|UART/RTCM/PPS/状态脚| MCU
MCU -->|RMII| PHY
PHY --> RJ45[网络接口/隔离变压器/RJ45]
MCU --> COM[RS232/RS422/RS485 COM接口]
MCU --> EVENT[PPS/Event 输入输出]
MCU --> DEBUG[SWD/Debug UART/产测接口]
MCU --> EMMC
```
### 2.2 硬件模块划分
| 模块 | 主要功能 | 关键约束 |
| ------ | -------------------------- | --------------------------- |
| 主控模块 | 双核运行、外设控制、时间戳、网络、存储、协议输出 | 时钟、复位、BOOT、调试口必须可靠 |
| IMU模块 | 采集角速度、加速度、温度、状态信息 | 低噪声供电、稳定安装基准、同步信号明确 |
| GNSS模块 | 定位、定向、RTK、PPS、RTCM输入 | 双天线射频、PPS捕获、天线供电保护 |
| 时间同步模块 | PPS、PTP、Event Input、IMU时间戳 | PPS/Event优先使用硬件捕获不仅作普通GPIO |
| 通信模块 | Ethernet、COM、调试口、可选USB/CAN | 外部接口必须有ESD/浪涌/共模保护 |
| 存储模块 | Raw IMU、GNSS观测值、POS数据、日志记录 | 写入带宽、掉电保护、文件系统安全 |
| 电源模块 | 宽压输入、电源转换、保护、保持供电 | 反接、浪涌、过流、纹波、上电时序 |
| 结构接口模块 | 防水连接器、安装孔、坐标轴标识 | 与IP67、防呆、防松、线缆装配一致 |
---
## 3. 主控与最小系统规格
### 3.1 MCU选型要求
| ID | 项目 | 规格要求 | 优先级 | 验收方式 |
| ---------- | ---- | ----------------------------------------------------- | --: | ------- |
| HW-MCU-001 | 主控型号 | STM32H747、STM32H755 或同级双核 MCU | P0 | BOM评审 |
| HW-MCU-002 | 内核能力 | CM7 + CM4具备 FPU、DMA、Timer、ETH、SPI、UART、SDMMC/FMC 等资源 | P0 | 外设资源表评审 |
| HW-MCU-004 | 复位 | NRST、上电复位、外部复位、看门狗复位路径明确 | P0 | 复位测试 |
| HW-MCU-005 | BOOT | BOOT配置明确避免量产误进入系统Boot | P0 | 启动测试 |
| HW-MCU-006 | 调试 | 保留 SWD/JTAG、Debug UART、必要测试点 | P0 | 烧录调试测试 |
| HW-MCU-007 | 双核启动 | CM7/CM4启动、电源域、时钟域、共享内存资源不冲突 | P0 | 双核启动测试 |
### 3.2 MCU外设资源分配
| 功能 | 建议MCU资源 | 连接对象 | 备注 |
| ----------------- | ------------------------- | ----------------- | ------------------ |
| ADIS16488/SCH1633 | SPIx + EXTI + GPIO CS/RST | SPI IMU | SPI模式、字长、片选时序需确认 |
| STIM300 | USARTx + DMA + 可选同步输入 | STIM300 | 默认 UART/RS422 类接口 |
| GNSS数据 | USARTx + DMA | GNSS模块 | 支持配置、观测值、NMEA/私有协议 |
| RTCM输入 | USARTx 或 Ethernet | GNSS模块/网络 | 可来自COM或NTRIP |
| PPS捕获 | TIMx_CHx 输入捕获 | GNSS PPS | 必须硬件捕获 |
| Event输入/输出 | TIMx_CHx 或 EXTI | 声呐/外部设备 | 建议硬件捕获优先 |
| Ethernet | ETH MAC + RMII | PHY | 预留PTP验证能力 |
| 存储 | SDMMC/FMC | eMMC/SDNAND/其他 | 满足连续写入 |
| COM口 | USARTx + 收发器 | RS232/RS422/RS485 | 至少4路外部COM |
| Debug | SWD + USART | 调试器/维护口 | 量产和问题定位必须保留 |
---
## 4. IMU硬件规格
### 4.1 IMU兼容目标
| 项目 | ADIS16488 | SCH1633 | STIM300 |
|---|---|---|---|
| 默认定位 | 开发/验证IMU | 目标兼容IMU | 高性能/战术级IMU |
| 默认接口 | SPI | SPI | UART/RS422 |
| 数据就绪 | DRDY GPIO/EXTI | DRDY GPIO/EXTI | 串口帧到达/同步信号 |
| 复位控制 | MCU GPIO控制 | MCU GPIO控制 | 建议MCU可控或预留复位控制 |
| 同步方式 | DRDY/PPS对齐 | DRDY/PPS对齐 | 帧时间戳/PPS同步/外部同步 |
| 供电 | 按器件手册 | 按器件手册 | 按STIM300手册确认 |
| 电平 | 3.3V SPI为主 | 3.3V SPI为主 | RS422/TTL以实际器件版本确认 |
| 默认频率 | ≥200Hz目标支持更高 | ≥200Hz目标支持更高 | 按配置,需支持高频输出 |
| 关键风险 | SPI时序、DRDY、缓存同步 | 初始化、DRDY、数据有效性 | 粘包、跳帧、帧解析、时间戳 |
| 验收方式 | 连续采样无异常 | 连续采样无异常 | 帧号连续、时间戳单调、无未解释丢帧 |
### 4.2 IMU接口要求
| ID | 项目 | 规格要求 | 优先级 | 验收方式 |
| ---------- | ------------ | ------------------------------- | --: | ------ |
| HW-IMU-001 | IMU供电 | IMU电源应具备独立滤波优先使用低噪声LDO或低噪声电源支路 | P0 | 纹波测试 |
| HW-IMU-002 | SPI接口 | SPI信号完整性、时序、电平、片选和字长满足IMU手册 | P0 | 示波器 |
| HW-IMU-003 | UART/RS422接口 | STIM300接入路径明确收发器电平和终端匹配可验证 | P0 | 串口抓包 |
| HW-IMU-004 | DRDY | SPI类IMU的DRDY接入MCU EXTI或定时器捕获 | P0 | 示波器 |
| HW-IMU-005 | RESET | IMU复位脚应由MCU控制或保留硬件复位手段 | P1 | 复位测试 |
| HW-IMU-006 | 同步 | IMU数据时间戳与PPS/Event链路关系明确 | P0 | 周期抖动统计 |
| HW-IMU-007 | 测试点 | SPI、UART、DRDY、RESET至少预留可调试测试点 | P1 | 示波器探测 |
| HW-IMU-008 | 布局 | IMU靠近机械安装基准远离DCDC、PHY、高热器件 | P0 | PCB评审 |
### 4.3 IMU传感器指标记录表
| 指标项 | 当前要求 | 目标/高配要求 | 单位 | 数据来源 |
| -------- | --------- | ------- | ---------- | ------- |
| 陀螺量程 | ±450 | ±480 | °/s | 器件手册 |
| 加速度计量程 | ±18 | ±18 | g | 器件手册 |
| 陀螺零偏不稳定性 | TBD | 越小越好 | °/h | 器件手册 |
| 加计零偏不稳定性 | TBD | 越小越好 | mg | 器件手册 |
| 角随机游走 | 1σ | 越小越好 | °/√Hz | 器件手册 |
| 速度随机游走 | 1σ | 越小越好 | m/s/√Hz | 器件手册 |
| 噪声密度 | 0.063 | 按器件手册 | mg/√Hz rms | 器件手册 |
| 带宽 | 330 | 满足高频采样 | Hz | 器件手册/实测 |
| 温度范围 | -40℃~+85℃ | 工业级 | ℃ | 器件手册 |
| 温补 | 必须支持 | 全温补偿 | | 标定报告 |
---
## 5. GNSS与双天线硬件规格
### 5.1 GNSS基本要求
| ID | 项目 | 规格要求 | 优先级 | 验收方式 |
| ----------- | ------ | ------------------------------- | --: | ----------- |
| HW-GNSS-001 | 模块 | 支持多频多星座RTK-GNSS | P0 | 模块资料/BOM评审 |
| HW-GNSS-002 | 双天线 | 支持主天线和副天线,用于定位和定向 | P0 | 双天线定向测试 |
| HW-GNSS-003 | 数据接口 | 支持UART收发满足GNSS配置、观测值和状态输出 | P0 | 串口抓包 |
| HW-GNSS-004 | RTCM输入 | 支持串口或网络RTCM差分输入 | P1 | RTK固定测试 |
| HW-GNSS-005 | PPS输出 | GNSS PPS接入MCU定时器捕获通道 | P0 | 示波器/逻辑分析仪 |
| HW-GNSS-006 | 状态脚 | RTK/PVT/ERR状态脚接入MCU GPIO定义有效电平 | P1 | 状态切换测试 |
| HW-GNSS-007 | 天线供电 | 支持有源天线供电、短路保护、过流保护、ESD保护 | P0 | 短路/电流测试 |
| HW-GNSS-008 | 射频走线 | GNSS RF按50Ω阻抗控制远离高速数字和开关电源噪声 | P0 | PCB评审/VNA可选 |
### 5.2 双天线基线要求
| 项目 | 规格要求 | 验收方式 |
| ------ | ---------------------------- | ------ |
| 主天线 | 作为定位主天线输出位置、速度、PPS、观测值 | 定位测试 |
| 副天线 | 与主天线构成双天线基线,用于航向解算 | 定向测试 |
| 基线长度 | 支持配置2m/4m或实测基线长度 | 基线测量 |
| 基线向量 | 支持输入主天线至副天线在船体坐标系下的XYZ向量 | 配置检查 |
| 基线测量精度 | 建议实测误差≤5mm作为高级航向性能前提 | 安装测量记录 |
| 航向状态 | 能区分固定解、浮动解、无解、低SNR、周跳、多路径等状态 | 状态日志 |
| 异常报警 | 支持天线开路/短路、基线变化异常、RTK失效报警 | 故障注入 |
### 5.3 GNSS选型记录表
| GNSS方案 | 星座频点 | 最大更新率 | RTK精度 | 授时精度 | RTCM支持 | 当前状态 |
| ---------- | ------------ | -----: | ------ | ------ | ------------- | ----- |
| K922 | 待补 | 待补 | 待补 | 待补 | RTCM v3.x | 当前原型机 |
| F9P/X20P类 | 多星座双频 | 25Hz级 | cm级 | ns级 | RTCM v3.x | 参考 |
| Mosaic X5类 | 多星座多频 | 100Hz级 | cm级 | <20ns级 | RTCM v2/v3 | 高配参考 |
| BD992类 | 多星座多频/L-band | 50Hz级 | mm/cm级 | ns级 | RTCM/CMR/CMR+ | 高配参考 |
---
## 6. 时间同步硬件规格
### 6.1 PPS/PTP/Event/IMU时间链路
| 同步对象 | 来源 | 硬件路径 | 精度目标 | 优先级 | 验收方式 |
| ----------- | ------------ | ------------------ | ------------ | --: | --------- |
| PPS | GNSS模块 | PPS MCU TIM输入捕获 | 捕获误差5µs | P0 | 示波器/逻辑分析仪 |
| PTP | Ethernet | ETH MAC/PHY硬件时间戳能力 | 目标1µs需实测冻结 | P1 | PTP主从测试 |
| IMU时间戳 | IMU DRDY/串口帧 | EXTI/TIM/UART DMA | TBD需统计周期方差 | P0 | 连续采样统计 |
| Event Input | 外部声呐/设备 | Event TIM输入捕获优先 | TBD目标微秒级 | P1 | 脉冲发生器测试 |
| POS输出时间 | 系统时间 | 协议输出字段 | 与PPS时间基准一致 | P1 | 协议抓包 |
**强制要求PPS不允许仅作为普通GPIO状态读取。产品版应优先接入MCU硬件捕获通道并保留PPS测试点。**
### 6.2 Event接口要求
| ID | 项目 | 规格要求 | 优先级 |
|---|---|---|---:|
| HW-TIME-001 | 电平 | 明确支持3.3V/5V/隔离输入中的一种或多种 | P1 |
| HW-TIME-002 | 有效沿 | 支持配置上升沿/下降沿硬件默认状态明确 | P1 |
| HW-TIME-003 | 输入保护 | 外部输入必须具备ESD限流和过压保护 | P0 |
| HW-TIME-004 | 捕获资源 | 优先接入定时器捕获通道避免仅靠软件轮询 | P0 |
| HW-TIME-005 | 测试点 | Event信号链路应可通过示波器测试 | P1 |
---
## 7. 通信接口硬件规格
### 7.1 COM口默认配置
| 端口 | 默认方向 | 默认协议/用途 | 默认频率 | 建议波特率 | 硬件标准 | 优先级 |
| ---- | ----- | --------------------------- | -------: | -----------------: | ----- | --: |
| COM1 | 输出 | PASHR + PRDID | 100Hz | 460800最低115200需验算 | RS422 | P0 |
| COM2 | 输出 | TSS1 | 100Hz | 115200/460800 | RS232 | P0 |
| COM3 | 输入 | RTCM差分输入 | 按RTCM源 | 115200 | RS422 | P1 |
| COM4 | 输出/调试 | Debug Log / Binary POS / 备用 | 10100Hz | 115200/921600 | RS232 | P1 |
### 7.2 RS232/RS422要求
| 项目 | 规格要求 | 说明 |
| ----- | ------------------------------------ | ------------- |
| 收发器 | 根据接口标准选择专用收发器不允许直接用MCU GPIO外接到外部连接器 | 外部接口可靠性要求 |
| ESD保护 | 所有外部COM信号必须有ESD保护 | 保护器件靠近连接器 |
| 终端匹配 | RS422根据用途预留可配置终端电阻 | 通过0Ω/跳帽/焊盘配置 |
| 隔离 | 长线船载复杂地环境建议评估隔离 | 原型机可先非隔离但需列风险 |
### 7.3 以太网接口要求
| ID | 项目 | 规格要求 | 优先级 | 验收方式 |
| ---------- | ----- | ------------------------------ | --: | -------- |
| HW-ETH-001 | 物理层 | 10/100Base-TRMII连接MCU ETH MAC | P0 | Ping测试 |
| HW-ETH-002 | PHY | PHY型号地址复位时钟MDIO/MDC明确 | P0 | PHY寄存器读写 |
| HW-ETH-003 | 隔离变压器 | 网络隔离变压器应靠近RJ45接口侧差分路径短且对称 | P0 | PCB评审 |
| HW-ETH-004 | ESD保护 | RJ45侧预留以太网专用ESD/浪涌保护 | P0 | 原理图评审 |
| HW-ETH-005 | PTP能力 | 确认MCU MAC/PHY组合支持PTP验证所需硬件能力 | P1 | PTP测试 |
| HW-ETH-006 | 测试 | 支持PingWebFTPTCP/UDP实时输出 | P0 | 网络联调 |
---
## 8. 存储硬件规格
### 8.1 存储目标
| ID | 项目 | 规格要求 | 优先级 | 验收方式 |
| ---------- | ----- | ---------------------------------- | --: | ------- |
| HW-STO-001 | 存储介质 | eMMC或等效非易失存储建议容量16GB,原型机板载SDNANO | P0 | BOM评审 |
| HW-STO-002 | 接口 | SDMMC/FMC等接口需满足持续写入带宽 | P0 | 连续写入测试 |
| HW-STO-003 | 数据内容 | 支持Raw IMUGNSS观测值POS数据系统日志 | P0 | 文件解析 |
| HW-STO-004 | 掉电保护 | 与电源保持PWR_FAIL软件flush/sync闭环 | P0 | 写入中断电测试 |
| HW-STO-005 | 信号完整性 | 高速存储走线满足长度阻抗参考地要求 | P0 | PCB评审 |
| HW-STO-006 | 产测 | 支持容量识别读写测速坏块/错误统计 | P1 | 产测脚本 |
### 8.2 掉电保护硬件要求
| 项目 | 规格要求 |
| ---- | -------------------------------- |
| 掉电检测 | 支持PWR_FAILPVDADC采样或电源监控芯片等方式 |
| 触发时机 | 掉电信号必须早于系统电压跌落到不可安全写入的时间点 |
| 保持供电 | 目标200ms最终以文件系统flush/sync实测时间冻结 |
| 保持对象 | MCU存储电源监控和必要外设应保持到安全关闭完成 |
| 验收方法 | 写入过程中断电重启后文件系统不损坏文件可识别 |
---
## 9. 电源与保护规格
### 9.1 电源输入与保护
| 项目 | 产品版规格 | 原型机状态 | 优先级 | 评审要求 |
| -------- | -------- | ------- | ----: | ----------------------- |
| 输入电压 | 936V DC | 4.5~28V | P0 | 原理图必须说明差异 |
| 反接保护 | 必须支持 | | P0 | 投板前关闭 |
| 过压保护 | 必须支持 | | P0 | 电源入口TVS/保护 |
| 浪涌/EFT | 必须考虑 | | P1 | EMC预扫前完成 |
| 保险/限流 | 必须支持 | | P0 | 保护电流路径明确 |
| 电源滤波 | 必须支持 | | P0 | DCDC前后滤波 |
| IMU低噪声供电 | 建议必须 | | P0/P1 | 独立LDO/滤波 |
| GNSS天线供电 | 必须明确 | | P0 | 电压电流短路保护 |
| 掉电检测 | 必须支持 | | P0 | PWR_FAIL/PVD/ADC |
| 保持电源 | 必须支持 | | P0 | 超级电容/UPS方案 |
| 测试点 | 必须预留 | | P0 | 12V5V3V31V8GNSSPPS |
### 9.2 电源轨定义
| 电源轨 | 负载对象 | 规格要求 | 验收方式 |
| -------- | ------------ | ------------------- | ------ |
| VIN | 外部输入 | 936V DC具备保护和滤波 | 电源拉偏 |
| +5V | IMU/外设/中间电源 | 电流余量30%纹波满足负载要求 | 示波器 |
| VDD_CORE | MCU/IO/数字电路 | 电压偏差纹波上电时序满足MCU要求 | 电源测试 |
| VDD_GNSS | GNSS/天线供电 | 独立滤波满足有源天线电流需求 | GNSS测试 |
| VDD_NET | Ethernet PHY | 独立滤波满足PHY上电时序 | 网络测试 |
| VDD_IMU | IMU低噪声供电 | 建议低噪声LDO纹波满足IMU要求 | 纹波测试 |
### 9.3 功耗与热设计
| 项目 | 规格要求 | 验收方式 |
| ---- | ------------------------ | -------- |
| 典型功耗 | 5W | 电源分析仪 |
| 最大功耗 | 6W | 电源分析仪 |
| 峰值电流 | 0.3A(12V) | 示波器/电流探头 |
| 温升 | MCUPHY电源IMU附近温升不得影响精度 | 热像仪/温箱 |
| 散热路径 | 外壳导热铜皮散热热隔离IMU | PCB/结构评审 |
---
## 10. 外部连接器
| 接口 | 连接器型号 | Pin | 信号 | 方向 | 电平/标准 | 说明 |
| --------- | ------- | --: | ------------------- | --- | --------- | ----------- |
| 电源 | 雷莫1B | 2 | VIN | 输入 | 936V | 船载电源 |
| COM1 | 雷莫00B | 4 | TX_P/TX_N/RX_T/TX_N | 双向 | RS422 | PASHR/PRDID |
| COM2 | 雷莫00B | 2 | TX/RX | 双向 | RS232 | 可配置 |
| COM3 | 雷莫00B | 4 | TX_P/TX_N/RX_T/TX_N | 双向 | RS422 | TSS1 |
| COM4 | 雷莫00B | 2 | TX/RX | 双向 | RS232 | RTCM输入 |
| PPS | 雷莫00B | 2 | 1PPS/GND | 输出 | 3.3V | 时间同步 |
| DIOx | 雷莫00B | 4 | EVENT_IN/OUT | 双向 | 3.3V | 事件打戳/时间同步 |
| Ethernet | RJ45 | - | TX/RX | 双向 | 100Base-T | Web/FTP/PTP |
| GNSS ANT1 | SMA/TNC | - | RF_IN1 | 输入 | 50Ω | 主天线 |
| GNSS ANT2 | SMA/TNC | - | RF_IN2 | 输入 | 50Ω | 副天线 |
| Debug | SH125 | 8 | SWD/UART | 双向 | 3.3V | 调试/产测 |
---
## 11. PCB设计约束
### 11.1 PCB布局约束
| 模块 | 必查项 | 通过标准 |
|---|---|---|
| IMU布局 | 靠近机械安装基准远离DCDCPHY高热器件 | 降低热振动噪声影响 |
| IMU坐标轴 | PCB外壳软件坐标系一致 | 丝印和文档一致 |
| GNSS射频 | RF走线50Ω阻抗控制远离噪声源 | RF路径短参考地连续 |
| PPS/Event | 走线短远离高速线和开关电源 | 有测试点回流路径完整 |
| 以太网 | RMII差分线网络变压器RJ45符合规范 | 差分阻抗长度地参考满足 |
| 高速存储 | eMMC/SDRAM走线满足长度阻抗参考平面要求 | 无明显高速信号风险 |
| 电源布局 | DCDC回路紧凑敏感电源滤波隔离 | 纹波和EMI可控 |
| 地平面 | 无关键回流路径中断 | 关键信号下方连续地 |
| 外部接口 | 连接器方向间距防呆防水符合结构 | 装配无干涉 |
| 测试点 | 3V35V1V8PPSSPIUARTDRDYReset可测 | 探针可接触 |
| 热设计 | MCUPHY电源eMMC有散热路径 | 不影响IMU/GNSS |
### 11.2 STM32H7缓存/DMA硬件约束
| 项目 | 规格要求 | 说明 |
|---|---|---|
| Ethernet DMA | 描述符和DMA缓冲区应放置在DMA可访问内存区域 | 避免放入DTCM等DMA不可访问区域 |
| Cache一致性 | DMA缓冲区必须有明确的Cache策略 | 可使用MPU配置Non-cache区域或严格Clean/Invalidate |
| 对齐 | DMA缓冲区建议32字节对齐 | 适配DCache line |
| SDMMC DMA | SDMMC读写缓冲需确认内存区域对齐Cache维护 | 避免UNDERRUN/OVERRUN类问题 |
| NetX/FileX数据路径 | 网络包到存储写入如跨DMA域需评估是否复制到安全缓冲区 | 原型机已暴露相关风险 |
---
## 12. 原理图评审清单
| 模块 | 必查项 | 通过标准 |
|---|---|---|
| 需求追溯 | 每个关键电路来源于需求问题单或接口定义 | 无来源设计需补依据 |
| MCU最小系统 | 电源复位BOOT时钟SWDVBAT完整 | 可稳定启动烧录调试 |
| IMU接口 | ADIS16488STIM300SCH1633供电接口电平复位同步明确 | 每种IMU接入路径清晰 |
| GNSS模块 | 双天线PPSRTK/PVT/ERR串口完整 | 支持定位定向状态监测 |
| PPS | 接入MCU定时器捕获通道 | 不仅是普通GPIO |
| PTP | ETH MAC/PHY硬件能力明确 | 不明确则列风险 |
| 串口COM | RS232/RS422/RS485模式默认配置终端匹配明确 | 可配置可测试 |
| 电源输入 | 936V反接保险浪涌TVS滤波完整 | 满足船载环境 |
| 掉电保护 | 掉电检测保持供电文件安全关闭链路完整 | 支持数据记录安全 |
| 存储 | eMMC供电接口写入能力满足需求 | 支持Raw/PPK记录 |
| 外部接口 | FPCRJ45串口PPSEventGNSS天线定义清楚 | 线缆和结构可落地 |
| ESD/EMC | 外部接口具备保护设计 | 保护器件靠近接口侧 |
| 调试/产测 | SWDDebug UART电源测试点PPS测试点保留 | 可调试可产测 |
---
## 13. 板级调试与硬件验收
### 13.1 上电前检查
| 检查项 | 通过标准 | 记录 |
| ------ | --------------- | --- |
| 外观检查 | 无短路虚焊反件错件 | |
| 电源输入阻抗 | VIN对GND无明显短路 | |
| 关键电源阻抗 | 5V3V31V8无明显短路 | |
| BOOT配置 | 启动模式符合设计 | |
| 调试接口 | SWD/JTAG可连接 | |
| 连接器方向 | 防呆丝印线序一致 | |
### 13.2 上电调试项目
| ID | 测试项 | 工具/环境 | 通过标准 |
|---|---|---|---|
| TEST-HW-001 | 电源轨测试 | 示波器/万用表 | 电压纹波上电时序正常 |
| TEST-HW-002 | MCU启动 | 调试器 | 可烧录可运行复位正常 |
| TEST-HW-003 | IMU通信 | 逻辑分析仪/串口工具 | 能读取数据频率稳定 |
| TEST-HW-004 | GNSS通信 | 串口工具/天线环境 | 有定位输出PPS有效 |
| TEST-HW-005 | PPS捕获 | 示波器/逻辑分析仪 | PPS边沿与捕获计数稳定 |
| TEST-HW-006 | Ethernet | 网线/交换机/PC | Ping稳定Web/FTP可用 |
| TEST-HW-007 | COM输出 | 串口工具 | PASHR/TSS1/Debug输出稳定 |
| TEST-HW-008 | 存储读写 | 文件系统测试 | 连续读写无错误 |
| TEST-HW-009 | 掉电保护 | 可控电源 | 写入断电后文件系统不损坏 |
| TEST-HW-010 | 温升 | 热像仪 | 高负载运行无异常热点 |
### 13.3 正式投板准入条件
| 类别 | 准入条件 | 是否必须 |
|---|---|---|
| 原理图 | P0问题关闭P1问题有明确风险接受或整改计划 | 必须 |
| PCB | 关键接口阻抗回流电源测试点评审完成 | 必须 |
| 电源 | 输入保护供电稳定无异常发热风险 | 必须 |
| IMU | 接入路径供电同步坐标轴方向明确 | 必须 |
| GNSS | 双天线PPSRTCM天线供电保护明确 | 必须 |
| 通信 | COMEthernetDebug产测接口定义明确 | 必须 |
| 存储 | 存储接口和掉电保护链路明确 | 必须 |
| 结构 | 连接器安装孔坐标轴防水方案无明显冲突 | 必须 |
| BOM | 关键器件可采购替代料策略明确 | 必须 |
---
## 14. 风险清单
| 风险ID | 风险项 | 影响 | 等级 | 规避措施 | 状态 |
|---|---|---|---:|---|---|
| R-HW-001 | IMU接口兼容不完整 | 无法同时兼容ADIS16488/STIM300/SCH1633 | P0 | 投板前冻结每种IMU的供电接口电平复位同步路径 | Open |
| R-HW-002 | PPS只接普通GPIO | 时间戳精度不足后续难以补救 | P0 | PPS必须接TIM输入捕获并留测试点 | Open |
| R-HW-003 | eMMC掉电保护不足 | 文件系统损坏数据记录不可用 | P0 | 加入PWR_FAIL和保持供电设计实测flush时间 | Open |
| R-HW-004 | Ethernet DMA缓存问题 | Ping/Web/FTP不稳定 | P0 | 明确DMA内存区域MPU和Cache策略 | Open |
| R-HW-005 | SDMMC/存储DMA缓冲不安全 | 写入出现UNDERRUN/OVERRUN或数据错误 | P0 | 规定DMA安全缓冲区和32字节对齐策略 | Open |
| R-HW-006 | GNSS RF走线和天线供电不规范 | 定位/定向性能下降 | P0 | 50Ω控制ESD防雷短路保护远离噪声源 | Open |
| R-HW-007 | 外部接口ESD/浪涌不足 | 外场接口损坏 | P1 | 所有外部接口增加保护器件并靠近连接器 | Open |
| R-HW-008 | IMU受热源影响 | 姿态和升沉精度下降 | P1 | IMU远离DCDC/PHY/MCU热点优化散热路径 | Open |
---
## 15. 附录需求ID规则
| 分类 | ID前缀 | 示例 |
|---|---|---|
| 硬件架构 | HW-ARCH | HW-ARCH-001 |
| MCU | HW-MCU | HW-MCU-001 |
| IMU | HW-IMU | HW-IMU-001 |
| GNSS | HW-GNSS | HW-GNSS-001 |
| 时间同步 | HW-TIME | HW-TIME-001 |
| 通信接口 | HW-COM / HW-ETH | HW-ETH-001 |
| 存储 | HW-STO | HW-STO-001 |
| 电源 | HW-PWR / EE-PWR | HW-PWR-001 |
| PCB | HW-PCB | HW-PCB-001 |
| 测试 | TEST-HW | TEST-HW-001 |
---
## 16. 待补充项
| 项目 | 当前状态 | 责任人 | 完成时间 |
|---|---|---|---|
| 最终MCU型号 | 待冻结 | | |
| 最终IMU型号和接口版本 | 待冻结 | | |
| GNSS模块手册参数 | 待补充 | | |
| 连接器型号与Pinout | 待补充 | | |
| 电源树电流预算 | 待补充 | | |
| eMMC型号与写入带宽 | 待补充 | | |
| PTP硬件能力实测 | 待验证 | | |
| IP67结构方案 | 待结构确认 | | |
| 原理图P0问题清单 | 待评审 | | |
| PCB关键约束文件 | 待输出 | | |

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -65,7 +65,7 @@
#### 交付物
- [x] 原型机硬件问题清单 ✅ 2026-05-09
- [x] 原型机硬件问题清单 ✅ 2026-05-10
- [ ] 新版原理图修改需求清单
- [ ] 新版原理图 V1
- [ ] 原型机硬件问题修复对照表