[{"data":1,"prerenderedAt":2205},["ShallowReactive",2],{"docs-nav-docs_cs":3,"docs-page-\u002Fcs\u002Fexamples\u002Ftcp-client-xcp-nucleo-maps":366,"docs-surround-\u002Fcs\u002Fexamples\u002Ftcp-client-xcp-nucleo-maps":2202},[4],{"title":5,"path":6,"stem":7,"children":8},"Cs","\u002Fcs","cs",[9,13,41,58,76,103,157,171,190,211,238,282,302],{"title":10,"path":6,"stem":11,"navTitle":12},"Dokumentace QInsight","cs\u002Findex","Přehled",{"title":14,"navTitle":15,"path":16,"stem":17,"children":18,"page":40},"Začínáme",null,"\u002Fcs\u002Fgetting-started","cs\u002F01.getting-started",[19,23,27,31,36],{"title":20,"path":21,"stem":22,"navTitle":20},"Co je QENEX Suite","\u002Fcs\u002Fgetting-started\u002Fwhat-is-qenex-suite","cs\u002F01.getting-started\u002F1.what-is-qenex-suite",{"title":24,"path":25,"stem":26,"navTitle":24},"Co je QInsight","\u002Fcs\u002Fgetting-started\u002Fwhat-is-qinsight","cs\u002F01.getting-started\u002F2.what-is-qinsight",{"title":28,"path":29,"stem":30,"navTitle":28},"Instalace","\u002Fcs\u002Fgetting-started\u002Finstallation","cs\u002F01.getting-started\u002F3.installation",{"title":32,"path":33,"stem":34,"navTitle":35},"Uživatelské rozhraní QInsight","\u002Fcs\u002Fgetting-started\u002Fthe-qinsight-interface","cs\u002F01.getting-started\u002F4.the-qinsight-interface","Uživatelské rozhraní",{"title":37,"path":38,"stem":39,"navTitle":37},"Licencování","\u002Fcs\u002Fgetting-started\u002Flicensing","cs\u002F01.getting-started\u002F5.licensing",false,{"title":42,"navTitle":15,"path":43,"stem":44,"children":45,"page":40},"První projekt","\u002Fcs\u002Ffirst-project","cs\u002F02.first-project",[46,50,54],{"title":47,"path":48,"stem":49,"navTitle":47},"Založení projektu","\u002Fcs\u002Ffirst-project\u002Fcreate-a-project","cs\u002F02.first-project\u002F1.create-a-project",{"title":51,"path":52,"stem":53,"navTitle":51},"Struktura projektu","\u002Fcs\u002Ffirst-project\u002Fproject-structure","cs\u002F02.first-project\u002F2.project-structure",{"title":55,"path":56,"stem":57,"navTitle":55},"Heslo projektu","\u002Fcs\u002Ffirst-project\u002Fproject-password","cs\u002F02.first-project\u002F3.project-password",{"title":59,"navTitle":15,"path":60,"stem":61,"children":62,"page":40},"Připojení zařízení","\u002Fcs\u002Fconnecting-a-device","cs\u002F03.connecting-a-device",[63,67,71],{"title":64,"path":65,"stem":66,"navTitle":64},"Přidání driveru","\u002Fcs\u002Fconnecting-a-device\u002Fadd-a-driver","cs\u002F03.connecting-a-device\u002F1.add-a-driver",{"title":68,"path":69,"stem":70,"navTitle":68},"Přidání protokolu","\u002Fcs\u002Fconnecting-a-device\u002Fadd-a-protocol","cs\u002F03.connecting-a-device\u002F2.add-a-protocol",{"title":72,"path":73,"stem":74,"navTitle":75},"Propojení driveru a protokolu","\u002Fcs\u002Fconnecting-a-device\u002Flink-driver-and-protocol","cs\u002F03.connecting-a-device\u002F3.link-driver-and-protocol","Propojení",{"title":77,"navTitle":15,"path":78,"stem":79,"children":80,"page":40},"Proměnné","\u002Fcs\u002Fvariables","cs\u002F04.variables",[81,85,89,93,98],{"title":82,"path":83,"stem":84,"navTitle":82},"Co je proměnná","\u002Fcs\u002Fvariables\u002Fwhat-is-a-variable","cs\u002F04.variables\u002F1.what-is-a-variable",{"title":86,"path":87,"stem":88,"navTitle":86},"Konverze a prezentace","\u002Fcs\u002Fvariables\u002Fconversion-and-presentation","cs\u002F04.variables\u002F2.conversion-and-presentation",{"title":90,"path":91,"stem":92,"navTitle":90},"Přidání proměnné","\u002Fcs\u002Fvariables\u002Fadd-a-variable","cs\u002F04.variables\u002F3.add-a-variable",{"title":94,"path":95,"stem":96,"navTitle":97},"Proměnná Matrix (pole, křivka, mapa)","\u002Fcs\u002Fvariables\u002Fmatrix-variable","cs\u002F04.variables\u002F4.matrix-variable","Proměnná Matrix",{"title":99,"path":100,"stem":101,"navTitle":102},"Události (Events)","\u002Fcs\u002Fvariables\u002Fevents","cs\u002F04.variables\u002F5.events","Události",{"title":104,"navTitle":15,"path":105,"stem":106,"children":107,"page":40},"Vizualizace","\u002Fcs\u002Fvisualization","cs\u002F05.visualization",[108,113,118,122,127,132,137,142,147,152],{"title":109,"path":110,"stem":111,"navTitle":112},"Vytvoření pracovní plochy","\u002Fcs\u002Fvisualization\u002Fcreate-a-workspace","cs\u002F05.visualization\u002F1.create-a-workspace","Pracovní plocha",{"title":114,"path":115,"stem":116,"navTitle":117},"Zápis hodnot do zařízení","\u002Fcs\u002Fvisualization\u002Fwrite-to-device","cs\u002F05.visualization\u002F10.write-to-device","Zápis do zařízení",{"title":119,"path":120,"stem":121,"navTitle":119},"Přidání controlu","\u002Fcs\u002Fvisualization\u002Fadd-a-control","cs\u002F05.visualization\u002F2.add-a-control",{"title":123,"path":124,"stem":125,"navTitle":126},"Navázání controlu na proměnnou","\u002Fcs\u002Fvisualization\u002Fbind-a-control","cs\u002F05.visualization\u002F3.bind-a-control","Navázání controlu",{"title":128,"path":129,"stem":130,"navTitle":131},"Graph — časový průběh signálů","\u002Fcs\u002Fvisualization\u002Fgraph-control","cs\u002F05.visualization\u002F4.graph-control","Graph",{"title":133,"path":134,"stem":135,"navTitle":136},"XY Graph — signál proti signálu","\u002Fcs\u002Fvisualization\u002Fxy-graph-control","cs\u002F05.visualization\u002F5.xy-graph-control","XY Graph",{"title":138,"path":139,"stem":140,"navTitle":141},"Gauge — ukazatel okamžité hodnoty","\u002Fcs\u002Fvisualization\u002Fgauge-control","cs\u002F05.visualization\u002F6.gauge-control","Gauge",{"title":143,"path":144,"stem":145,"navTitle":146},"Single-Signal — hodnota s popiskem","\u002Fcs\u002Fvisualization\u002Fsignal-control","cs\u002F05.visualization\u002F7.signal-control","Single-Signal",{"title":148,"path":149,"stem":150,"navTitle":151},"Watch Table — tabulka proměnných","\u002Fcs\u002Fvisualization\u002Fwatch-table-control","cs\u002F05.visualization\u002F8.watch-table-control","Watch Table",{"title":153,"path":154,"stem":155,"navTitle":156},"Matrix control — mapy a kalibrace","\u002Fcs\u002Fvisualization\u002Fmatrix-control","cs\u002F05.visualization\u002F9.matrix-control","Matrix control",{"title":158,"navTitle":15,"path":159,"stem":160,"children":161,"page":40},"Běh a sledování","\u002Fcs\u002Frunning","cs\u002F06.running",[162,166],{"title":163,"path":164,"stem":165,"navTitle":163},"Spuštění a zastavení","\u002Fcs\u002Frunning\u002Fstart-and-stop","cs\u002F06.running\u002F1.start-and-stop",{"title":167,"path":168,"stem":169,"navTitle":170},"Sledování živých dat","\u002Fcs\u002Frunning\u002Fwatching-live-data","cs\u002F06.running\u002F2.watching-live-data","Živá data",{"title":172,"navTitle":15,"path":173,"stem":174,"children":175,"page":40},"Logování a přehrávání","\u002Fcs\u002Flogging-and-replay","cs\u002F07.logging-and-replay",[176,180,185],{"title":177,"path":178,"stem":179,"navTitle":177},"Logování dat","\u002Fcs\u002Flogging-and-replay\u002Flogging-data","cs\u002F07.logging-and-replay\u002F1.logging-data",{"title":181,"path":182,"stem":183,"navTitle":184},"Přehrávání logu","\u002Fcs\u002Flogging-and-replay\u002Freplaying-a-log","cs\u002F07.logging-and-replay\u002F2.replaying-a-log","Přehrávání",{"title":186,"path":187,"stem":188,"navTitle":189},"Export dat","\u002Fcs\u002Flogging-and-replay\u002Fexporting-data","cs\u002F07.logging-and-replay\u002F3.exporting-data","Export",{"title":191,"navTitle":15,"path":192,"stem":193,"children":194,"page":40},"Python skripty","\u002Fcs\u002Fpython-scripts","cs\u002F08.python-scripts",[195,199,203,207],{"title":196,"path":197,"stem":198,"navTitle":12},"Přehled skriptů","\u002Fcs\u002Fpython-scripts\u002Fscripts-overview","cs\u002F08.python-scripts\u002F1.scripts-overview",{"title":200,"path":201,"stem":202,"navTitle":200},"Přístup k proměnným","\u002Fcs\u002Fpython-scripts\u002Faccessing-variables","cs\u002F08.python-scripts\u002F2.accessing-variables",{"title":204,"path":205,"stem":206,"navTitle":204},"Příklad skriptu","\u002Fcs\u002Fpython-scripts\u002Fexample-script","cs\u002F08.python-scripts\u002F3.example-script",{"title":208,"path":209,"stem":210,"navTitle":208},"Post-processing CSV","\u002Fcs\u002Fpython-scripts\u002Fcsv-post-processing","cs\u002F08.python-scripts\u002F4.csv-post-processing",{"title":212,"navTitle":15,"path":213,"stem":214,"children":215,"page":40},"Vlastní rozšíření","\u002Fcs\u002Fcustom-extensions","cs\u002F09.custom-extensions",[216,220,224,228,233],{"title":217,"path":218,"stem":219,"navTitle":217},"Vlastní driver","\u002Fcs\u002Fcustom-extensions\u002Fcustom-driver","cs\u002F09.custom-extensions\u002F1.custom-driver",{"title":221,"path":222,"stem":223,"navTitle":221},"Vlastní protokol","\u002Fcs\u002Fcustom-extensions\u002Fcustom-protocol","cs\u002F09.custom-extensions\u002F2.custom-protocol",{"title":225,"path":226,"stem":227,"navTitle":225},"Vlastní Control","\u002Fcs\u002Fcustom-extensions\u002Fcustom-control","cs\u002F09.custom-extensions\u002F3.custom-control",{"title":229,"path":230,"stem":231,"navTitle":232},"Kompletní ukázka — poloha ISS","\u002Fcs\u002Fcustom-extensions\u002Fiss-example","cs\u002F09.custom-extensions\u002F4.iss-example","Ukázka ISS",{"title":234,"path":235,"stem":236,"navTitle":237},"Kompletní ukázka — teploměr","\u002Fcs\u002Fcustom-extensions\u002Ftemp-sensor-example","cs\u002F09.custom-extensions\u002F5.temp-sensor-example","Ukázka teploměr",{"title":239,"navTitle":15,"path":240,"stem":241,"children":242,"page":40},"QFW SDK","\u002Fcs\u002Fdevice-sdk","cs\u002F10.device-sdk",[243,248,253,258,263,268,272,277],{"title":244,"path":245,"stem":246,"navTitle":247},"QFW SDK — úvod","\u002Fcs\u002Fdevice-sdk\u002Fintroduction","cs\u002F10.device-sdk\u002F1.introduction","Úvod",{"title":249,"path":250,"stem":251,"navTitle":252},"XCP v QFW SDK","\u002Fcs\u002Fdevice-sdk\u002Fxcp","cs\u002F10.device-sdk\u002F2.xcp","XCP",{"title":254,"path":255,"stem":256,"navTitle":257},"Integrace krok za krokem: XCP on TCP s FreeRTOS + lwIP","\u002Fcs\u002Fdevice-sdk\u002Fintegration-tcp","cs\u002F10.device-sdk\u002F3.integration-tcp","Integrace: XCP on TCP",{"title":259,"path":260,"stem":261,"navTitle":262},"XCP on classic CAN — co se mění","\u002Fcs\u002Fdevice-sdk\u002Fcan","cs\u002F10.device-sdk\u002F4.can","XCP on classic CAN",{"title":264,"path":265,"stem":266,"navTitle":267},"Integrace bez RTOS: XCP on TCP z hlavní smyčky","\u002Fcs\u002Fdevice-sdk\u002Fbaremetal","cs\u002F10.device-sdk\u002F5.baremetal","Integrace bez RTOS",{"title":269,"path":270,"stem":271,"navTitle":269},"Kontrakt enginu","\u002Fcs\u002Fdevice-sdk\u002Fengine-contract","cs\u002F10.device-sdk\u002F6.engine-contract",{"title":273,"path":274,"stem":275,"navTitle":276},"Adresy proměnných pro QInsight","\u002Fcs\u002Fdevice-sdk\u002Fvariable-addresses","cs\u002F10.device-sdk\u002F7.variable-addresses","Adresy proměnných",{"title":278,"path":279,"stem":280,"navTitle":281},"Řešení potíží při integraci SDK","\u002Fcs\u002Fdevice-sdk\u002Ftroubleshooting","cs\u002F10.device-sdk\u002F8.troubleshooting","Řešení potíží",{"title":283,"navTitle":15,"path":284,"stem":285,"children":286,"page":40},"Reference","\u002Fcs\u002Freference","cs\u002F11.reference",[287,291,295,299],{"title":288,"path":289,"stem":290,"navTitle":288},"Drivery","\u002Fcs\u002Freference\u002Fdrivers","cs\u002F11.reference\u002F1.drivers",{"title":292,"path":293,"stem":294,"navTitle":292},"Protokoly","\u002Fcs\u002Freference\u002Fprotocols","cs\u002F11.reference\u002F2.protocols",{"title":296,"path":297,"stem":298,"navTitle":296},"Controls","\u002Fcs\u002Freference\u002Fcontrols","cs\u002F11.reference\u002F3.controls",{"title":281,"path":300,"stem":301,"navTitle":281},"\u002Fcs\u002Freference\u002Ftroubleshooting","cs\u002F11.reference\u002F4.troubleshooting",{"title":303,"navTitle":15,"path":304,"stem":305,"children":306,"page":40},"Příklady","\u002Fcs\u002Fexamples","cs\u002F12.examples",[307,311,316,321,326,330,334,338,342,346,351,356,361],{"title":308,"path":309,"stem":310,"navTitle":308},"Simulace: všechny signály","\u002Fcs\u002Fexamples\u002Fsimulation-all-signals","cs\u002F12.examples\u002F01.simulation-all-signals",{"title":312,"path":313,"stem":314,"navTitle":315},"Modbus RTU master po sériové lince","\u002Fcs\u002Fexamples\u002Fserial-modbus-master","cs\u002F12.examples\u002F02.serial-modbus-master","Modbus RTU master",{"title":317,"path":318,"stem":319,"navTitle":320},"Modbus RTU slave se simulovanými senzory","\u002Fcs\u002Fexamples\u002Fserial-modbus-slave","cs\u002F12.examples\u002F03.serial-modbus-slave","Modbus RTU slave",{"title":322,"path":323,"stem":324,"navTitle":325},"Modbus TCP master přes TCP klienta","\u002Fcs\u002Fexamples\u002Ftcp-client-modbus-master","cs\u002F12.examples\u002F04.tcp-client-modbus-master","Modbus TCP master",{"title":327,"path":328,"stem":329,"navTitle":327},"Modbus TCP slave na TCP serveru","\u002Fcs\u002Fexamples\u002Ftcp-server-modbus-slave","cs\u002F12.examples\u002F05.tcp-server-modbus-slave",{"title":331,"path":332,"stem":333,"navTitle":331},"Bitové pole a skript","\u002Fcs\u002Fexamples\u002Fbit-field-script","cs\u002F12.examples\u002F08.bit-field-script",{"title":335,"path":336,"stem":337,"navTitle":335},"Dvě ECU najednou","\u002Fcs\u002Fexamples\u002Ftwo-ecus","cs\u002F12.examples\u002F09.two-ecus",{"title":339,"path":340,"stem":341,"navTitle":339},"Poloha ISS naživo","\u002Fcs\u002Fexamples\u002Fiss-live-tracking","cs\u002F12.examples\u002F10.iss-live-tracking",{"title":343,"path":344,"stem":345,"navTitle":343},"Simulovaný teploměr","\u002Fcs\u002Fexamples\u002Fsimul-temp-measure","cs\u002F12.examples\u002F11.simul-temp-measure",{"title":347,"path":348,"stem":349,"navTitle":350},"JSON signály z Python generátoru","\u002Fcs\u002Fexamples\u002Fjson-signal-python","cs\u002F12.examples\u002F12.json-signal-python","JSON signály z Pythonu",{"title":352,"path":353,"stem":354,"navTitle":355},"Raw CAN rámce z Raspberry","\u002Fcs\u002Fexamples\u002Fraw-can-python","cs\u002F12.examples\u002F13.raw-can-python","Raw CAN z Raspberry",{"title":357,"path":358,"stem":359,"navTitle":360},"XCP on TCP na NUCLEO-H723ZG: měření, stimulace a kalibrační mapy","\u002Fcs\u002Fexamples\u002Ftcp-client-xcp-nucleo-maps","cs\u002F12.examples\u002F14.tcp-client-xcp-nucleo-maps","XCP on TCP na NUCLEO-H723ZG",{"title":362,"path":363,"stem":364,"navTitle":365},"XCP on CAN na NUCLEO-H723ZG: měření, stimulace a kalibrační mapy","\u002Fcs\u002Fexamples\u002Fcan-xcp-nucleo-maps","cs\u002F12.examples\u002F15.can-xcp-nucleo-maps","XCP on CAN na NUCLEO-H723ZG",{"id":367,"title":357,"body":368,"description":2196,"extension":2197,"meta":2198,"navTitle":360,"navigation":2199,"path":358,"seo":2200,"stem":359,"__hash__":2201},"docs_cs\u002Fcs\u002F12.examples\u002F14.tcp-client-xcp-nucleo-maps.md",{"type":369,"value":370,"toc":2182},"minimark",[371,375,388,451,463,487,501,506,643,647,694,697,704,709,719,722,825,828,880,883,893,896,902,998,1009,1013,1037,1299,1302,1351,1355,1358,1527,1534,1537,1678,1681,1685,1695,1730,1742,1757,1784,1788,1794,1863,1866,1870,2096,2100,2178],[372,373,357],"h1",{"id":374},"xcp-on-tcp-na-nucleo-h723zg-měření-stimulace-a-kalibrační-mapy",[376,377,378,379,383,384,387],"p",{},"Ve složce ",[380,381,382],"code",{},"Examples"," vedle QInsight.exe jsou dva projekty této ukázky,\njeden pro každý obraz firmwaru z ",[385,386,239],"a",{"href":250},":",[389,390,391,407],"table",{},[392,393,394],"thead",{},[395,396,397,401,404],"tr",{},[398,399,400],"th",{},"Projekt",[398,402,403],{},"Obraz firmwaru",[398,405,406],{},"Kapitola SDK",[408,409,410,432],"tbody",{},[395,411,412,418,428],{},[413,414,415],"td",{},[380,416,417],{},"Qenex_TcpClient_XCP_NucleoH723_Maps_FreeRTOS.qproj",[413,419,420,423,424,427],{},[380,421,422],{},"examples\u002Fnucleo_h723zg",", preset ",[380,425,426],{},"Debug"," (FreeRTOS + lwIP)",[413,429,430],{},[385,431,257],{"href":255},[395,433,434,439,447],{},[413,435,436],{},[380,437,438],{},"Qenex_TcpClient_XCP_NucleoH723_Maps_BareMetal.qproj",[413,440,441,423,444,446],{},[380,442,443],{},"examples\u002Fnucleo_h723zg_baremetal",[380,445,426],{}," (bez RTOS, lwIP RAW API)",[413,448,449],{},[385,450,267],{"href":265},[376,452,453,454,458,459,462],{},"Oba projekty jsou obsahově shodné — stejný driver, události, proměnné,\nskripty i pracovní plocha; liší se ",[455,456,457],"strong",{},"pouze adresami"," pěti proměnných,\nkteré v obou obrazech leží jinde (čítač ",[380,460,461],{},"uwTick"," a čtyři maticové\nobjekty). Z pohledu QInsight se deska chová v obou případech stejně.",[376,464,465,466,469,470,474,475,478,479,482,483,486],{},"Na rozdíl od simulačních ukázek zde QInsight komunikuje se ",[455,467,468],{},"skutečným\nzařízením",": deskou NUCLEO s XCP slavem, připojenou po Ethernetu. Na\njednom projektu jsou vidět všechny režimy protokolu\n",[385,471,473],{"href":472},"\u002Fcs\u002Freference\u002Fprotocols#xcp-on-tcp","XCP on TCP"," — DAQ, polling se\nzápisem, STIM a přenos ",[385,476,477],{"href":95},"proměnných Matrix","\nv ",[455,480,481],{},"block módu"," — a k tomu chování driveru ",[455,484,485],{},"TCP Client",", když se\nspojení přeruší.",[376,488,489,496],{},[490,491],"img",{"alt":492,"className":493,"src":495},"Plocha „Nucleo H723 live + maps“ za běhu — sinusovky z desky, mapa zapalování, Watch Table a křivka momentu",[494],"img-light","\u002Fimg\u002FQInsight_ex_nucleo_maps_light.png",[490,497],{"alt":492,"className":498,"src":500},[499],"img-dark","\u002Fimg\u002FQInsight_ex_nucleo_maps_dark.png",[502,503,505],"h2",{"id":504},"co-ukázka-předvádí","Co ukázka předvádí",[507,508,509,528,538,548,568,581,599,605,615,633],"ul",{},[510,511,512,515,516,519,520,523,524,527],"li",{},[455,513,514],{},"DAQ měření"," — firmware generuje tři sinusovky (",[380,517,518],{},"sine1","–",[380,521,522],{},"sine3",")\na jejich hodnoty vysílá sám z event kanálu ",[380,525,526],{},"demo10ms"," každých 10 ms;\nQInsight nevysílá žádné dotazy.",[510,529,530,533,534,537],{},[455,531,532],{},"Polling kalibračních parametrů"," — amplitudy a periody všech tří\nsinusovek se čtou každých 500 ms a dají se ",[455,535,536],{},"kdykoli zapsat","; firmware\nna změnu reaguje okamžitě.",[510,539,540,543,544,547],{},[455,541,542],{},"STIM streaming"," — periodický skript počítá pomalou sinusovku\nv procentech a QInsight ji proudem STIM paketů posílá do desky na\nadresu ",[380,545,546],{},"sine1_value","; ve stejném event kanálu, kterým deska měří.",[510,549,550,556,557,559,560,563,564,567],{},[455,551,552,553],{},"Přepínač ",[380,554,555],{},"sine1_bypass"," — rozhoduje, kdo signál ",[380,558,546],{},"\nvlastní: ",[380,561,562],{},"0"," = interní model desky, ",[380,565,566],{},"1"," = master přes STIM.",[510,569,570,573,574,577,578,580],{},[455,571,572],{},"Rozdělení raw\u002Fvalue"," — ",[380,575,576],{},"sine1_raw"," je výstup interního modelu\n(počítá se každý cyklus, i během bypassu), ",[380,579,546],{}," je publikovaný\nsignál. V grafu jsou obě křivky vedle sebe, takže je bypass vidět na\nprvní pohled.",[510,582,583,586,587,590,591,594,595,598],{},[455,584,585],{},"Mapu čtenou na vyžádání"," — mapa předstihu 16 × 16 (",[380,588,589],{},"float",", 1072 B)\nje navázaná na událost ",[455,592,593],{},"On Request",": nečte se periodicky, celý blok\nnačte až tlačítko ",[455,596,597],{},"Read"," v Matrix controlu.",[510,600,601,604],{},[455,602,603],{},"Křivku čtenou pollingem"," — osmibodová křivka momentu (32 B) se čte\nkaždých 500 ms jako jeden blok.",[510,606,607,610,611,614],{},[455,608,609],{},"Velkou mapu 64 × 64"," — 16 640 B, největší blok, který QInsight po\nXCP přenese; čte se na vyžádání řadou ",[380,612,613],{},"UPLOAD"," burstů.",[510,616,617,620,621,624,625,628,629,632],{},[455,618,619],{},"Kalibraci buněk"," — ve ",[455,622,623],{},"Write Mode"," se editují buňky i breakpointy\nos; do desky se zapíší ",[455,626,627],{},"jen změněné buňky"," (sousední buňky se sloučí\ndo jednoho bloku ",[380,630,631],{},"DOWNLOAD",").",[510,634,635,638,639,642],{},[455,636,637],{},"Zpětnou vazbu z firmwaru"," — skalár ",[380,640,641],{},"qfwDemoMapOut"," („Map lookup“)\nfirmware každých 10 ms počítá jako součet jedné buňky z každého\nmaticového objektu, takže zapsaná buňka se ve Watch Table hned projeví.",[502,644,646],{"id":645},"co-potřebujete","Co potřebujete",[507,648,649,660,673],{},[510,650,651,652,655,656,659],{},"Desku ",[455,653,654],{},"NUCLEO-H723ZG"," s jedním ze dvou obrazů ukázkového firmwaru\nQFW SDK (tabulka výše) a k němu odpovídající projekt. Oba obrazy\nobsahují demo signály, maticové objekty z ",[380,657,658],{},"app\u002Fsrc\u002Fdemo_map.c","\na slave hlásí block mód.",[510,661,662,663,672],{},"Ethernetové spojení s deskou. Projekt počítá s adresou\n",[455,664,665,668,669],{},[380,666,667],{},"192.168.2.20",", port ",[380,670,671],{},"5555"," — upravte ji v nastavení driveru podle\nsvé sítě (PC musí být ve stejné podsíti).",[510,674,675,678,679,682,683,686,687,690,691,693],{},[455,676,677],{},"Adresy proměnných odpovídající vašemu sestavení firmwaru."," Adresy\njsou absolutní (address extension 0) a pocházejí z ELF souboru:\nnástroj ",[380,680,681],{},"tools\u002Felf_vars_scan.py"," z balíčku SDK je s konfigurací\n",[380,684,685],{},"nucleo_h723zg.vars.json"," (resp. ",[380,688,689],{},"nucleo_h723zg_baremetal.vars.json",")\nze složky příkladu vyčte a vytvoří soubor pro import do QInsight\n(Home → Project Configuration → Variables → Import); pole exportuje\njako proměnné Matrix s adresou osy X v popisu. Po každém překladu\nfirmwaru adresy obnovte a v projektu přepište — jinak QInsight čte\na stimuluje nesprávná místa v paměti. Postup popisuje kapitola\n",[385,692,273],{"href":274},".",[502,695,400],{"id":696},"projekt",[376,698,699,700,703],{},"Projekt obsahuje jeden driver TCP Client s protokolem XCP on TCP, čtyři\nudálosti, sedmnáct proměnných, dva skripty a pracovní plochu\n",[455,701,702],{},"Nucleo H723 live + maps"," se čtyřmi controly.",[705,706,708],"h3",{"id":707},"driver-a-protokol","Driver a protokol",[376,710,711,712,715,716,718],{},"Jeden driver ",[385,713,485],{"href":714},"\u002Fcs\u002Freference\u002Fdrivers#tcp-client",", pod ním\njedna instance protokolu ",[455,717,473],{}," — deska je TCP server, QInsight\nklient.",[376,720,721],{},"Nastavení driveru:",[389,723,724,737],{},[392,725,726],{},[395,727,728,731,734],{},[398,729,730],{},"Parametr",[398,732,733],{},"Hodnota",[398,735,736],{},"Význam",[408,738,739,751,763,779,791,812],{},[395,740,741,746,748],{},[413,742,743],{},[380,744,745],{},"ip",[413,747,667],{},[413,749,750],{},"adresa desky",[395,752,753,758,760],{},[413,754,755],{},[380,756,757],{},"port",[413,759,671],{},[413,761,762],{},"TCP port XCP slavu",[395,764,765,770,773],{},[413,766,767],{},[380,768,769],{},"connectionTimeoutMs",[413,771,772],{},"1500",[413,774,775,776],{},"jak dlouho čekat na navázání spojení — záměrně krátce: po vytažení kabelu první pokus obvykle začne, když se linka ještě vyjednává, a další pokus následuje po ",[380,777,778],{},"reconnectDelayMs",[395,780,781,785,788],{},[413,782,783],{},[380,784,778],{},[413,786,787],{},"1000",[413,789,790],{},"prodleva mezi pokusy o znovupřipojení",[395,792,793,798,801],{},[413,794,795],{},[380,796,797],{},"reconnectAttempts",[413,799,800],{},"3",[413,802,803,804,807,808,811],{},"po třech neúspěšných pokusech v řadě driver další pokusy ",[455,805,806],{},"ukončí"," (výchozí ",[380,809,810],{},"-1"," opakuje pokusy bez omezení)",[395,813,814,819,822],{},[413,815,816],{},[380,817,818],{},"keepAliveMs",[413,820,821],{},"5000",[413,823,824],{},"po 5 s bez provozu ověří TCP keepalive stav spojení — zjistí odpojený kabel",[376,826,827],{},"Nastavení protokolu:",[389,829,830,840],{},[392,831,832],{},[395,833,834,836,838],{},[398,835,730],{},[398,837,733],{},[398,839,736],{},[408,841,842,854,867],{},[395,843,844,849,851],{},[413,845,846],{},[380,847,848],{},"requestTimeoutMs",[413,850,787],{},[413,852,853],{},"timeout odpovědi na jeden XCP příkaz",[395,855,856,861,864],{},[413,857,858],{},[380,859,860],{},"requestRetries",[413,862,863],{},"2",[413,865,866],{},"opakování příkazu po timeoutu (navíc k prvnímu pokusu)",[395,868,869,874,877],{},[413,870,871],{},[380,872,873],{},"daqTimestamps",[413,875,876],{},"slave",[413,878,879],{},"časová osa DAQ vzorků podle hodin desky (µs značky z QFW SDK)",[376,881,882],{},"Timeouty protokolu se týkají jen výměny příkaz\u002Fodpověď; navázání\na obnovu TCP spojení řídí driver.",[376,884,885,886,889,890,892],{},"Block mód se nenastavuje — protokol ho zjistí při připojení a zapíše do\nlogu, např.\n",[380,887,888],{},"XCP: block mode — slave yes, master yes (MAX_BS 255, MIN_ST 0 × 100 µs).","\nNa TCP (MAX_CTO 248) je mapa 1 KB jeden ",[380,891,613],{}," burst pěti paketů.",[705,894,102],{"id":895},"události",[376,897,898,899,901],{},"Čtyři ",[385,900,895],{"href":100},", které rozhodují o režimu každé\nproměnné:",[389,903,904,920],{},[392,905,906],{},[395,907,908,911,914,917],{},[398,909,910],{},"Událost",[398,912,913],{},"Typ",[398,915,916],{},"Extra Params",[398,918,919],{},"Použití",[408,921,922,942,963,984],{},[395,923,924,929,932,937],{},[413,925,926],{},[380,927,928],{},"Daq_demo10ms",[413,930,931],{},"Periodic 10 ms",[413,933,934],{},[380,935,936],{},"direction=\"DAQ\";daqId=\"0\"",[413,938,939,940],{},"DAQ — deska vysílá sinusovky sama z kanálu ",[380,941,526],{},[395,943,944,949,951,956],{},[413,945,946],{},[380,947,948],{},"Stim_demo10ms",[413,950,931],{},[413,952,953],{},[380,954,955],{},"direction=\"STIM\";daqId=\"0\"",[413,957,958,959,962],{},"STIM — master každých 10 ms streamuje ",[380,960,961],{},"sine1_stim"," do téhož kanálu",[395,964,965,970,973,976],{},[413,966,967],{},[380,968,969],{},"Poll500ms",[413,971,972],{},"Periodic 500 ms",[413,974,975],{},"—",[413,977,978,979,981,982],{},"polling parametrů, přepínače bypass, čítače ",[380,980,461],{},", křivky a ",[380,983,641],{},[395,985,986,991,993,995],{},[413,987,988],{},[380,989,990],{},"OnRequest",[413,992,990],{},[413,994,975],{},[413,996,997],{},"mapy čtené tlačítkem Read",[376,999,1000,1001,1004,1005,1008],{},"DAQ i STIM míří na ",[455,1002,1003],{},"jeden a tentýž event kanál firmwaru"," (",[380,1006,1007],{},"daqId 0",").\nDeska přijaté STIM pakety ukládá a zapisuje je do paměti uvnitř triggeru\nudálosti — ve stejném okamžiku, kdy vzorkuje DAQ. U DAQ události perioda\nnic neřídí (jen dokumentuje cyklus kanálu, QInsight ji porovná s údajem\nz desky), u STIM události je to skutečný interval vysílání.",[705,1010,1012],{"id":1011},"skalární-proměnné","Skalární proměnné",[376,1014,1015,1016,1018,1019,1004,1021,1024,1025,1004,1027,1030,1031,1034,1035,387],{},"Třináct skalárních proměnných; všechny ",[380,1017,589],{}," kromě ",[380,1020,461],{},[380,1022,1023],{},"uint",")\na ",[380,1026,555],{},[380,1028,1029],{},"byte","). Address extension je všude 0. Adresy\nv bloku ",[380,1032,1033],{},"gDemoSignals"," jsou v obou obrazech stejné, liší se jen\n",[380,1036,461],{},[389,1038,1039,1057],{},[392,1040,1041],{},[395,1042,1043,1046,1049,1052,1054],{},[398,1044,1045],{},"Proměnná",[398,1047,1048],{},"Adresa",[398,1050,1051],{},"Směr",[398,1053,910],{},[398,1055,1056],{},"Prezentace (konverze)",[408,1058,1059,1078,1096,1114,1132,1152,1171,1190,1209,1227,1245,1263,1281],{},[395,1060,1061,1065,1068,1071,1075],{},[413,1062,1063],{},[380,1064,546],{},[413,1066,1067],{},"0x2400005C",[413,1069,1070],{},"read",[413,1072,1073],{},[380,1074,928],{},[413,1076,1077],{},"Sine value −10…10 (PassThrough)",[395,1079,1080,1084,1087,1089,1093],{},[413,1081,1082],{},[380,1083,576],{},[413,1085,1086],{},"0x24000058",[413,1088,1070],{},[413,1090,1091],{},[380,1092,928],{},[413,1094,1095],{},"Sine value (PassThrough)",[395,1097,1098,1103,1106,1108,1112],{},[413,1099,1100],{},[380,1101,1102],{},"sine2_value",[413,1104,1105],{},"0x24000074",[413,1107,1070],{},[413,1109,1110],{},[380,1111,928],{},[413,1113,1095],{},[395,1115,1116,1121,1124,1126,1130],{},[413,1117,1118],{},[380,1119,1120],{},"sine3_value",[413,1122,1123],{},"0x2400008C",[413,1125,1070],{},[413,1127,1128],{},[380,1129,928],{},[413,1131,1095],{},[395,1133,1134,1139,1142,1145,1149],{},[413,1135,1136],{},[380,1137,1138],{},"sine1_amplitude",[413,1140,1141],{},"0x24000050",[413,1143,1144],{},"readWrite",[413,1146,1147],{},[380,1148,969],{},[413,1150,1151],{},"Amplitude 0…10 (PassThrough)",[395,1153,1154,1159,1162,1164,1168],{},[413,1155,1156],{},[380,1157,1158],{},"sine1_period",[413,1160,1161],{},"0x24000054",[413,1163,1144],{},[413,1165,1166],{},[380,1167,969],{},[413,1169,1170],{},"Period 0,05…60 s (PassThrough)",[395,1172,1173,1178,1181,1183,1187],{},[413,1174,1175],{},[380,1176,1177],{},"sine2_amplitude",[413,1179,1180],{},"0x24000068",[413,1182,1144],{},[413,1184,1185],{},[380,1186,969],{},[413,1188,1189],{},"Amplitude (PassThrough)",[395,1191,1192,1197,1200,1202,1206],{},[413,1193,1194],{},[380,1195,1196],{},"sine2_period",[413,1198,1199],{},"0x2400006C",[413,1201,1144],{},[413,1203,1204],{},[380,1205,969],{},[413,1207,1208],{},"Period (PassThrough)",[395,1210,1211,1216,1219,1221,1225],{},[413,1212,1213],{},[380,1214,1215],{},"sine3_amplitude",[413,1217,1218],{},"0x24000080",[413,1220,1144],{},[413,1222,1223],{},[380,1224,969],{},[413,1226,1189],{},[395,1228,1229,1234,1237,1239,1243],{},[413,1230,1231],{},[380,1232,1233],{},"sine3_period",[413,1235,1236],{},"0x24000084",[413,1238,1144],{},[413,1240,1241],{},[380,1242,969],{},[413,1244,1208],{},[395,1246,1247,1251,1254,1256,1260],{},[413,1248,1249],{},[380,1250,555],{},[413,1252,1253],{},"0x24000060",[413,1255,1144],{},[413,1257,1258],{},[380,1259,969],{},[413,1261,1262],{},"Bypass 0\u002F1 (PassThrough)",[395,1264,1265,1269,1271,1274,1278],{},[413,1266,1267],{},[380,1268,961],{},[413,1270,1067],{},[413,1272,1273],{},"write",[413,1275,1276],{},[380,1277,948],{},[413,1279,1280],{},"Stim level 0…100 % (StimPercent)",[395,1282,1283,1287,1290,1292,1296],{},[413,1284,1285],{},[380,1286,461],{},[413,1288,1289],{},"FreeRTOS 0x24000124 \u002F bez RTOS 0x2400011C",[413,1291,1070],{},[413,1293,1294],{},[380,1295,969],{},[413,1297,1298],{},"HAL tick, ms (PassThrough)",[376,1300,1301],{},"Za povšimnutí stojí:",[507,1303,1304,1316,1340,1348],{},[510,1305,1306,1308,1309,1311,1312,1315],{},[380,1307,961],{}," a ",[380,1310,546],{}," mají ",[455,1313,1314],{},"stejnou adresu"," — stimulace píše\npřímo do místa, které deska publikuje; liší se jen směrem a událostí.",[510,1317,1318,1319,1004,1322,1325,1326,1329,1330,1333,1334,1337,1338,632],{},"Konverze ",[380,1320,1321],{},"StimPercent",[380,1323,1324],{},"multiplier=5",", ",[380,1327,1328],{},"offset=50",") mapuje raw rozsah\n±10 na 0–100 %: zadaných ",[455,1331,1332],{},"75 %"," dá raw ",[455,1335,1336],{},"5,0",", 50 % je nula.\nZápis se zadává v inženýrské hodnotě a QInsight ji před odesláním\ninvertuje (viz ",[385,1339,86],{"href":87},[510,1341,1342,1344,1345,1347],{},[380,1343,461],{}," je milisekundový čítač HAL z STM32 — leží mimo blok\n",[380,1346,1033],{}," a dokazuje, že po XCP je dosažitelná libovolná globální\nproměnná z ELF.",[510,1349,1350],{},"Výchozí hodnoty sinusovek podle firmwaru: sine 1 amplituda 1,0 \u002F\nperioda 1 s, sine 2 amplituda 5,0 \u002F 3 s, sine 3 amplituda 0,5 \u002F 10 s.\nPeriodu pod 0,05 s firmware ořízne.",[705,1352,1354],{"id":1353},"maticové-proměnné","Maticové proměnné",[376,1356,1357],{},"Čtyři proměnné kalibračních dat, všechny little-endian, address\nextension 0:",[389,1359,1360,1383],{},[392,1361,1362],{},[395,1363,1364,1367,1370,1373,1376,1379,1381],{},[398,1365,1366],{},"Proměnná (Label)",[398,1368,1369],{},"Tvar a typy",[398,1371,1372],{},"Velikost",[398,1374,1375],{},"Adresa FreeRTOS",[398,1377,1378],{},"Adresa bez RTOS",[398,1380,1051],{},[398,1382,910],{},[408,1384,1385,1425,1461,1496],{},[395,1386,1387,1393,1406,1409,1414,1419,1421],{},[413,1388,1389,1392],{},[380,1390,1391],{},"qfwDemoMap"," (Ignition map)",[413,1394,1395,1396,1398,1399,1402,1403,1405],{},"mapa 16 × 16 ",[380,1397,589],{},"; osa X ",[380,1400,1401],{},"ushort"," (rpm), osa Y ",[380,1404,1029],{}," (load)",[413,1407,1408],{},"1072 B",[413,1410,1411],{},[380,1412,1413],{},"0x24014280",[413,1415,1416],{},[380,1417,1418],{},"0x24008FC0",[413,1420,1144],{},[413,1422,1423],{},[380,1424,990],{},[395,1426,1427,1433,1442,1445,1450,1455,1457],{},[413,1428,1429,1432],{},[380,1430,1431],{},"qfwDemoCurve"," (Torque curve)",[413,1434,1435,1436,1438,1439,1441],{},"křivka 8 bodů ",[380,1437,1401],{},", osa X ",[380,1440,1401],{}," (rpm)",[413,1443,1444],{},"32 B",[413,1446,1447],{},[380,1448,1449],{},"0x240146B0",[413,1451,1452],{},[380,1453,1454],{},"0x240093F0",[413,1456,1144],{},[413,1458,1459],{},[380,1460,969],{},[395,1462,1463,1469,1477,1480,1485,1490,1492],{},[413,1464,1465,1468],{},[380,1466,1467],{},"qfwDemoBigMap"," (Injection map 64x64)",[413,1470,1471,1472,1474,1475],{},"mapa 64 × 64 ",[380,1473,589],{},"; osy X a Y ",[380,1476,1401],{},[413,1478,1479],{},"16 640 B",[413,1481,1482],{},[380,1483,1484],{},"0x240146D0",[413,1486,1487],{},[380,1488,1489],{},"0x24009410",[413,1491,1144],{},[413,1493,1494],{},[380,1495,990],{},[395,1497,1498,1503,1508,1511,1516,1521,1523],{},[413,1499,1500,1502],{},[380,1501,641],{}," (Map lookup)",[413,1504,1505,1506],{},"skalár ",[380,1507,589],{},[413,1509,1510],{},"4 B",[413,1512,1513],{},[380,1514,1515],{},"0x240187D0",[413,1517,1518],{},[380,1519,1520],{},"0x2400D510",[413,1522,1070],{},[413,1524,1525],{},[380,1526,969],{},[376,1528,1529,1530,632],{},"Adresa matice ukazuje na začátek bloku, tedy na osu X; v paměti\nnásleduje osa Y a data po řádcích (viz\n",[385,1531,1533],{"href":1532},"\u002Fcs\u002Freference\u002Fprotocols#prom%C4%9Bnn%C3%A9-typu-matrix-u-xcp","Proměnné typu Matrix u XCP",[376,1535,1536],{},"Prezentace os a dat:",[389,1538,1539,1554],{},[392,1540,1541],{},[395,1542,1543,1546,1549,1552],{},[398,1544,1545],{},"Prezentace",[398,1547,1548],{},"Rozsah",[398,1550,1551],{},"Jednotka",[398,1553,919],{},[408,1555,1556,1572,1590,1610,1628,1645,1662],{},[395,1557,1558,1563,1566,1569],{},[413,1559,1560],{},[380,1561,1562],{},"RpmAxisPres",[413,1564,1565],{},"0–8000",[413,1567,1568],{},"rpm",[413,1570,1571],{},"osa X všech tří matic",[395,1573,1574,1579,1582,1585],{},[413,1575,1576],{},[380,1577,1578],{},"LoadAxisPres",[413,1580,1581],{},"0–100",[413,1583,1584],{},"%",[413,1586,1587,1588],{},"osa Y ",[380,1589,1391],{},[395,1591,1592,1597,1599,1601],{},[413,1593,1594],{},[380,1595,1596],{},"LoadTenthAxisPres",[413,1598,1581],{},[413,1600,1584],{},[413,1602,1587,1603,1605,1606,1609],{},[380,1604,1467],{}," — konverze ",[380,1607,1608],{},"LoadTenth"," (×0,1), raw je v desetinách procenta",[395,1611,1612,1617,1620,1623],{},[413,1613,1614],{},[380,1615,1616],{},"AdvancePres",[413,1618,1619],{},"0–40",[413,1621,1622],{},"deg",[413,1624,1625,1626],{},"data ",[380,1627,1391],{},[395,1629,1630,1635,1638,1641],{},[413,1631,1632],{},[380,1633,1634],{},"TorquePres",[413,1636,1637],{},"0–300",[413,1639,1640],{},"Nm",[413,1642,1625,1643],{},[380,1644,1431],{},[395,1646,1647,1652,1655,1658],{},[413,1648,1649],{},[380,1650,1651],{},"InjectionPres",[413,1653,1654],{},"0–1100",[413,1656,1657],{},"mg",[413,1659,1625,1660],{},[380,1661,1467],{},[395,1663,1664,1669,1672,1674],{},[413,1665,1666],{},[380,1667,1668],{},"MapOutPres",[413,1670,1671],{},"0–2500",[413,1673,975],{},[413,1675,1676],{},[380,1677,641],{},[376,1679,1680],{},"Výchozí hodnoty ve firmwaru: mapa zapalování má osu X 800–6800 rpm\na osu Y 0–90 %, křivka osu X 1000–6600 rpm a hodnoty 120–225 Nm, velká\nmapa osu X 500–6800 rpm.",[705,1682,1684],{"id":1683},"skripty","Skripty",[376,1686,1687,1690,1691,1694],{},[380,1688,1689],{},"init.py"," v režimu ",[455,1692,1693],{},"Startup"," připraví stav generátoru — čas, rozkmit\na frekvenci stimulační sinusovky:",[1696,1697,1702],"pre",{"className":1698,"code":1699,"language":1700,"meta":1701,"style":1701},"language-python shiki shiki-themes github-light github-dark-default","import math\nt = 0\na = 40\nf = 1\u002F5\n","python","",[380,1703,1704,1712,1718,1724],{"__ignoreMap":1701},[1705,1706,1709],"span",{"class":1707,"line":1708},"line",1,[1705,1710,1711],{},"import math\n",[1705,1713,1715],{"class":1707,"line":1714},2,[1705,1716,1717],{},"t = 0\n",[1705,1719,1721],{"class":1707,"line":1720},3,[1705,1722,1723],{},"a = 40\n",[1705,1725,1727],{"class":1707,"line":1726},4,[1705,1728,1729],{},"f = 1\u002F5\n",[376,1731,1732,1690,1735,1004,1738,1741],{},[380,1733,1734],{},"script.py",[455,1736,1737],{},"Periodic",[380,1739,1740],{},"period=20;unit=ms",") posouvá čas\no 20 ms a zapisuje novou hodnotu v procentech:",[1696,1743,1745],{"className":1698,"code":1744,"language":1700,"meta":1701,"style":1701},"t += 0.02\nsine1_stim.EngValue = 50 + a * math.sin(2 * math.pi * f * t)\n",[380,1746,1747,1752],{"__ignoreMap":1701},[1705,1748,1749],{"class":1707,"line":1708},[1705,1750,1751],{},"t += 0.02\n",[1705,1753,1754],{"class":1707,"line":1714},[1705,1755,1756],{},"sine1_stim.EngValue = 50 + a * math.sin(2 * math.pi * f * t)\n",[376,1758,1759,1760,1763,1764,1767,1768,1770,1771,1774,1775,1308,1777,1780,1781,1783],{},"Výsledkem je sinusovka ",[455,1761,1762],{},"10–90 %"," s periodou 5 s, tedy raw ±8. Skript\npíše ",[380,1765,1766],{},"EngValue","; inverzní konverzi provede QInsight, STIM list pak každých\n10 ms streamuje poslední raw hodnotu — skript běží pomaleji než stream,\ntakže každou hodnotu deska obdrží dvakrát. Oba skripty jsou jen pro\nruntime, ne pro replay (viz\n",[385,1769,200],{"href":201},"). Skripty\n",[385,1772,1773],{"href":201},"sdílejí jeden prostor",", takže\n",[380,1776,385],{},[380,1778,1779],{},"f"," z ",[380,1782,1689],{}," můžete za běhu měnit v okně Python Interpreter.",[705,1785,1787],{"id":1786},"workspace","Workspace",[376,1789,1790,1791,1793],{},"Plocha ",[455,1792,702],{}," má čtyři controly:",[507,1795,1796,1814,1831,1843],{},[510,1797,1798,573,1802,1804,1805,1807,1808,1810,1811,1813],{},[455,1799,1800],{},[385,1801,131],{"href":129},[380,1803,546],{},"\n(červená), ",[380,1806,576],{}," (oranžová), ",[380,1809,1102],{}," (modrá) a\n",[380,1812,1120],{}," (zelená); osy s automatickým měřítkem.",[510,1815,1816,1820,1821,1823,1824,1826,1827,1830],{},[455,1817,1818],{},[385,1819,151],{"href":149}," (obnova\n250 ms) — všechny skalární proměnné kromě ",[380,1822,576],{},", včetně\n",[380,1825,641],{},", se sloupcem ",[455,1828,1829],{},"Write"," pro zápis po řádcích.",[510,1832,1833,573,1837,1839,1840,1842],{},[455,1834,1835],{},[385,1836,136],{"href":134},[380,1838,546],{}," na\nose X proti ",[380,1841,1120],{}," na ose Y, stopa 10 s.",[510,1844,1845,1850,1851,1853,1854,1856,1857,1859,1860,1862],{},[455,1846,1847],{},[385,1848,1849],{"href":154},"Matrix"," se třemi záložkami:\nmapa ",[380,1852,1391],{}," (s tlačítkem ",[455,1855,597],{},", protože je na události\nOn Request; zapnutá barevná škála 0–32,5), křivka ",[380,1858,1431],{}," (bez\ntlačítka Read — obnovuje se pollingem) a velká mapa ",[380,1861,1467],{},"\n(s tlačítkem Read). Díky virtualizované tabulce se i mapa 64 × 64\nzobrazuje a posouvá plynule.",[376,1864,1865],{},"Vedle plochy jsou v rozložení otevřené oba skripty a Python interpreter.",[502,1867,1869],{"id":1868},"co-uvidíte-a-co-vyzkoušet","Co uvidíte a co vyzkoušet",[1871,1872,1873,1888,1903,1918,1927,1933,1946,1973,2016,2030,2044,2057],"ol",{},[510,1874,1875,1878,1879,1881,1882,1884,1885,1887],{},[455,1876,1877],{},"Connect."," Driver se připojí, protokol naváže XCP session, zjistí\nblock mód, nastaví DAQ i STIM list a graf se rozběhne: tři sinusovky\nz desky a k nim ",[380,1880,576],{}," shodná se ",[380,1883,546],{},". Watch Table\na křivka momentu se naplní do 500 ms; tabulka mapy zapalování zůstává\nprázdná — je na události On Request. STIM streamuje od začátku —\ndokud je bypass ",[380,1886,562],{},", deska ho ignoruje.",[510,1889,1890,1893,1894,1896,1897,1308,1900,1902],{},[455,1891,1892],{},"Read."," Stiskněte ",[455,1895,597],{}," na záložce mapy zapalování — načte se\ncelý blok 1072 B (jeden ",[380,1898,1899],{},"SET_MTA",[380,1901,613],{}," burst) a zobrazí se jako\nheat mapa.",[510,1904,1905,1908,1909,1911,1912,1914,1915,1917],{},[455,1906,1907],{},"Write Mode."," V kontextovém menu mapy zapněte ",[455,1910,623],{},",\nupravte několik buněk (Tab přechází na další buňku) a stiskněte\n",[455,1913,1829],{},". Zapíší se jen změněné buňky. Novou hodnotu control ukáže\naž po dalším ",[455,1916,597],{}," — zobrazuje jen to, co vrátí deska.",[510,1919,1920,1923,1924,693],{},[455,1921,1922],{},"Map lookup."," Po zápisu buňky, kterou firmware sčítá, se ve Watch\nTable změní hodnota ",[380,1925,1926],{},"Map lookup",[510,1928,1929,1932],{},[455,1930,1931],{},"Křivka."," Zapište bod křivky momentu (Write Mode na její záložce)\n— nejbližší polling po 500 ms novou hodnotu potvrdí.",[510,1934,1935,1938,1939,1942,1943,1945],{},[455,1936,1937],{},"Velká mapa."," Na záložce ",[380,1940,1941],{},"Injection map 64x64"," stiskněte Read:\n16 640 B se načte řadou ",[380,1944,613],{}," burstů po 255 B. Zapněte barevnou\nškálu (Color scale) v nastavení controlu a mapu si prohlédněte jako\nheat mapu.",[510,1947,1948,1951,1952,1954,1955,1957,1958,1960,1961,1963,1964,1966,1967,1969,1970,1972],{},[455,1949,1950],{},"Bypass zapnout."," V tabulce zaškrtněte ",[455,1953,1829],{}," u ",[380,1956,555],{},",\nzadejte ",[380,1959,566],{}," a potvrďte Enter. ",[380,1962,546],{}," v tom okamžiku přestane\nkopírovat ",[380,1965,576],{}," a začne sledovat ",[380,1968,961],{}," — pomalou\nsinusovku ±8 ze skriptu. Oranžová křivka ",[380,1971,576],{}," pokračuje dál:\ninterní model se počítá nadále, jen se nepublikuje. XY graf se změní,\nprotože osa X dostala jiný signál.",[510,1974,1975,1978,1979,1981,1982,1985,1986,1989,1990,1992,1995,1996,1998,1999,2001,2002,2004,2005,2007,2008,2011,2012,2015],{},[455,1976,1977],{},"Ruční stimulace."," Skript přepisuje ",[380,1980,961],{}," každých 20 ms,\nruční hodnota by tedy platila jen krátký okamžik. V Python\nInterpreteru nastavte ",[380,1983,1984],{},"a = 0"," (nebo před dalším Connect\nv ",[455,1987,1988],{},"Home → Project Configuration → Scripts"," odškrtněte u ",[380,1991,1734],{},[455,1993,1994],{},"Runtime","), zapněte bypass a do ",[380,1997,961],{}," zapište ",[455,2000,1332],{}," —\n",[380,2003,546],{}," ukáže ",[455,2006,1336],{},"; ",[380,2009,2010],{},"50 %"," je nula, ",[380,2013,2014],{},"0 %"," je −10. Zapsaná\nhodnota se do desky odesílá opakovaně, dokud ji nový zápis nenahradí.",[510,2017,2018,2021,2022,573,2025,2027,2028,693],{},[455,2019,2020],{},"Bypass vypnout."," Zapište ",[380,2023,2024],{},"sine1_bypass = 0",[380,2026,546],{}," se\nvrátí k internímu modelu a opět splyne se ",[380,2029,576],{},[510,2031,2032,2035,2036,2039,2040,2043],{},[455,2033,2034],{},"Kalibrace."," Zapište např. ",[380,2037,2038],{},"sine2_amplitude = 8"," nebo\n",[380,2041,2042],{},"sine3_period = 2"," — křivka se změní okamžitě, polling po 500 ms\nnovou hodnotu potvrdí zpět v tabulce.",[510,2045,2046,2049,2050,1004,2053,2056],{},[455,2047,2048],{},"Druhá instance QInsight."," Otevřete projekt podruhé (nebo jakýkoli\njiný klient na port 5555) a spusťte Connect: deska nové spojení\n",[455,2051,2052],{},"okamžitě odmítne",[380,2054,2055],{},"forcibly closed by the remote host"," v Logs),\nběžící měření první instance pokračuje nerušeně. Druhý driver\nzkouší každou sekundu znovu a připojí se, jakmile první relaci\nukončíte.",[510,2058,2059,2062,2063,2066,2067,2070,2071,2074,2075,2078,2079,2082,2083,2086,2087,2090,2091,2095],{},[455,2060,2061],{},"Výpadek spojení."," Odpojte od desky ethernetový kabel. Několik\nsekund zůstává stav beze změny, pak keepalive spojení ukončí a driver\npřejde do ",[455,2064,2065],{},"Faulted",": v Logs přibývají varování ",[380,2068,2069],{},"… failed (attempt N\u002F3) …",".\nPo ",[455,2072,2073],{},"třech"," neúspěšných pokusech driver ohlásí chybu ",[380,2076,2077],{},"gave up after 3 reconnect attempt(s)",", zastaví svůj protokol a skončí ve stavu\n",[455,2080,2081],{},"Stopped"," — runtime a případné další drivery (logování, simulace)\nběží dál. Znovu připojte kabel, klikněte na driver v Solution Exploreru\na v okně ",[455,2084,2085],{},"Properties"," stiskněte ",[455,2088,2089],{},"Start",": driver se připojí, protokol\nnaváže novou XCP session a měření pokračuje bez zastavení runtime\n(viz ",[385,2092,2094],{"href":2093},"\u002Fcs\u002Frunning\u002Fstart-and-stop#stavy-driver%C5%AF-a-tla%C4%8D%C3%ADtko-start","Stavy driverů a tlačítko Start",").\nPokud kabel znovu připojíte dříve, než se limit pokusů vyčerpá, spojení\nse obnoví samo a počítadlo pokusů se vynuluje. Deska spojení zahodí\nsama, jakmile jí vypadne vlastní linka (kabel vytažený z desky), takže\nnové připojení přijme okamžitě — s tímto nastavením je měření zpět\nzhruba 3,5 s po zasunutí kabelu. Mastera ztraceného za linkou desky\n(kabel vytažený u switche, zamrzlé PC) odhalí deska svým keepalive do\n~5 s — do té doby odmítá nové spojení stejně jako druhou instanci.",[502,2097,2099],{"id":2098},"související-kapitoly","Související kapitoly",[507,2101,2102,2119,2128,2136,2141,2146,2151,2161,2167,2172],{},[510,2103,2104,2106,2107,2106,2111,2113,2114,2118],{},[385,2105,473],{"href":472},",\n",[385,2108,2110],{"href":2109},"\u002Fcs\u002Freference\u002Fprotocols#polling-daq-a-stim-u-xcp","Polling, DAQ a STIM u XCP",[385,2112,1533],{"href":1532},"\na ",[385,2115,2117],{"href":2116},"\u002Fcs\u002Freference\u002Fprotocols#block-m%C3%B3d","Block mód"," — nastavení protokolu,\nComm params, DAQ\u002FSTIM události a diagnostika.",[510,2120,2121,2113,2123,2127],{},[385,2122,485],{"href":714},[385,2124,2126],{"href":2125},"\u002Fcs\u002Freference\u002Fdrivers#obnova-spojen%C3%AD","Obnova spojení"," — parametry\ndriveru a chování po výpadku.",[510,2129,2130,2132,2133,2135],{},[385,2131,97],{"href":95}," a\n",[385,2134,156],{"href":154}," — layout matice,\ntabulka, Write Mode, schránka a barevná škála.",[510,2137,2138,2140],{},[385,2139,102],{"href":100}," — Extra Params pro DAQ a STIM, událost\nOn Request.",[510,2142,2143,2145],{},[385,2144,114],{"href":115}," — zápis\nz Watch Table v inženýrských jednotkách.",[510,2147,2148,2150],{},[385,2149,163],{"href":164}," — stavy driverů\na tlačítko Start.",[510,2152,2153,2155,2156,2132,2158,2160],{},[385,2154,249],{"href":250}," — strana firmwaru: event kanály,\nčasové značky, block mód;\n",[385,2157,257],{"href":255},[385,2159,267],{"href":265}," — jak oba ukázkové\nobrazy vznikají krok za krokem.",[510,2162,2163,2166],{},[385,2164,2165],{"href":363},"Kalibrační mapy po XCP on CAN"," —\ntatáž ukázka po sběrnici CAN.",[510,2168,2169,2171],{},[385,2170,335],{"href":336}," — tentýž firmware na dvou\ndeskách současně, každá s vlastním driverem.",[510,2173,2174,693],{},[385,2175,2177],{"href":2176},"\u002Fcs\u002Freference\u002Ftroubleshooting#xcp-a-daq","Řešení potíží — XCP a DAQ",[2179,2180,2181],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":1701,"searchDepth":1720,"depth":1720,"links":2183},[2184,2185,2186,2194,2195],{"id":504,"depth":1714,"text":505},{"id":645,"depth":1714,"text":646},{"id":696,"depth":1714,"text":400,"children":2187},[2188,2189,2190,2191,2192,2193],{"id":707,"depth":1720,"text":708},{"id":895,"depth":1720,"text":102},{"id":1011,"depth":1720,"text":1012},{"id":1353,"depth":1720,"text":1354},{"id":1683,"depth":1720,"text":1684},{"id":1786,"depth":1720,"text":1787},{"id":1868,"depth":1714,"text":1869},{"id":2098,"depth":1714,"text":2099},"Reálná deska NUCLEO s firmwarem z QFW SDK po Ethernetu — DAQ měření sinusovek, polling a zápis parametrů, STIM stream ze skriptu s přepínačem bypass, proměnné Matrix (mapa 16×16, křivka, mapa 64×64) čtené na vyžádání a zapisované v block módu; dva projekty pro obraz s FreeRTOS a bez RTOS.","md",{},true,{"title":357,"description":2196},"NIKNpR_gS4N2FdYcES3oUG3R3J01we1PUVcze2yd-Jc",[2203,2204],{"title":352,"path":353,"stem":354,"navTitle":355,"children":-1},{"title":362,"path":363,"stem":364,"navTitle":365,"children":-1},1791554569494]