[{"data":1,"prerenderedAt":1233},["ShallowReactive",2],{"docs-nav-docs_cs":3,"docs-page-\u002Fcs\u002Fexamples\u002Ftwo-ecus":366,"docs-surround-\u002Fcs\u002Fexamples\u002Ftwo-ecus":1230},[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":335,"body":368,"description":1224,"extension":1225,"meta":1226,"navTitle":335,"navigation":1227,"path":336,"seo":1228,"stem":337,"__hash__":1229},"docs_cs\u002Fcs\u002F12.examples\u002F09.two-ecus.md",{"type":369,"value":370,"toc":1210},"minimark",[371,375,392,404,411,426,431,494,501,505,510,516,529,553,564,575,579,587,649,660,671,682,686,705,716,727,731,738,831,842,853,864,875,886,897,900,922,982,993,997,1012,1059,1079,1085,1096,1100,1123,1134,1148,1152,1183,1187,1206],[372,373,335],"h1",{"id":374},"dvě-ecu-najednou",[376,377,378,379,383,384,387,388,391],"p",{},"Projekt ",[380,381,382],"code",{},"Qenex_TcpClient_XCP_2NucleoBoards_DAQ_STIM.qproj"," najdete ve složce\n",[380,385,386],{},"Examples"," vedle ",[380,389,390],{},"QInsight.exe",".",[376,393,394,395,399,400,403],{},"QInsight není omezený na jedno zařízení: v tomto příkladu měří, kalibruje\na stimuluje ",[396,397,398],"strong",{},"dvě reálné ECU současně"," — dvě desky NUCLEO-H723ZG\npřipojené přes switch k PC. Každá deska má vlastní driver a vlastní\ninstanci protokolu ",[396,401,402],{},"XCP on TCP",", signály obou jednotek jsou zobrazeny\nspolečně v jednom workspace: grafy je záměrně kombinují, tabulky vedou\nkaždou jednotku zvlášť.",[376,405,406],{},[407,408],"img",{"alt":409,"src":410},"Dvě desky NUCLEO-H723ZG připojené přes switch k notebooku s QInsight","\u002Fimg\u002FQInsight_tut_11_3_photo.jpg",[376,412,413,414,417,418,421,422,425],{},"Každá jednotka ",[396,415,416],{},"běží zcela nezávisle"," na vlastní IP adrese\n(",[380,419,420],{},"192.168.2.20"," a ",[380,423,424],{},"192.168.2.21",") — generuje tři sinusovky a přijímá\nzápisy parametrů. QInsight se ke každé připojuje samostatnou XCP session,\ntakže výpadek, kalibrace ani stimulace jedné jednotky druhou nijak\nneovlivní.",[427,428,430],"h2",{"id":429},"jak-příklad-funguje","Jak příklad funguje",[432,433,434,457,468,479],"ol",{},[435,436,437,438,441,442,445,446,449,450,421,453,456],"li",{},"Každá deska počítá tři sinusovky. ",[380,439,440],{},"sine1"," je rozdělená na ",[396,443,444],{},"raw","\n(interní model) a ",[396,447,448],{},"value"," (publikovaný signál) — na ní se předvádí\nSTIM bypass. ",[380,451,452],{},"sine2",[380,454,455],{},"sine3"," jsou běžná měření.",[435,458,459,460,463,464,467],{},"Měřené signály přicházejí ",[396,461,462],{},"DAQ eventem po 10 ms",", kalibrační\nparametry (amplitudy, periody) se čtou ",[396,465,466],{},"pollingem po 500 ms","\na dají se kdykoli zapsat.",[435,469,470,471,474,475,478],{},"Periodický skript streamuje přes ",[396,472,473],{},"STIM"," do ",[380,476,477],{},"sine1_stim"," obou desek\npomalou sinusovku — pro každou jednotku s jiným rozkmitem\na frekvencí, aby byly v grafech na první pohled rozlišitelné.",[435,480,481,482,485,486,489,490,493],{},"Přepínačem ",[380,483,484],{},"sine1_bypass"," si u každé jednotky ",[396,487,488],{},"nezávisle"," vyberete,\njestli ",[380,491,492],{},"sine1_value"," vlastní interní model desky, nebo master přes\nSTIM.",[376,495,496,497,500],{},"Podstata vícejednotkového projektu je v konfiguraci: ",[396,498,499],{},"každá\njednotka = vlastní driver + vlastní instance protokolu",", zbytek\n(eventy, konverze, prezentace) se sdílí.",[427,502,504],{"id":503},"projekt-krok-za-krokem","Projekt krok za krokem",[506,507,509],"h3",{"id":508},"projekt-a-drivery","Projekt a drivery",[376,511,512,513,391],{},"Projekt se jmenuje ",[396,514,515],{},"XCP on TCP - 2x Nucleo demo signals (STIM bypass)",[376,517,518,524],{},[407,519],{"alt":520,"src":521,"className":522},"Záložka Project — název a popis projektu","\u002Fimg\u002FQInsight_tut_11_3_project_light.png",[523],"img-light",[407,525],{"alt":520,"src":526,"className":527},"\u002Fimg\u002FQInsight_tut_11_3_project_dark.png",[528],"img-dark",[376,530,531,532,535,536,421,539,542,543,545,546,548,549,552],{},"V sekci Drivers & Protocols jsou ",[396,533,534],{},"dva TCP Client drivery"," — ",[380,537,538],{},"STM1 Nucleo TCP",[380,540,541],{},"STM2 Nucleo TCP",". Nastavení mají identické až na IP\nadresu: STM1 míří na ",[380,544,420],{},", STM2 na ",[380,547,424],{},". Pod každým\ndriverem běží ",[396,550,551],{},"vlastní instance protokolu XCP on TCP"," — dvě nezávislé\nXCP session, každá se svou deskou.",[376,554,555,560],{},[407,556],{"alt":557,"src":558,"className":559},"Driver STM1 Nucleo TCP — ip=192.168.2.20, pod ním instance XCP on TCP","\u002Fimg\u002FQInsight_tut_11_3_drivers_stm1_light.png",[523],[407,561],{"alt":557,"src":562,"className":563},"\u002Fimg\u002FQInsight_tut_11_3_drivers_stm1_dark.png",[528],[376,565,566,571],{},[407,567],{"alt":568,"src":569,"className":570},"Driver STM2 Nucleo TCP — jediný rozdíl je ip=192.168.2.21","\u002Fimg\u002FQInsight_tut_11_3_drivers_stm2_light.png",[523],[407,572],{"alt":568,"src":573,"className":574},"\u002Fimg\u002FQInsight_tut_11_3_drivers_stm2_dark.png",[528],[506,576,578],{"id":577},"eventy","Eventy",[376,580,581,582,586],{},"Tři ",[583,584,577],"a",{"href":585},"\u002Fcs\u002Freference\u002Fprotocols#polling-daq-a-stim-u-xcp"," definované\njednou a sdílené oběma protokoly — každá XCP session si z nich vytvoří\nvlastní běhový kontext:",[588,589,590,606],"table",{},[591,592,593],"thead",{},[594,595,596,600,603],"tr",{},[597,598,599],"th",{},"Event",[597,601,602],{},"Typ",[597,604,605],{},"K čemu",[607,608,609,623,636],"tbody",{},[594,610,611,617,620],{},[612,613,614],"td",{},[380,615,616],{},"Daq_demo10ms",[612,618,619],{},"DAQ, 10 ms",[612,621,622],{},"deska sama streamuje měřené signály",[594,624,625,630,633],{},[612,626,627],{},[380,628,629],{},"Stim_demo10ms",[612,631,632],{},"STIM, 10 ms",[612,634,635],{},"master streamuje stimulaci do desky",[594,637,638,643,646],{},[612,639,640],{},[380,641,642],{},"Poll500ms",[612,644,645],{},"polling, 500 ms",[612,647,648],{},"čtení kalibračních parametrů",[376,650,651,656],{},[407,652],{"alt":653,"src":654,"className":655},"Event Daq_demo10ms — direction DAQ, perioda 10 ms","\u002Fimg\u002FQInsight_tut_11_3_event_daq_light.png",[523],[407,657],{"alt":653,"src":658,"className":659},"\u002Fimg\u002FQInsight_tut_11_3_event_daq_dark.png",[528],[376,661,662,667],{},[407,663],{"alt":664,"src":665,"className":666},"Event Stim_demo10ms — direction STIM, tentýž firmware event","\u002Fimg\u002FQInsight_tut_11_3_event_stim_light.png",[523],[407,668],{"alt":664,"src":669,"className":670},"\u002Fimg\u002FQInsight_tut_11_3_event_stim_dark.png",[528],[376,672,673,678],{},[407,674],{"alt":675,"src":676,"className":677},"Event Poll500ms — obyčejné periodické čtení","\u002Fimg\u002FQInsight_tut_11_3_event_poll_light.png",[523],[407,679],{"alt":675,"src":680,"className":681},"\u002Fimg\u002FQInsight_tut_11_3_event_poll_dark.png",[528],[506,683,685],{"id":684},"konverze","Konverze",[376,687,688,689,692,693,696,697,700,701,704],{},"Dvě lineární konverze: ",[380,690,691],{},"PassThrough"," (1:1) pro většinu signálů\na ",[380,694,695],{},"StimPercent"," (",[380,698,699],{},"eng = raw × 5 + 50",") pro stimulaci — hodnota se zadává\nv ",[396,702,703],{},"procentech"," rozsahu ±10, takže 75 % znamená raw 5,0. QInsight\nkonverzi při zápisu invertuje a po STIM streamuje raw hodnotu.",[376,706,707,712],{},[407,708],{"alt":709,"src":710,"className":711},"Konverze PassThrough — lineární 1:1","\u002Fimg\u002FQInsight_tut_11_3_conv_passthrough_light.png",[523],[407,713],{"alt":709,"src":714,"className":715},"\u002Fimg\u002FQInsight_tut_11_3_conv_passthrough_dark.png",[528],[376,717,718,723],{},[407,719],{"alt":720,"src":721,"className":722},"Konverze StimPercent — eng = raw × 5 + 50, vstup v procentech","\u002Fimg\u002FQInsight_tut_11_3_conv_stimpercent_light.png",[523],[407,724],{"alt":720,"src":725,"className":726},"\u002Fimg\u002FQInsight_tut_11_3_conv_stimpercent_dark.png",[528],[506,728,730],{"id":729},"prezentace","Prezentace",[376,732,733,734,737],{},"Šest prezentací podle rolí signálů — a protože jsou obě desky stejné,\n",[396,735,736],{},"každou prezentaci sdílí příslušná dvojice proměnných STM1\u002FSTM2",":",[588,739,740,751],{},[591,741,742],{},[594,743,744,746,749],{},[597,745,730],{},[597,747,748],{},"Rozsah",[597,750,605],{},[607,752,753,766,779,792,805,818],{},[594,754,755,760,763],{},[612,756,757],{},[380,758,759],{},"Sine value",[612,761,762],{},"−10…10",[612,764,765],{},"výstupy sinusovek",[594,767,768,773,776],{},[612,769,770],{},[380,771,772],{},"Amplitude",[612,774,775],{},"0…10",[612,777,778],{},"kalibrační parametr amplitudy",[594,780,781,786,789],{},[612,782,783],{},[380,784,785],{},"Period",[612,787,788],{},"0,05…60 s",[612,790,791],{},"kalibrační parametr periody",[594,793,794,799,802],{},[612,795,796],{},[380,797,798],{},"HAL tick",[612,800,801],{},"ms",[612,803,804],{},"milisekundový čítač desky",[594,806,807,812,815],{},[612,808,809],{},[380,810,811],{},"Bypass",[612,813,814],{},"0\u002F1",[612,816,817],{},"přepínač bypassu",[594,819,820,825,828],{},[612,821,822],{},[380,823,824],{},"Stim level",[612,826,827],{},"0…100 %",[612,829,830],{},"stimulace (konverze StimPercent)",[376,832,833,838],{},[407,834],{"alt":835,"src":836,"className":837},"Prezentace Sine value — rozsah ±10","\u002Fimg\u002FQInsight_tut_11_3_pres_sine_light.png",[523],[407,839],{"alt":835,"src":840,"className":841},"\u002Fimg\u002FQInsight_tut_11_3_pres_sine_dark.png",[528],[376,843,844,849],{},[407,845],{"alt":846,"src":847,"className":848},"Prezentace Amplitude","\u002Fimg\u002FQInsight_tut_11_3_pres_amplitude_light.png",[523],[407,850],{"alt":846,"src":851,"className":852},"\u002Fimg\u002FQInsight_tut_11_3_pres_amplitude_dark.png",[528],[376,854,855,860],{},[407,856],{"alt":857,"src":858,"className":859},"Prezentace Period — jednotka s","\u002Fimg\u002FQInsight_tut_11_3_pres_period_light.png",[523],[407,861],{"alt":857,"src":862,"className":863},"\u002Fimg\u002FQInsight_tut_11_3_pres_period_dark.png",[528],[376,865,866,871],{},[407,867],{"alt":868,"src":869,"className":870},"Prezentace HAL tick — jednotka ms","\u002Fimg\u002FQInsight_tut_11_3_pres_tick_light.png",[523],[407,872],{"alt":868,"src":873,"className":874},"\u002Fimg\u002FQInsight_tut_11_3_pres_tick_dark.png",[528],[376,876,877,882],{},[407,878],{"alt":879,"src":880,"className":881},"Prezentace Bypass — 0\u002F1","\u002Fimg\u002FQInsight_tut_11_3_pres_bypass_light.png",[523],[407,883],{"alt":879,"src":884,"className":885},"\u002Fimg\u002FQInsight_tut_11_3_pres_bypass_dark.png",[528],[376,887,888,893],{},[407,889],{"alt":890,"src":891,"className":892},"Prezentace Stim level — procenta přes konverzi StimPercent","\u002Fimg\u002FQInsight_tut_11_3_pres_stim_light.png",[523],[407,894],{"alt":890,"src":895,"className":896},"\u002Fimg\u002FQInsight_tut_11_3_pres_stim_dark.png",[528],[506,898,77],{"id":899},"proměnné",[376,901,902,903,906,907,910,911,914,915,421,918,921],{},"Projekt má ",[396,904,905],{},"26 proměnných — stejná třináctka dvakrát",". Jména nesou\nprefix jednotky (",[380,908,909],{},"stm1_","\u002F",[380,912,913],{},"stm2_","), namespace je dělí na ",[380,916,917],{},"\u002FStm1",[380,919,920],{},"\u002FStm2","\na každá polovina je napojená na svůj protokol — obě sady se liší jen\ntím, ke které jednotce patří. Role v každé třináctce:",[923,924,925,936,948,959,968,975],"ul",{},[435,926,927,935],{},[396,928,929,931,932],{},[380,930,492],{}," + ",[380,933,934],{},"sine1_raw"," — publikovaný signál a interní model\n(DAQ); dvojice, na které je vidět bypass.",[435,937,938,947],{},[396,939,940,943,944],{},[380,941,942],{},"sine2_value",", ",[380,945,946],{},"sine3_value"," — běžná DAQ měření.",[435,949,950,958],{},[396,951,952,943,955],{},[380,953,954],{},"sine1–3_amplitude",[380,956,957],{},"sine1–3_period"," — zapisovatelné kalibrační\nparametry, čtené pollingem.",[435,960,961,967],{},[396,962,963,966],{},[380,964,965],{},"uwTick"," (HAL tick)"," — milisekundový čítač; důkaz, že po XCP je\ndostupná libovolná globální proměnná z ELF.",[435,969,970,974],{},[396,971,972],{},[380,973,477],{}," — zápisová proměnná streamovaná po STIM.",[435,976,977,981],{},[396,978,979],{},[380,980,484],{}," — přepínač: 0 = signál vlastní deska, 1 = master.",[376,983,984,989],{},[407,985],{"alt":986,"src":987,"className":988},"26 proměnných ve dvou namespacech \u002FStm1 a \u002FStm2, každá napojená na svůj protokol","\u002Fimg\u002FQInsight_tut_11_3_variables_light_v2.png",[523],[407,990],{"alt":986,"src":991,"className":992},"\u002Fimg\u002FQInsight_tut_11_3_variables_dark_v2.png",[528],[506,994,996],{"id":995},"skripty","Skripty",[376,998,999,1000,1003,1004,1007,1008,1011],{},"Stimulaci obsluhuje dvojice skriptů: ",[380,1001,1002],{},"init.py"," (Startup) připraví\nparametry, ",[380,1005,1006],{},"script.py"," (Periodic, 20 ms) obsluhuje ",[396,1009,1010],{},"obě jednotky najednou"," —\nkaždou jinou amplitudou a frekvencí, aby byly křivky v grafech\nrozlišitelné:",[1013,1014,1019],"pre",{"className":1015,"code":1016,"language":1017,"meta":1018,"style":1018},"language-python shiki shiki-themes github-light github-dark-default","import math\nt = 0\na = 50\nb = 75\nf1 = 1\u002F8\nf2 = 1\u002F3\n","python","",[380,1020,1021,1029,1035,1041,1047,1053],{"__ignoreMap":1018},[1022,1023,1026],"span",{"class":1024,"line":1025},"line",1,[1022,1027,1028],{},"import math\n",[1022,1030,1032],{"class":1024,"line":1031},2,[1022,1033,1034],{},"t = 0\n",[1022,1036,1038],{"class":1024,"line":1037},3,[1022,1039,1040],{},"a = 50\n",[1022,1042,1044],{"class":1024,"line":1043},4,[1022,1045,1046],{},"b = 75\n",[1022,1048,1050],{"class":1024,"line":1049},5,[1022,1051,1052],{},"f1 = 1\u002F8\n",[1022,1054,1056],{"class":1024,"line":1055},6,[1022,1057,1058],{},"f2 = 1\u002F3\n",[1013,1060,1062],{"className":1015,"code":1061,"language":1017,"meta":1018,"style":1018},"t += 0.02\nstm1_sine1_stim.EngValue = 50 + a * math.sin(2 * math.pi * f1 * t)\nstm2_sine1_stim.EngValue = 50 + b * math.sin(2 * math.pi * f2 * t)\n",[380,1063,1064,1069,1074],{"__ignoreMap":1018},[1022,1065,1066],{"class":1024,"line":1025},[1022,1067,1068],{},"t += 0.02\n",[1022,1070,1071],{"class":1024,"line":1031},[1022,1072,1073],{},"stm1_sine1_stim.EngValue = 50 + a * math.sin(2 * math.pi * f1 * t)\n",[1022,1075,1076],{"class":1024,"line":1037},[1022,1077,1078],{},"stm2_sine1_stim.EngValue = 50 + b * math.sin(2 * math.pi * f2 * t)\n",[376,1080,1081,1082,1084],{},"STM1 dostává pomalou vlnu (perioda 8 s), STM2 rychlejší a s větším\nrozkmitem (perioda 3 s). Zápis jde v procentech přes konverzi\n",[380,1083,695],{}," — skript s raw hodnotami vůbec nepracuje.",[376,1086,1087,1092],{},[407,1088],{"alt":1089,"src":1090,"className":1091},"Sekce Scripts — script.py každých 20 ms, init.py při startu","\u002Fimg\u002FQInsight_tut_11_3_scripts_light.png",[523],[407,1093],{"alt":1089,"src":1094,"className":1095},"\u002Fimg\u002FQInsight_tut_11_3_scripts_dark.png",[528],[427,1097,1099],{"id":1098},"výsledek","Výsledek",[376,1101,1102,1103,1106,1107,1110,1111,1114,1115,1118,1119,1122],{},"Workspace záměrně ",[396,1104,1105],{},"kombinuje signály obou desek v jednom grafu",": levý graf\nkreslí ",[380,1108,1109],{},"STM1 sine1"," (value + raw, STIM bypass) spolu se ",[380,1112,1113],{},"STM2 sine2\u002F3",",\npravý zrcadlově ",[380,1116,1117],{},"STM2 sine1"," spolu se ",[380,1120,1121],{},"STM1 sine2\u002F3",". Pod grafy jsou dvě\nWatch Table — jedna pro každou jednotku, obě s kompletní sadou: hodnoty,\nkalibrační parametry se zápisem, stimulace a bypass.",[376,1124,1125,1130],{},[407,1126],{"alt":1127,"src":1128,"className":1129},"Živý běh — dva grafy s kombinovanými signály obou desek, dvě tabulky pro každou jednotku","\u002Fimg\u002FQInsight_tut_11_3_workspace_light.png",[523],[407,1131],{"alt":1127,"src":1132,"className":1133},"\u002Fimg\u002FQInsight_tut_11_3_workspace_dark.png",[528],[376,1135,1136,1137,1140,1141,1143,1144,1147],{},"Zapněte ",[380,1138,1139],{},"STM1 Sine 1 bypass"," a červená čárkovaná křivka v levém grafu\npřestane sledovat interní model — převezme ji pomalá vlna ze skriptu,\nzatímco ",[380,1142,934],{}," pokračuje dál. STM2 přitom běží nezávisle vlastním tempem.\nStejně nezávislá je kalibrace: změna ",[380,1145,1146],{},"STM2 Sine 2 amplitude"," se projeví\njen na druhé desce.",[427,1149,1151],{"id":1150},"co-si-z-příkladu-odnést","Co si z příkladu odnést",[923,1153,1154,1160,1171,1177],{},[435,1155,1156,1159],{},[396,1157,1158],{},"Více jednotek = více dvojic driver + protokol."," Konfigurace se jinak\nnemění; eventy, konverze i prezentace se definují jednou a sdílejí.",[435,1161,1162,1165,1166,943,1168,1170],{},[396,1163,1164],{},"Jednotky běží nezávisle"," — každá na své adrese, se svou session;\nvýpadek nebo zásah do jedné se druhé nedotkne. Prefixy jmen\na namespacy (",[380,1167,917],{},[380,1169,920],{},") udržují projekt přehledný.",[435,1172,1173,1176],{},[396,1174,1175],{},"Grafy nejsou vázané na zdroj"," — do jednoho grafu lze přidat\nsignály z různých zařízení a porovnáváte je na společné časové ose.",[435,1178,1179,1182],{},[396,1180,1181],{},"Kalibrace a STIM zůstávají oddělené pro každou jednotku"," — každá session má vlastní\nzápisy, vlastní bypass a vlastní stimulaci; jeden skript může řídit\nvšechny najednou.",[427,1184,1186],{"id":1185},"dále","Dále",[923,1188,1189,1195,1201],{},[435,1190,1191,1194],{},[583,1192,402],{"href":1193},"\u002Fcs\u002Freference\u002Fprotocols#xcp-on-tcp"," — nastavení protokolu\na driveru v referenci.",[435,1196,1197,1200],{},[583,1198,1199],{"href":585},"Polling, DAQ a STIM u XCP","\n— jak se tři způsoby přenosu liší a kdy který použít.",[435,1202,1203,1205],{},[583,1204,331],{"href":332}," — další kompletní\npříklad nad konfigurací projektu.",[1207,1208,1209],"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":1018,"searchDepth":1037,"depth":1037,"links":1211},[1212,1213,1221,1222,1223],{"id":429,"depth":1031,"text":430},{"id":503,"depth":1031,"text":504,"children":1214},[1215,1216,1217,1218,1219,1220],{"id":508,"depth":1037,"text":509},{"id":577,"depth":1037,"text":578},{"id":684,"depth":1037,"text":685},{"id":729,"depth":1037,"text":730},{"id":899,"depth":1037,"text":77},{"id":995,"depth":1037,"text":996},{"id":1098,"depth":1031,"text":1099},{"id":1150,"depth":1031,"text":1151},{"id":1185,"depth":1031,"text":1186},"Reálný projekt se dvěma jednotkami na XCP on TCP — dvě instance driveru i protokolu, signály obou desek kombinované v grafech, nezávislá kalibrace a STIM pro každou jednotku.","md",{},true,{"title":335,"description":1224},"Yts8H4Mtcj2ceX-9YZ_WYkoczXFBidwlF_bUvnOxX_8",[1231,1232],{"title":331,"path":332,"stem":333,"navTitle":331,"children":-1},{"title":339,"path":340,"stem":341,"navTitle":339,"children":-1},1791554569411]