cannect 1.0.2__tar.gz → 1.0.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. cannect-1.0.3/PKG-INFO +651 -0
  2. cannect-1.0.3/README.md +625 -0
  3. {cannect-1.0.2 → cannect-1.0.3}/pyproject.toml +1 -1
  4. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/config.py +2 -3
  5. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/ascet/comdef.py +15 -15
  6. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/ascet/comrx.py +4 -4
  7. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/ascet/diag.py +26 -26
  8. cannect-1.0.3/src/cannect/core/can/db/_dbc.py +394 -0
  9. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/db/reader.py +56 -10
  10. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/db/specification/wrapper.py +37 -38
  11. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/db/vcs.py +10 -3
  12. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/ir/changehistory.py +118 -144
  13. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/ir/diff.py +6 -4
  14. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/ir/ir.py +40 -38
  15. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/subversion.py +25 -0
  16. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/testcase/unitcase.py +1 -1
  17. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/errors.py +6 -0
  18. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/utils/ppt.py +1 -4
  19. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/utils/tools.py +4 -1
  20. cannect-1.0.3/src/cannect.egg-info/PKG-INFO +651 -0
  21. {cannect-1.0.2 → cannect-1.0.3}/src/cannect.egg-info/SOURCES.txt +1 -0
  22. cannect-1.0.2/PKG-INFO +0 -214
  23. cannect-1.0.2/README.md +0 -188
  24. cannect-1.0.2/src/cannect.egg-info/PKG-INFO +0 -214
  25. {cannect-1.0.2 → cannect-1.0.3}/LICENSE +0 -0
  26. {cannect-1.0.2 → cannect-1.0.3}/setup.cfg +0 -0
  27. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/__init__.py +0 -0
  28. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/api/__init__.py +0 -0
  29. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/__init__.py +0 -0
  30. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/ascet/__init__.py +0 -0
  31. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/ascet/amd.py +0 -0
  32. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/ascet/formula.py +0 -0
  33. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/ascet/oid.py +0 -0
  34. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/ascet/ws.py +0 -0
  35. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/__init__.py +0 -0
  36. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/ascet/__init__.py +0 -0
  37. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/ascet/_db2code.py +0 -0
  38. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/ascet/_db2elem.py +0 -0
  39. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/db/__init__.py +0 -0
  40. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/db/schema.py +0 -0
  41. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/db/specification/__init__.py +0 -0
  42. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/db/specification/message.py +0 -0
  43. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/db/specification/styles.py +0 -0
  44. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/rule.py +0 -0
  45. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/testcase/__init__.py +0 -0
  46. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/testcase/unitcase/__init__.py +0 -0
  47. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/testcase/unitcase/asw2can.py +0 -0
  48. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/testcase/unitcase/decode.py +0 -0
  49. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/testcase/unitcase/diagnosis.py +0 -0
  50. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/can/testcase/unitcase/encode.py +0 -0
  51. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/ir/__init__.py +0 -0
  52. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/ir/delivereables.py +0 -0
  53. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/ir/sdd.py +0 -0
  54. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/mdf.py +0 -0
  55. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/testcase/__init__.py +0 -0
  56. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/testcase/plotter.py +0 -0
  57. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/testcase/style.py +0 -0
  58. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/core/testcase/testcase.py +0 -0
  59. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/schema/__init__.py +0 -0
  60. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/schema/candb.py +0 -0
  61. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/schema/datadictionary.py +0 -0
  62. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/utils/__init__.py +0 -0
  63. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/utils/excel.py +0 -0
  64. {cannect-1.0.2 → cannect-1.0.3}/src/cannect/utils/logger.py +0 -0
  65. {cannect-1.0.2 → cannect-1.0.3}/src/cannect.egg-info/dependency_links.txt +0 -0
  66. {cannect-1.0.2 → cannect-1.0.3}/src/cannect.egg-info/requires.txt +0 -0
  67. {cannect-1.0.2 → cannect-1.0.3}/src/cannect.egg-info/top_level.txt +0 -0
cannect-1.0.3/PKG-INFO ADDED
@@ -0,0 +1,651 @@
1
+ Metadata-Version: 2.4
2
+ Name: cannect
3
+ Version: 1.0.3
4
+ Summary: HYUNDAI-KEFICO EMS/ASW CONVENIENCE TOOL
5
+ Requires-Python: >=3.10
6
+ Description-Content-Type: text/markdown
7
+ License-File: LICENSE
8
+ Requires-Dist: kaleido
9
+ Requires-Dist: lxml
10
+ Requires-Dist: mdfreader
11
+ Requires-Dist: numpy
12
+ Requires-Dist: pandas
13
+ Requires-Dist: plotly
14
+ Requires-Dist: psutil
15
+ Requires-Dist: pyautogui
16
+ Requires-Dist: pygetwindow
17
+ Requires-Dist: pyperclip
18
+ Requires-Dist: python-can
19
+ Requires-Dist: python-docx
20
+ Requires-Dist: python-dotenv
21
+ Requires-Dist: python-pptx
22
+ Requires-Dist: pywin32
23
+ Requires-Dist: tqdm
24
+ Requires-Dist: xlsxwriter
25
+ Dynamic: license-file
26
+
27
+ # cannect
28
+
29
+ ---
30
+
31
+ <b>HKMG/EMS ASW 편의 도구</b><br>
32
+ 본 프레임워크는 EMS/ASW 개발의 특수한 목적을 위해 제작되었으며 허용된 호스트 도메인에서만 작동합니다. 본 프레임워크는 허용된 호스트 도메인의 리소스에 대한 개발 및 검증 편의도구를 제공하며 리소스는 보안 정책에 따라 외부로 반출할 수 없습니다. 이를 위반하여 사용자가 리소스를 외부로 무단 반출 또는 반출 시도 시 관련 법률 및 보안 정책에 의거 불이익 또는 처벌을 받을 수 있습니다.<br><br>
33
+ <i>Developed and Powered by</i> <b>HYUNDAI KEFICO Co.,Ltd.</b>
34
+
35
+ ---
36
+
37
+ # 사용자 가이드
38
+ ## 1. 리소스 경로 설정 (선택)
39
+
40
+ 모든 리소스는 호스트 도메인의 저장소 및 SVN을 참조합니다. 필요에 따라 사용자는 로컬 환경에 Check-Out된 SVN을 사용할 수 있습니다. 이 경우, 아래 예시에 따라 로컬 SVN 경로를 적용하여야 합니다.
41
+ 사용 시 스크립트 실행 마다 또는 커널 최초 실행 시 적용되어야 합니다.
42
+
43
+ ```commandline
44
+ 예시)
45
+
46
+ from cannect import env, mount # env는 환경 변수
47
+
48
+ print(env.SVN) # 기본 SVN 경로 사용
49
+ mount(r"E:\SVN") # 사용자 Local의 SVN 최상위 경로를 입력, 매 코드 실행 시 최상단에 입력
50
+ print(env.SVN)
51
+ ```
52
+ ```commandline
53
+ 결과)
54
+
55
+ \\kefico\ --- {세부 경로 보안 처리} --- \SVN
56
+ E:\SVN
57
+ ```
58
+
59
+ ## 2. 통신 개발
60
+ 통신 모듈에는 자동 ASCET 모델 생성용 AscetCAN과 CAN DB에 관한 일체 기능을 담당하는 DataBaseCAN 모듈이 있습니다.
61
+
62
+ ### 2.1. DataBaseCAN
63
+ ```text
64
+ 모듈 구조)
65
+
66
+ ├── DataBaseCAN
67
+ │ ├── Reader(src) --------------------------------- (C) CAN DB(SPEC) 읽기
68
+ │ │ ├── db : └─ attribute; [DataFrame] 원본 데이터프레임
69
+ │ │ ├── source : └─ attribute; [str] DB json 파일 전체 경로
70
+ │ │ ├── traceability : └─ attribute; [str] DB json 파일 이름
71
+ │ │ ├── revision : └─ attribute; [str] DB Excel 파일 Revision @수정 번호
72
+ │ │ ├── messages : └─ @property; [DataDictionary[메시지 이름, 메시지 객체]
73
+ │ │ ├── signals : └─ @property; [DataDictionary[신호 이름, 신호 객체]
74
+ │ │ ├── mode(engine_spec) : └─ method; "HEV", "ICE" 사양에 대한 DB
75
+ │ │ ├── is_developer_mode() : └─ method; 개발자 모드 여부
76
+ │ │ ├── is_dbc(engine_spec, channel, **kwargs) : └─ method; 개발자 모드 여부
77
+ │ │ └── to_developer_mode(engine_spec) : └─ method; 개발자 모드로 전환
78
+ │ │
79
+ │ ├── Specification(db) --------------------------- (C) 사양서 제작
80
+ │ │ └── generate(filename) : └─ method; 사양서 제작, 다운로드 경로에 생성
81
+ │ │
82
+ └── └── VersionControl(filename) -------------------- (C) CAN DB(SPEC) 버전 관리
83
+ ├── name : └─ attribute; DB 파일 이름 (확장자 제외)
84
+ ├── filename : └─ attribute; DB 파일 이름 (확장자 포함)
85
+ ├── filepath : └─ attribute; DB 파일 경로 (전체 경로)
86
+ ├── history : └─ attribute; DB 파일 SVN 이력
87
+ ├── revision : └─ attribute; DB 파일 최신 SVN Revision
88
+ ├── json : └─ @property; .revision에 해당하는 json 파일(전체 경로)
89
+ ├── commit_json() : └─ method; # TODO
90
+ └── to_json(mode) : └─ method; 사양서 제작, 다운로드 경로에 생성
91
+ ```
92
+
93
+ #### 2.1.1. DataBaseCAN.Reader
94
+
95
+ CAN DB 읽기 클래스입니다.<br>
96
+ <i><span style="color:green">:param</span></i> src: [str] CAN SPEC(DB)의 .json 파일 전체 경로
97
+
98
+ ```commandline
99
+ 예시)
100
+
101
+ from cannect import DataBaseCAN
102
+
103
+ db = DataBaseCAN.Reader(src='')
104
+ # 특정 프로젝트(G-프로젝트 등)를 위한 DB를 사용할 경우 json 파일 형식의 데이터를 @src에 사용
105
+ # 미적용 시 SVN 내 최신 DB 사용
106
+ print(db)
107
+ print(db.source) # json 파일 전체 경로
108
+ print(db.traceability) # 원본 DB 이름 (json 파일명)
109
+ print(db.revision) # 원본 DB의 SVN Revision 및 로컬 재생성 횟수
110
+ ```
111
+
112
+ ```commandline
113
+ 결과
114
+ ECU Message ID DLC Send Type Cycle Time Signal Definition Length StartBit Sig Receivers UserSigValidity Value Table Value Type GenSigStartValue Factor Offset Min Max Unit Local Network Wake Up Request Network Request Holding Time Description Version Requirement ID Required Date Remark Status ByteOrder ICE Channel ICE WakeUp HEV Channel HEV WakeUp SystemConstant Codeword Formula SignedProcessing InterfacedVariable SignalRenamed
115
+ 0 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_ESC_Crc1Val ABS_ESC_CyclicRedundancyCheck1Value 16 0 AWD,EMS,TCU,SCU_FF IG1 0x0~0xFFFF:CRCValue Unsigned 0xFFFF 1.0 0.0 0.0 0.0 No 0 "The data area for CRC calculation is based on... 21.09.03 Official Intel P P OneToOne //Internal
116
+ 1 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_ESC_AlvCnt1Val ABS_ESC_AliveCounter1Value 8 16 AWD,EMS,TCU,SCU_FF IG1 0x0~0xFF:AlvCntValue Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 "For the first transmission request for a data... 21.09.03 Official Intel P P OneToOne //Internal
117
+ 2 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_WrngLmpSta ABS_WarningLampStatus ##2G##ESC - TCS15 - ABS_... 2 24 AWD,TCU,SCU_FF IG1 0x0:ABS Warning lamp OFF/0x1:ABS Warning lamp ... Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 The signal indicates the status of the ABS War... 19.07.02 Official Intel P OneToOne FD_stAbsWrngLmp
118
+ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
119
+ 1791 EMS EMS_LDCBMS1 0x52C 8 P 50 CF_Ems1_Alive 2 54 LDC IG1 unsigned 0x0 0.0 0.0 0.0 3.0 No 0 19.06.25 "'2025.07.02. 자체 DB 개정\n- 현재 EMS 송출 중이나, 수신처 없... Official Intel L MICROEPT_48V_SC == 1 Cfg_MeptSys_C > 0 //Internal
120
+ 1792 EMS EMS_LDCBMS1 0x52C 8 P 50 CF_stDesModDcdc 4 56 LDC IG1 0x0:Init (wake-up)/0x5:Idle / Neutral/0x8:Forw... unsigned 0x0 0.0 0.0 0.0 15.0 No 0 Desired LDC operation mode by EMS 19.06.25 "'2025.07.02. 자체 DB 개정\n- 현재 EMS 송출 중이나, 수신처 없... Official Intel L MICROEPT_48V_SC == 1 Cfg_MeptSys_C > 0 Ldc_stDesMod
121
+ 1793 EMS EMS_LDCBMS1 0x52C 8 P 50 CF_Ems1_ChkSum 4 60 LDC IG1 0x0:No error/0x1:Engine speed sensor defective unsigned 0x0 0.0 0.0 0.0 15.0 No 0 "This signal indicates Checksum for robustness... 19.06.25 "'2025.07.02. 자체 DB 개정\n- 현재 EMS 송출 중이나, 수신처 없... Official Intel L MICROEPT_48V_SC == 1 Cfg_MeptSys_C > 0 //Internal
122
+
123
+ [1794 rows x 39 columns]
124
+ E:\SVN\dev.bsw\ --- {세부 경로 보안 처리} --- \자체제어기_KEFICO-EMS_CANFD_r21713@03.json
125
+ 자체제어기_KEFICO-EMS_CANFD_r21713@03
126
+ r21713@03
127
+ ```
128
+
129
+ 사양서 제작 시에는 엔진 사양 별 DB를 재구성해서 사용합니다.
130
+ ```commandline
131
+ 예시)
132
+
133
+ db_hev = db.mode(engine_spec="HEV")
134
+ db_ice = db.mode(engine_spec="ICE")
135
+ print(db_hev)
136
+ print(db_ice)
137
+
138
+ ```
139
+ ```commandline
140
+ 결과)
141
+
142
+ ECU Message ID DLC Send Type Cycle Time Signal Definition Length StartBit Sig Receivers UserSigValidity Value Table Value Type GenSigStartValue Factor Offset Min Max Unit Local Network Wake Up Request Network Request Holding Time Description Version Requirement ID Required Date Remark Status ByteOrder ICE Channel ICE WakeUp HEV Channel HEV WakeUp SystemConstant Codeword Formula SignedProcessing InterfacedVariable SignalRenamed
143
+ 0 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_ESC_Crc1Val ABS_ESC_CyclicRedundancyCheck1Value 16 0 AWD,EMS,TCU,SCU_FF IG1 0x0~0xFFFF:CRCValue Unsigned 0xFFFF 1.000000 0.000000 0.000000 0.000000 No 0 "The data area for CRC calculation is based on... 21.09.03 Official Intel P P OneToOne //Internal
144
+ 1 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_ESC_AlvCnt1Val ABS_ESC_AliveCounter1Value 8 16 AWD,EMS,TCU,SCU_FF IG1 0x0~0xFF:AlvCntValue Unsigned 0x0 1.000000 0.000000 0.000000 0.000000 No 0 "For the first transmission request for a data... 21.09.03 Official Intel P P OneToOne //Internal
145
+ 2 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_WrngLmpSta ABS_WarningLampStatus ##2G##ESC - TCS15 - ABS_... 2 24 AWD,TCU,SCU_FF IG1 0x0:ABS Warning lamp OFF/0x1:ABS Warning lamp ... Unsigned 0x0 1.000000 0.000000 0.000000 0.000000 No 0 The signal indicates the status of the ABS War... 19.07.02 Official Intel P OneToOne FD_stAbsWrngLmp
146
+ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
147
+ 1752 EMS LEMS_09_100ms 0x261 8 P 100 CLU_LoFuelWrngSta_Copy_1 CLU_LowFuelWarningStatus 2 16 TCU,Dummy IG1 0x0:Low fuel Warning is off/0x1:Low fuel Warni... Unsigned 0x0 1.000000 0.000000 0.000000 3.000000 No 0 19.03.05 Official Intel L CLU_LoFuelWrngSta_Can CLU_LoFuelWrngSta
148
+ 1753 EMS LEMS_09_100ms 0x261 8 P 100 DATC_OutTempSnsrVal_Copy_1 DATC_OutsideTemperatureSensorValue 8 18 TCU,Dummy IG1 0xFF:Error Unsigned 0x0 0.500000 -40.000000 -40.000000 87.500000 degC No 0 19.03.05 Official Intel L DATC_OutTempSnsrVal_Can DATC_OutTempSnsrVal
149
+ 1754 EMS LEMS_09_100ms 0x261 8 P 100 ICU_BS1BatVol_Copy_1 Actual battery voltage by battery sensor. ##2G... 8 26 TCU,Dummy IG1 0xFF:Error indicator Unsigned 0x0 0.101562 0.000000 0.000000 25.898000 V No 0 19.03.05 Official Intel L BattU_u8 HEV_BattVolVal
150
+
151
+ [799 rows x 39 columns]
152
+
153
+ ECU Message ID DLC Send Type Cycle Time Signal Definition Length StartBit Sig Receivers UserSigValidity Value Table Value Type GenSigStartValue Factor Offset Min Max Unit Local Network Wake Up Request Network Request Holding Time Description Version Requirement ID Required Date Remark Status ByteOrder ICE Channel ICE WakeUp HEV Channel HEV WakeUp SystemConstant Codeword Formula SignedProcessing InterfacedVariable SignalRenamed
154
+ 0 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_ESC_Crc1Val ABS_ESC_CyclicRedundancyCheck1Value 16 0 AWD,EMS,TCU,SCU_FF IG1 0x0~0xFFFF:CRCValue Unsigned 0xFFFF 1.0 0.0 0.0 0.0 No 0 "The data area for CRC calculation is based on... 21.09.03 Official Intel P P OneToOne //Internal
155
+ 1 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_ESC_AlvCnt1Val ABS_ESC_AliveCounter1Value 8 16 AWD,EMS,TCU,SCU_FF IG1 0x0~0xFF:AlvCntValue Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 "For the first transmission request for a data... 21.09.03 Official Intel P P OneToOne //Internal
156
+ 3 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_DfctvSta ABS_DefectiveStatus ##2G##ESC - TCS11 - ABS_DEF 2 26 AWD,EMS,TCU,LSD,SCU_FF IG1 0x0:ABS is not defective/0x1:ABS is defective/... Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 Information regarding the ABS defective indica... 19.07.02 Official Intel P P OneToOne FD_stAbsDfctv
157
+ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
158
+ 1791 EMS EMS_LDCBMS1 0x52C 8 P 50 CF_Ems1_Alive 2 54 LDC IG1 unsigned 0x0 0.0 0.0 0.0 3.0 No 0 19.06.25 "'2025.07.02. 자체 DB 개정\n- 현재 EMS 송출 중이나, 수신처 없... Official Intel L MICROEPT_48V_SC == 1 Cfg_MeptSys_C > 0 //Internal
159
+ 1792 EMS EMS_LDCBMS1 0x52C 8 P 50 CF_stDesModDcdc 4 56 LDC IG1 0x0:Init (wake-up)/0x5:Idle / Neutral/0x8:Forw... unsigned 0x0 0.0 0.0 0.0 15.0 No 0 Desired LDC operation mode by EMS 19.06.25 "'2025.07.02. 자체 DB 개정\n- 현재 EMS 송출 중이나, 수신처 없... Official Intel L MICROEPT_48V_SC == 1 Cfg_MeptSys_C > 0 Ldc_stDesMod
160
+ 1793 EMS EMS_LDCBMS1 0x52C 8 P 50 CF_Ems1_ChkSum 4 60 LDC IG1 0x0:No error/0x1:Engine speed sensor defective unsigned 0x0 0.0 0.0 0.0 15.0 No 0 "This signal indicates Checksum for robustness... 19.06.25 "'2025.07.02. 자체 DB 개정\n- 현재 EMS 송출 중이나, 수신처 없... Official Intel L MICROEPT_48V_SC == 1 Cfg_MeptSys_C > 0 //Internal
161
+
162
+ [1336 rows x 39 columns]
163
+ ```
164
+
165
+ dbc 파일을 제작할 수 있습니다. @engine_spec과 @channel 입력 시 메시지(ID) 중복 없이 해당 채널에 대한 .dbc 파일을 생성합니다.<br>
166
+ 이 때 채널에 <span style="color:indianred;">ID가 중복</span>되는 경우, <span style="color:indianred;">{Codeword}나 {SystemConstant}를 명시적으로 구분</span>하여야 합니다.
167
+
168
+ ```commandline
169
+ 예시)
170
+
171
+ db.to_dbc(engine_spec="ICE", channel=1) # CANDBDuplicationError 발생: 중복 ID
172
+ db.to_dbc(engine_spec="ICE", channel=1, Codeword="Cfg_CanFDSTDDB_C == 0") # 중복 제거를 위한 사양 명시
173
+ ```
174
+
175
+ ```commandline
176
+ 결과)
177
+
178
+ # 별도 출력 없음; Downloads 폴더에 {engine_spec}-{CAN채널}-{명시된 사양}.dbc 파일로 자동 저장
179
+ ```
180
+
181
+ .to_developer_mode(engine_spec)는 동일 메시지의 채널 분기 등 예외적 상황을 위한 DB 변환 모드입니다. 자동 모델 생성, Test Case 생성 등에 사용합니다.
182
+ 필요에 따라 .is_developer_mode()를 선행적으로 확인한 후 중복해서 모드 변환을 하지 않도록 주의합니다.
183
+
184
+ ```commandline
185
+ 예시)
186
+
187
+ db_dev = db.to_developer_mode("HEV")
188
+ print(db_dev)
189
+ ```
190
+
191
+ ```commandline
192
+ 결과)
193
+
194
+ ECU Message ID DLC Send Type Cycle Time Signal Definition Length StartBit Sig Receivers UserSigValidity Value Table Value Type GenSigStartValue Factor Offset Min Max Unit Local Network Wake Up Request Network Request Holding Time Description Version Requirement ID Required Date Remark Status ByteOrder ICE Channel ICE WakeUp HEV Channel HEV WakeUp SystemConstant Codeword Formula SignedProcessing InterfacedVariable SignalRenamed Channel WakeUp
195
+ 0 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_ESC_Crc1Val ABS_ESC_CyclicRedundancyCheck1Value 16 0 AWD,EMS,TCU,SCU_FF IG1 0x0~0xFFFF:CRCValue Unsigned 0xFFFF 1.0 0.0 0.0 0.0 No 0 "The data area for CRC calculation is based on... 21.09.03 Official Intel P P OneToOne //Internal P
196
+ 1 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_ESC_AlvCnt1Val ABS_ESC_AliveCounter1Value 8 16 AWD,EMS,TCU,SCU_FF IG1 0x0~0xFF:AlvCntValue Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 "For the first transmission request for a data... 21.09.03 Official Intel P P OneToOne //Internal P
197
+ 2 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_WrngLmpSta ABS_WarningLampStatus ##2G##ESC - TCS15 - ABS_... 2 24 AWD,TCU,SCU_FF IG1 0x0:ABS Warning lamp OFF/0x1:ABS Warning lamp ... Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 The signal indicates the status of the ABS War... 19.07.02 Official Intel P OneToOne FD_stAbsWrngLmp P
198
+ .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
199
+ 958 EMS EMS_15_H_00ms 0x300 32 EW 0 ImmoConf_HEV_H HEV_ImmobilizerConfiguration 2 72 VPC IG1 0x0:Non Immobilizer/0x1:Immobilizer/0x2:Not us... Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 Immobilizer Configuration 19.05.05 Official Intel P,H ImHev_cImobMod_(P, H) H
200
+ 959 EMS EMS_15_H_00ms 0x300 32 EW 0 EngLock_HEV_H HEV_EngineLock 2 74 VPC IG1 0x0:Engine Unlock/0x1:Engine Lock/0x2:Not used... Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 Engine Lock Information 19.05.05 Official Intel P,H ImHev_cEmsLock_(P, H) H
201
+ 960 EMS EMS_15_H_00ms 0x300 32 EW 0 AuthCount_HEV_H HEV_AuthenticationCount 4 76 VPC IG1 Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 Authentication Count 19.05.05 Official Intel P,H ImHev_ctAuth_(P, H) H
202
+
203
+ [870 rows x 41 columns]
204
+ ```
205
+
206
+ 클래스의 인스턴스는 __getitem__을 지원합니다. 기본적으로 pandas의 DataFrame.__getitem__을 상속하여 사용합니다. 필요에 따라 DB를 가공하여 자동화 모델, Test Case 생성 등에 사용합니다.
207
+
208
+ ```commandline
209
+ 예시)
210
+
211
+ print(db[db["ECU"] != "EMS"]) # EMS 기준, 수신 제어기만 선택
212
+ print(db[db["ICE Channel"].str.contains("P")]) # ICE 사양의 P-CAN 메시지만 선택
213
+ ```
214
+
215
+ ```commandline
216
+ 결과)
217
+
218
+ ECU Message ID DLC Send Type Cycle Time Signal Definition Length StartBit Sig Receivers UserSigValidity Value Table Value Type GenSigStartValue Factor Offset Min Max Unit Local Network Wake Up Request Network Request Holding Time Description Version Requirement ID Required Date Remark Status ByteOrder ICE Channel ICE WakeUp HEV Channel HEV WakeUp SystemConstant Codeword Formula SignedProcessing InterfacedVariable SignalRenamed
219
+ 0 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_ESC_Crc1Val ABS_ESC_CyclicRedundancyCheck1Value 16 0 AWD,EMS,TCU,SCU_FF IG1 0x0~0xFFFF:CRCValue Unsigned 0xFFFF 1.00000 0.0 0.0 0.0 No 0 "The data area for CRC calculation is based on... 21.09.03 Official Intel P P OneToOne //Internal
220
+ 1 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_ESC_AlvCnt1Val ABS_ESC_AliveCounter1Value 8 16 AWD,EMS,TCU,SCU_FF IG1 0x0~0xFF:AlvCntValue Unsigned 0x0 1.00000 0.0 0.0 0.0 No 0 "For the first transmission request for a data... 21.09.03 Official Intel P P OneToOne //Internal
221
+ 2 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_WrngLmpSta ABS_WarningLampStatus ##2G##ESC - TCS15 - ABS_... 2 24 AWD,TCU,SCU_FF IG1 0x0:ABS Warning lamp OFF/0x1:ABS Warning lamp ... Unsigned 0x0 1.00000 0.0 0.0 0.0 No 0 The signal indicates the status of the ABS War... 19.07.02 Official Intel P OneToOne FD_stAbsWrngLmp
222
+ .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
223
+ 954 CGW_CCU WHL_01_10ms 0x0A0 24 P 10 WHL_SpdFRVal WHL_SpeedFrontRightValue ##2G##ESC - WHL_SPD11... 14 80 AWD,EMS,TCU,OPU,LSD,SCU_FF,WCCU,EVSCU_FF,VDU,A... IG1 0x3FFF:Error Unsigned 0x0 0.03125 0.0 0.0 0.0 km/h No 0 "This signal provides the wheel velocity of ea... 17.12.00 Official Intel P V_kph_q0p03125 WHEEL_FR_WHL_Intf
224
+ 955 CGW_CCU WHL_01_10ms 0x0A0 24 P 10 WHL_SpdRLVal WHL_SpeedRearLeftValue ##2G##ESC - WHL_SPD11 -... 14 96 AWD,EMS,TCU,OPU,LSD,SCU_FF,EVSCU_FF,VDU,ALDC,V2LC IG1 0x3FFF:Error Unsigned 0x0 0.03125 0.0 0.0 0.0 km/h No 0 "This signal provides the wheel velocity of ea... 17.12.00 Official Intel P V_kph_q0p03125 WHEEL_RL_WHL_Intf
225
+ 956 CGW_CCU WHL_01_10ms 0x0A0 24 P 10 WHL_SpdRRVal WHL_SpeedRearRightValue ##2G##ESC - WHL_SPD11 ... 14 112 AWD,EMS,TCU,OPU,LSD,SCU_FF,EVSCU_FF,VDU,ALDC,V2LC IG1 0x3FFF:Error Unsigned 0x0 0.03125 0.0 0.0 0.0 km/h No 0 "This signal provides the wheel velocity of ea... 17.12.00 Official Intel P V_kph_q0p03125 WHEEL_RR_WHL_Intf
226
+
227
+ [957 rows x 39 columns]
228
+ ECU Message ID DLC Send Type Cycle Time Signal Definition Length StartBit Sig Receivers UserSigValidity Value Table Value Type GenSigStartValue Factor Offset Min Max Unit Local Network Wake Up Request Network Request Holding Time Description Version Requirement ID Required Date Remark Status ByteOrder ICE Channel ICE WakeUp HEV Channel HEV WakeUp SystemConstant Codeword Formula SignedProcessing InterfacedVariable SignalRenamed
229
+ 0 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_ESC_Crc1Val ABS_ESC_CyclicRedundancyCheck1Value 16 0 AWD,EMS,TCU,SCU_FF IG1 0x0~0xFFFF:CRCValue Unsigned 0xFFFF 1.0 0.0 0.0 0.0 No 0 "The data area for CRC calculation is based on... 21.09.03 Official Intel P P OneToOne //Internal
230
+ 1 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_ESC_AlvCnt1Val ABS_ESC_AliveCounter1Value 8 16 AWD,EMS,TCU,SCU_FF IG1 0x0~0xFF:AlvCntValue Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 "For the first transmission request for a data... 21.09.03 Official Intel P P OneToOne //Internal
231
+ 3 CGW_CCU ABS_ESC_01_10ms 0x06F 8 P 10 ABS_DfctvSta ABS_DefectiveStatus ##2G##ESC - TCS11 - ABS_DEF 2 26 AWD,EMS,TCU,LSD,SCU_FF IG1 0x0:ABS is not defective/0x1:ABS is defective/... Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 Information regarding the ABS defective indica... 19.07.02 Official Intel P P OneToOne FD_stAbsDfctv
232
+ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
233
+ 1632 EMS PT_OBM_02_00ms 0x516 32 EC 0 PT_OBM_AlvCnt02Val PT_OBM_AliveCounter02Value 8 16 vDummy B+ 0x0~0xFF:AlvCntValue Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 "For the first transmission request for a data... 25.07.02 VCDM CR10783438, CR10783437 2025-09-10 TSW Intel P P OBM_SC == 1 Cfg_OBM_C > 0 //Internal
234
+ 1633 EMS PT_OBM_02_00ms 0x516 32 EC 0 OBM_Master_ECU OBM data trasmission Controller 3 24 CCU_AP IG1 0x0:Default/0x1:EMS (ECU ID : 7E0)/0x2:VCU/VPC... Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 This signal shows which controller transmits t... 25.07.04 VCDM CR10783438, CR10783437 2025-09-10 TSW Intel P P OBM_SC == 1 Cfg_OBM_C > 0 상수 1
235
+ 1634 EMS PT_OBM_02_00ms 0x516 32 EC 0 OBM_Outbox_Status OBM Outbox Status 3 27 CCU_AP IG1 0x0:Default/0x1:Request/0x2:Success ACK Unsigned 0x0 1.0 0.0 0.0 0.0 No 0 This signal shows OBM Outbox Status from Data ... 25.07.04 VCDM CR10783438, CR10783437 2025-09-10 TSW Intel P P OBM_SC == 1 Cfg_OBM_C > 0 OBM_TraReq
236
+
237
+ [967 rows x 39 columns]
238
+ ```
239
+
240
+ #### 2.1.2. DataBaseCAN.Specification
241
+
242
+ DB에 대한 사양서(구 SDD) 제작 클래스입니다.<br>
243
+ <i><span style="color:green">:param</span></i> db: DataBaseCAN.Reader.mode의 객체
244
+
245
+ ```commandline
246
+ 예시)
247
+
248
+ # 아래와 같이 실행 시, 사용자\다운로드 경로에 {filename}.docx로 생성
249
+ spec = DataBaseCAN.Specification(db)
250
+ spec.generate(filename) # filename 필수 입력
251
+ ```
252
+
253
+ #### 2.1.3. DataBaseCAN.VersionControl
254
+
255
+ SVN/엑셀 DB에 대한 json 파일 생성 및 버전 관리 클래스입니다.<br>
256
+ 관리자의 엑셀 CAN DB에 대한 버전 및 소스 관리를 수행합니다.<br>
257
+ <i><span style="color:green">:param</span></i> filename: str, SVN/.../CAN_Database 경로에 위치한 엑셀 파일 이름, 미입력 시 자체제어기 DB 선택<br><br>
258
+ <span style="color:indianred;">DB@SVN revision에 대한 json이 없는 경우 오류가 표출되므로 선행적 생성 필요</span>
259
+
260
+ ```commandline
261
+ 예시)
262
+
263
+ vc = DataBaseCAN.VersionControl()
264
+ print(vc.name) # DB 파일 이름 (확장자 제외)
265
+ print(vc.filename) # DB 파일 이름 (확장자 포함)
266
+ print(vc.revision) # DB 파일 최신 SVN Revision
267
+ print(vc.filepath) # DB 파일 경로 (전체 경로)
268
+ print(vc.json) # .revision에 해당하는 json 파일(전체 경로)
269
+ print(vc.history) # DB 파일 SVN 이력
270
+ ```
271
+
272
+ ```commandline
273
+ 결과)
274
+
275
+ 자체제어기_KEFICO-EMS_CANFD
276
+ 자체제어기_KEFICO-EMS_CANFD.xlsx
277
+ r21725
278
+ \\kefico\ --- {세부 경로 보안 처리} --- \CAN_Database\자체제어기_KEFICO-EMS_CANFD.xlsx
279
+ \\kefico\ --- {세부 경로 보안 처리} --- \CAN_Database\dev\자체제어기_KEFICO-EMS_CANFD_r21725@01.json
280
+ revision author datetime log
281
+ 0 r21725 ZS25282@AUTOS 2026-01-30 11:54:41 MCU P-CAN channel added
282
+ 1 r21715 ZS19577@AUTOS 2026-01-29 11:02:24 [J**H*****.Jo]
283
+ 2 r21714 ZS19577@AUTOS 2026-01-29 10:09:13 [J**H*****.Jo]
284
+ .. ... ... ... ...
285
+ 82 r21190 ZS19542@AUTOS 2024-08-09 13:30:17 ESC_06_200ms@HEV 삭제(LCR 요구사항 번복)
286
+ 83 r21189 ZS19542@AUTOS 2024-08-09 13:28:52 ESC_01_10ms@HEV P,H 채널 중복 수신에서 P 채널 단일 수신으로 변경...
287
+ 84 r21179 ZS19542@AUTOS 2024-08-09 13:13:05 최초 적용
288
+
289
+ [79 rows x 4 columns]
290
+ ```
291
+
292
+ ### 2.2. AscetCAN
293
+ ```text
294
+ 모듈 구조)
295
+
296
+ ├── AscetCAN
297
+ │ ├── ComDef(db, engine_spec, base_model, exclude_tsw) --- (C) ComDef 모델 생성
298
+ │ │ └── generate() : └─ method;
299
+ │ │
300
+ │ ├── ComRx(db, engine_spec, base_model) ----------------- (C) ComRx 모델 생성
301
+ │ │ └── generate() : └─ method;
302
+ │ │
303
+ └── └── ComDiag(db, base_model, *messages) ----------------- (C) 진단 모델 생성
304
+ └── generate() : └─ method;
305
+ ```
306
+
307
+ #### 2.2.1. AscetCAN.ComDef
308
+
309
+ 지정 경로(사용자\다운로드)에 ComDef* 모델을 생성합니다. ICE, HEV, G프로젝트 등 목적별로 구분하여 사용할 수 있습니다. base_model을 입력하지 않으면 SVN의 모델을 사용합니다.
310
+ CAN DB를 입력하면 송출처가 EMS인 경우는 자동으로 제외하며 로컬 통신 대상인 "CVVD", "48V 사양", "NOx센서"은 자동으로 제외합니다. <br>
311
+ <i><span style="color:green">:param</span></i> db: [DataBaseCAN.Reader] <br>
312
+ <i><span style="color:green">:param</span></i> engine_spec: [str] "ICE" 또는 "HEV"만 입력 가능합니다.<br>
313
+ <i><span style="color:green">:param</span></i> base_model: [str] 베이스로 사용할 ComDef* 모델의 전체 경로를 입력합니다. 공란 입력 시 SVN 상 모델을 사용합니다. 기본 값은 미입력 공란입니다.<br>
314
+ <i><span style="color:green">:param</span></i> exclude_tsw: [bool] 모델 생성 시 BSW 참조를 무력화(255)합니다. CAN DB상 메시지가 TSW 상태로 표기되어 있어야 합니다.
315
+
316
+ ```commandline
317
+ 예시)
318
+
319
+ model = AscetCAN.ComDef(DataBaseCAN.Reader(), "HEV")
320
+ model.generate()
321
+ ```
322
+
323
+ ```commandline
324
+ 결과) (생성 로그)
325
+
326
+ 2026-02-03 08:44:52 %ComDef_HEV MODEL GENERATION
327
+ 2026-02-03 08:44:52 >>> Engine Spec : HEV
328
+ 2026-02-03 08:44:52 >>> Base Model : \\ ... \NetworkDefinition\ComDef_HEV\ComDef_HEV.zip
329
+ 2026-02-03 08:44:52 >>> DB Revision : r21727@01
330
+ 2026-02-03 08:44:52 >>> Exclude TSW : Yes
331
+ 2026-02-03 08:44:52 >>> Collecting Base Model Properties... 0.01s
332
+ 2026-02-03 08:44:57 >>> Defining Message Elements... 4.04s
333
+ 2026-02-03 08:44:58 >>> Defining Signal Elements... 1.11s
334
+ 2026-02-03 08:45:00 >>> Summary
335
+ Method Element
336
+ Total Total Added Deleted
337
+ Base Model 66 1194 - 50
338
+ New Model 68 1232 88 -
339
+ * Added: GCU_InvtTempVal_H_Can, FD_cVldMcu01HAlv, ... , GCU_ActlHsgRotatSpdRpmVal_P_Can
340
+ * Deleted: MCU_EstMtrTqPcVal_Can, Can_tiFltMcu02_C, ... , GCU_AlvCnt2ValCalc
341
+ ```
342
+
343
+ #### 2.2.2. AscetCAN.ComRx
344
+
345
+ 지정 경로(사용자\다운로드)에 ComRx* 모델을 생성합니다. ICE, HEV, G프로젝트 등 목적별로 구분하여 사용할 수 있습니다. base_model을 입력하지 않으면 SVN의 모델을 사용합니다.
346
+ CAN DB를 입력하면 송출처가 EMS인 경우는 자동으로 제외하며 로컬 통신 대상인 "CVVD", "48V 사양", "NOx센서"은 자동으로 제외합니다. <br>
347
+ <i><span style="color:green">:param</span></i> db: [DataBaseCAN.Reader] <br>
348
+ <i><span style="color:green">:param</span></i> engine_spec: [str] "ICE" 또는 "HEV"만 입력 가능합니다.<br>
349
+ <i><span style="color:green">:param</span></i> base_model: [str] 베이스로 사용할 ComDef* 모델의 전체 경로를 입력합니다. 공란 입력 시 SVN 상 모델을 사용합니다. 기본 값은 미입력 공란입니다.<br>
350
+
351
+ ```commandline
352
+ 예시)
353
+
354
+ model = AscetCAN.ComRx(DataBaseCAN.Reader(), "HEV")
355
+ model.generate()
356
+ ```
357
+
358
+ ```commandline
359
+ 결과) (생성 로그)
360
+
361
+ 2026-02-03 08:46:47 %ComRx_HEV MODEL GENERATION
362
+ 2026-02-03 08:46:47 >>> Engine Spec : HEV
363
+ 2026-02-03 08:46:47 >>> Base Model : \\ ... \MessageReceive\ComRx_HEV\ComRx_HEV.zip
364
+ 2026-02-03 08:46:47 >>> DB Revision : r21727@01
365
+ 2026-02-03 08:46:47 >>> Summary
366
+ Message
367
+ Total Added Deleted
368
+ Base Model 66 - 2
369
+ New Model 68 4 -
370
+ * Added: MCU_02_P_10ms, MCU_01_P_10ms, MCU_01_H_10ms, MCU_02_H_10ms
371
+ * Deleted: MCU_02_10ms, MCU_01_10ms
372
+ ```
373
+
374
+ #### 2.2.3. AscetCAN.ComDiag
375
+
376
+ 지정 경로(사용자\다운로드)에 CAN 진단 모델을 생성합니다. base_model의 전체 경로 또는 모델의 이름을 입력합니다. 모델 이름만 입력 시, SVN 상 모델을 참조합니다.
377
+ 해당 모델에 진단하고자 하는 메시지 이름을 입력합니다. (필수)
378
+ <i><span style="color:green">:param</span></i> db: [DataBaseCAN.Reader] <br>
379
+ <i><span style="color:green">:param</span></i> base_model: [str] 베이스로 사용할 모델의 전체 경로 또는 이름을 입력합니다. 이름만 입력 시 SVN 상 모델을 사용합니다.<br>
380
+ <i><span style="color:green">:param</span></i> *messages: 진단 모델에 포함될 대상 메시지를 입력합니다.
381
+
382
+ ```commandline
383
+ 예시)
384
+
385
+ model = AscetCAN.ComDiag(DataBaseCAN.Reader(), "CanFDMCUD_HEV", "MCU_01_10ms", "MCU_02_10ms", "MCU_03_100ms")
386
+ model.generate()
387
+ ```
388
+
389
+ ```commandline
390
+ 결과) (생성 로그)
391
+
392
+ 2026-02-03 08:56:53 %{CanFDMCUD_HEV} MODEL GENERATION
393
+ 2026-02-03 08:56:53 >>> DB VERSION: r21727@01
394
+ 2026-02-03 08:56:53 >>> BASE MODEL: \\ ... \MessageDiag\CanFDMCUD_HEV\CanFDMCUD_HEV.zip
395
+ 2026-02-03 08:56:53 >>> COPY BASE MODEL TO TEMPLATE
396
+ 2026-02-03 08:56:53 >>> GENERATE HIERARCHY BY MESSAGES N=3
397
+ 2026-02-03 08:56:53 >>> ... [1 / 3] MCU_01_10ms:
398
+ 2026-02-03 08:56:53 >>> ... [2 / 3] MCU_02_10ms:
399
+ 2026-02-03 08:56:53 >>> ... [3 / 3] MCU_03_100ms:
400
+ 2026-02-03 08:56:53 >>> COPY DSM LIBRARY IMPLEMENTATION
401
+ 2026-02-03 08:56:54 >>> COPY CALIBRATION DATA FROM BASE MODEL
402
+ 2026-02-03 08:56:54 >>> RUN EXCEPTION HANDLING
403
+ 2026-02-03 08:56:54 >>> ... NO EXCEPTION FOUND
404
+ 2026-02-03 08:56:55 >>> CREATED TO "C:\Users\Administrator\Downloads\CanFDMCUD_HEV" SUCCESS
405
+ ```
406
+
407
+ ## 3. Integration Request
408
+
409
+ 통합 요청을 위한 Excel IR의 작성 편의 도구입니다.
410
+ ```text
411
+ 모듈 구조)
412
+
413
+ └── IntegrationRequest ------------------------------ (C) 통합요청서 작성 편의도구
414
+ ├── ChangeHistory : @property, @setter 변경내역서 이름
415
+ ├── Comment : @property, @setter 비고
416
+ ├── deliverables : @property, @setter 산출물 관리 경로
417
+ ├── parameters : @property, .compare_model()의 산출물
418
+ ├── User : @property, @setter 사용자(통합요청자)
419
+ ├── commit_all(message) : method; 모델 SVN commit (사용시 주의)
420
+ ├── compare_model(prev, post, exclude_imported) : method; 모델 비교
421
+ ├── copy_model_to_svn(src_path) : method; 개발 완료된 모델을 SVN 경로로 복사(Overwrite)
422
+ ├── copy_resource(key, dst, versioning, unzip) : method; SVN으로부터 필요 리소스를 로컬로 복사
423
+ ├── exclude(*funcs) : method; 모듈 제외
424
+ ├── resolve_model(*funcs) : method; 모듈 정보를 등록
425
+ ├── resolve_svn_version(*funcs) : method; 모듈 SVN 정보를 등록
426
+ ├── resolve_sdd_version() : method; SDD Version 등록
427
+ ├── select_previous_svn_version(mode) : method; 변경 대상 모델의 이전 버전 모델을 로컬로 복사
428
+ ├── update_sdd(comment) : method; SDD Note 이력 자동 업데이트
429
+ └── copy_model_to_svn(src_path) : method; 개발 완료된 모델을 SVN 경로로 복사(Overwrite)
430
+ ```
431
+
432
+ 아래의 예제 순서로 사용을 권장합니다.
433
+
434
+ ```commandline
435
+ 예시)
436
+
437
+ from cannect import IntegrationRequest
438
+
439
+ AUTO_COMMIT = False
440
+
441
+ # 대상 모델에 대한 객체 생성
442
+ ir = IntegrationRequest("ComDef_HEV", "ComRx_HEV", "CanFDMCUD_HEV", "CanFDMCUM_HEV", "LogIf_HEV")
443
+
444
+ # 산출물 관리 경로 지정
445
+ ir.deliverables = "사용자의 로컬 경로 지정"
446
+
447
+ # 대상 모델의 "변경 전" 모델 선택
448
+ # - mode: {'latest', 'previous', 'select'}
449
+ # - mode == "latest" : 대상 모델 Commit 미완료 상태, 최신 revision을 "변경 전" 모델로 간주 (기본 값)
450
+ # - mode == "previous": 대상 모델 Commit 완료 상태, 직전 revision을 "변경 전" 모델로 간주
451
+ # - mode == "select" : 대상 모델에 대한 revision을 사용자가 모두 선택(console)
452
+ ir.select_previous_svn_version(mode="latest")
453
+
454
+ # SDD 자동 업데이트 (잠재적 오류 내포)
455
+ # 사용자는 개발 내용(이력)만 입력, 그 외 버전 관리는 자동 수행
456
+ # .rtf(SDD NOTE 파일)의 형식에 따라 동작하지 않을 수 있으므로 반드시 사용자의 주의 필요
457
+ ir.update_sdd("사용자 comment")
458
+
459
+ # 모델 자동 Commit (SDD, DSM, Polyspace는 수동 Commit - 추후 개선 예정)
460
+ # SVN Commit은 되돌릴 수 없으므로 신중하게 사용
461
+ if AUTO_COMMIT:
462
+ ir.copy_model_to_svn()
463
+ ir.commit_all("사용자 메시지: 반드시 영문으로 작성")
464
+
465
+ # IR 시트 작성
466
+ ir.resolve_svn_version() # 모델, SDD, DSM, Polyspace 의 SVN 버전 기입
467
+ ir.resolve_sdd_version() # SDD Version (FunctionVersion) 기입
468
+ ir.compare_model(exclude_imported=False) # .select_previous_svn_version()이 수행된 경우 "변경 전", "변경 후" 모델 비교
469
+
470
+ print(ir)
471
+ ir.to_clipboard() # 이후 Excel IR 문서에 붙여넣기
472
+ ```
473
+ ```commandline
474
+ 결과)
475
+
476
+ FunctionName FunctionVersion SCMName SCMRev DSMName DSMRev ... SDDName SDDRev ... Date ... PolyspaceName PolyspaceRev
477
+ 0 ComDef_HEV 00.00.008 HNB_GASOLINE\ ... \Standard... 22550 ... 040g00002u801q070g7g807i9bh0a.zip 53076 ... 2026-02-04 ... BF_Result_ComDef_HEV.7z 12851
478
+ 1 ComRx_HEV 00.00.008 HNB_GASOLINE\ ... \Standard... 22550 ... 040g00002u801q070g80h5joqq024.zip 53076 ... 2026-02-04 ... BF_Result_ComRx_HEV.7z 12851
479
+ 2 CanFDMCUD_HEV 00.05.004 HNB_GASOLINE\ ... \CANInter... 22936 canfdmcud_hev_confdata.xml 51722 ... 040g030000001og7146g3m4migjcg.zip 53637 ... 2026-02-04 ... BF_Result_CanFDMCUD_HEV.7z 13509
480
+ 3 CanFDMCUM_HEV 00.05.003 HNB_GASOLINE\ ... \CANInter... 22431 ... 040g030000001og714304btcfi5uo.zip 52641 ... 2026-02-04 ... BF_Result_CanFDMCUM_HEV.7z 13203
481
+ 4 LogIf_HEV 00.05.019 HNB_GASOLINE\ ... \Communic... 22500 logif_hev_confdata.xml 47210 ... 040g030000001og7143g3bkq10bua.zip 52883 ... 2026-02-04 ... BF_Result_LogIf_HEV.7z 13203
482
+ ```
483
+
484
+ ## 4. ChangeHistoryManager
485
+
486
+ 변경내역서 작성 편의도구입니다. IntegrationRequest의 객체를 활용하여 변경내역서의 Outline을 작성합니다.
487
+
488
+ ```commandline
489
+ 예시)
490
+
491
+ from cannect import ChangeHistoryManager
492
+
493
+ # ir 인스턴스가 존재한다고 가정
494
+ # ∵ ir = IntegrationRequest(*modeuls)
495
+ ppt = ChanHistoryManager(ir)
496
+
497
+ # 1페이지 작성
498
+ ppt.title = "[CAN/공통] CAN BUS-OFF Recover Post Run 할당" # 제목
499
+ ppt.developer = ir.User # 개발 담당
500
+ ppt.issue = "VCDM CR10786223" # Issue
501
+ ppt.lcr = "자체 개선" # LCR
502
+ ppt.problem = "OTA 업데이트 평가 중, ... 발생" # 문제 현상
503
+ ```
504
+
505
+ ```commaneline
506
+ 결과) 실제 산출물은 ppt 파일로 작성되며 아래 출력은 console의 로그입니다.
507
+
508
+ 2026-02-04 15:24:35 [WRITE PPT ON "D:\Archive\ ... \0000_변경내역서 양식.pptx"]
509
+ 2026-02-04 15:25:05 >>> RESIZING COVER PAGE
510
+ 2026-02-04 15:25:06 >>> WRITE ON "SW 기능 상세 설명 - 변경 전"
511
+ 2026-02-04 15:25:06 >>> WRITE ON "SW 기능 상세 설명 - 변경 후"
512
+ 2026-02-04 15:25:06 >>> GENERATE SLIDES
513
+ 2026-02-04 15:25:07 >>> WRITING PREVIOUS MODEL DETAILS...
514
+ 2026-02-04 15:25:07 >>> ... CAND @18550
515
+ 2026-02-04 15:25:07 >>> WRITING REVISED MODEL DETAILS...
516
+ 2026-02-04 15:25:07 >>> ... CAND @23018
517
+ ```
518
+
519
+
520
+ ## 5. ASCET MODULE(AMD)
521
+ ### 5.1. Ascet.Amd
522
+
523
+ 4종 .amd (.main, .data, .implementation, .specification)에 대한 Ascet.AmdIO의 Wrapper 클래스입니다.
524
+
525
+ ```commandline
526
+ from cannect import Ascet
527
+
528
+ # READ *.amd
529
+ # INSTANCE {amd} CONTAINS FOLLOWING ATTRIBUTES
530
+ # .name: [str] NAME OF MODULE
531
+ # .main: [<Ascet.AmdIO>] Ascet.AmdIO({*.main.amd})
532
+ # .impl: [<Ascet.AmdIO>] Ascet.AmdIO({*.implementation.amd})
533
+ # .data: [<Ascet.AmdIO>] Ascet.AmdIO({*.data.amd})
534
+ # .spec: [<Ascet.AmdIO>] Ascet.AmdIO({*.specification.amd})
535
+
536
+ src = # {*.main.amd} 또는 {*.zip} (모델 전체 경로)
537
+ amd = Ascet.Amd(src)
538
+ ```
539
+
540
+ ### 5.2. Ascet.AmdIO
541
+ 개별 *.amd 파일에 대한 IO 클래스입니다.
542
+
543
+ #### 5.2.1. <i>.root</i>
544
+ ```commandline
545
+ main = amd.main
546
+ print(main.root)
547
+ ```
548
+ ```commandline
549
+ 결과
550
+ name ComDef_HEV
551
+ nameSpace /HNB_GASOLINE/_29_CommunicationVehicle/Standar...
552
+ OID _040g00002u801q070g7g807i9bh0a
553
+ timeStamp 2025-10-01T06:48:17
554
+ componentType ASCET_Module
555
+ specificationType CCode
556
+ defaultProjectName ComDef_HEV_DEFAULT
557
+ defaultProjectOID _040g1j9410g01q87180hrfqf5892o
558
+ path D:\ETASData\ASCET6.1\Export\ComDef_HEV\ComDef_...
559
+ file ComDef_HEV.main.amd
560
+ model ComDef_HEV
561
+ type ComponentMain
562
+ dtype: object
563
+ ```
564
+ #### 5.2.2. <i>.digestValue</i> & <i>.signatureValue</i>
565
+ ```commandline
566
+ print(main.digestValue)
567
+ print("---")
568
+ print(main.signatureValue)
569
+ ```
570
+ ```commandline
571
+ 결과
572
+ P4vSzV9B/VN5kcuO0ICAfxWO2vo=
573
+ ---
574
+ bB8aNE2ULCnQ+BB5y5HVHnwsnRZUzbCX1cqPHZ2hik1e3CZ4aMXmeZezMZl2nrXd
575
+ dieNjpiHg2iTOdQurIad4mLu0ixv2UVLa7FC0SgkBarFV7VgAYAXq8x7xd/KrEaA
576
+ EAeJmWb+uKW5hkQwrQ7bHe3BuNOoPmX1uIFZv7aKqmZDVdypC+0C3q1CbbeMjfWU
577
+ xwMQ8jsUjXlJCjdtpyBhPlS8O/dJ5tm7mnNTrSk8wp+nSbk17E5g9xy9SmyC3CUZ
578
+ 0I7XDtbazFkOQKSkBgwpmEv0qkdeeQJ/JuSePXFi66E962zf+CqQ4PTZX2e9lW1u
579
+ k8jWuLYv6t5ckBo/Tn6hoQ==
580
+ ```
581
+ #### 5.2.3. <i>.dataframe(tag:str, depth:str)</i>
582
+ tag의 Attribute를 데이터프레임으로 변환합니다.<br>
583
+ <i style="color:green;">@param</i> tag: [str] 변환하고자 하는 태그 이름 e.g. "Element", "MethodSignature"<br>
584
+ <i style="color:green;">@param</i> depth: [str] 선택한 태그 하위 태그 적용 깊이 e.g. "recursive"
585
+
586
+ ```commandline
587
+ print(main.dataframe('Element', depth='recursive'))
588
+ print('---')
589
+ print(main.dataframe('MethodSignature', depth='tag'))
590
+ ```
591
+ ```commandline
592
+ 결과
593
+ name OID ignore comment modelType basicModelType unit kind scope virtual dependent volatile calibrated set get read write reference maxSizeX componentName componentID model
594
+ 0 ABS_ActvSta_Can _040g1ngg00p91o07186g9qpv1tv0a false ABS_ActiveStatus ##2G##ESC - TCS11 - ABS_ACT scalar udisc message exported false false true true false false true true false NaN NaN NaN ComDef_HEV
595
+ 1 ABS_DfctvSta_Can _040g1ngg01a01no71c8g7rr1uh8ga false ABS_DefectiveStatus ##2G##ESC - TCS11 - ABS_DEF scalar udisc message exported false false true true false false true true false NaN NaN NaN ComDef_HEV
596
+ 2 ABS_DiagSta_Can _040g1ngg00p91o07182g9bnv64o0e false ABS_DiagnosticStatus ##2G##ESC - TCS11 - ABS_DIAG scalar udisc message exported false false true true false false true true false NaN NaN NaN ComDef_HEV
597
+ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
598
+ 1172 xEV_TotGridEnergy_Can _040g1ngg01a01og70g8g5pjg6r3lc false Total grid energy into the battery scalar cont message exported false false true true false false true true false NaN NaN NaN ComDef_HEV
599
+ 1173 CRC16bit_Calculator _040g1ngg00p91og70gbg6kpeec400 false CRC 16bit Calculator Instance complex class NaN local NaN NaN NaN NaN false false true true false NaN /HNB_GASOLINE/_29_CommunicationVehicle/CANInte... _040g1ngg01pp1oo708a0du6locrr2 ComDef_HEV
600
+ 1174 CRC8bit_Calculator _040g1ngg01a01o8704fg42b3o0102 false CRC 8bit Calculator Instance complex class NaN local NaN NaN NaN NaN false false true true false NaN /HNB_GASOLINE/_29_CommunicationVehicle/CANInte... _040g1ngg01pp1oo708cg4rviuqor2 ComDef_HEV
601
+
602
+ [1175 rows x 22 columns]
603
+ ---
604
+ name OID public default defaultMethod hidden availableForOS model
605
+ 0 _ABS_ESC_01_10ms _040g1ngg00p91o870kb0a7d8r4524 true false true false true ComDef_HEV
606
+ 1 _ACU_02_00ms _040g030000001mo7109g4avsmjn5i true false false false true ComDef_HEV
607
+ 2 _BCM_12_200ms _040g030000001mo710eg5p0lpf73a true false false false true ComDef_HEV
608
+ .. ... ... ... ... ... ... ... ...
609
+ 62 _SMK_02_200ms _040g1j9410g01q071g90p9vm1m4g2 true false false false true ComDef_HEV
610
+ 63 _TMU_01_200ms _040g1ngg00p91o871cbg8vcrhmigk true false false false true ComDef_HEV
611
+ 64 _WAKEUP_01_00ms _040g030000001mo7109g4a84q0t5g true false false false true ComDef_HEV
612
+
613
+ [65 rows x 8 columns]
614
+ ```
615
+ #### 5.2.4. <i>.datadict(tag:str, depth:str)</i>
616
+ 1.2.3.절의 dictionary 형태 (예제 없음)
617
+
618
+ #### 5.2.5. <i>.export(path:str)</i>
619
+ 파일로 저장
620
+ ```commandline
621
+ main.export(r'./')
622
+ ```
623
+
624
+ #### 5.2.6. 기타 기능
625
+ ```commandline
626
+ # .export_to_downloads()
627
+ # 1.2.5.절의 저장 경로를 C:\User\Downloads 로 지정
628
+ ```
629
+
630
+ ```commandline
631
+ # .findParent(*elems:Element)
632
+ # Element의 부모 Element 를 리턴
633
+ ```
634
+
635
+ ```commandline
636
+ # .serialize()
637
+ # export를 위한 문자열을 리턴
638
+ ```
639
+
640
+ ```commandline
641
+ # .strictFind(tag:str, **kwargs)
642
+ # 태그와 Attribute가 kwargs의 조건을 만족하는 태그를 리턴
643
+ ```
644
+
645
+ ```commandline
646
+ # .replace(tag:str, attr_name:str, attr_value:dict)
647
+ # @tag와 @attr_name에 부합하는 태그를 찾은 뒤 attr_value.key값을 attr_value.value로 변경
648
+ ```
649
+
650
+ ### 5.3. WorkspaceIO
651
+ 워크스페이스 또는 SVN 전체 프로젝트 접근