{"id":330954,"date":"2022-03-22T21:00:22","date_gmt":"2022-03-22T21:00:22","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=330954"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=330954","title":{"rendered":"<span>\u0414\u0440\u0443\u0436\u0438\u043c BeamNG \u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043a\u0443 \u0413\u0440\u0430\u043d\u0442\u044b<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0438\u0434\u0435\u043e \u0434\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438:<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6230f217101f9e0b2753e3ed\" data-style=\"\" id=\"6230f217101f9e0b2753e3ed\" width=\"\"><\/div>\n<p><em>\u0410\u0432\u0442\u043e\u0440 3D-\u043c\u043e\u0434\u0435\u043b\u0438: <\/em><a href=\"https:\/\/vk.com\/kiwiws\" rel=\"noopener noreferrer nofollow\"><em>Kivvich BeamNG Workspace<\/em><\/a><\/p>\n<p><em>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440: \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f \u0431\u0435\u0437 \u0434\u043e\u043b\u0436\u043d\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430 \u0438 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u043b\u0435\u0447\u044c \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043f\u0435\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f.<\/em><\/p>\n<h2>\u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442?<\/h2>\n<p>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b <a href=\"https:\/\/en.lfsmanual.net\/wiki\/OutSim_\/_OutGauge\" rel=\"noopener noreferrer nofollow\">OutGauge<\/a>, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u0431\u043e\u0440\u043e\u0432 \u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u0438 \u043a \u0430\u0432\u0442\u043e\u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u043c.<\/p>\n<figure class=\"bordered full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/086\/145\/fd1\/086145fd1a3cfa9735b1b8f24aecd12f.png\" width=\"621\" height=\"186\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/086\/145\/fd1\/086145fd1a3cfa9735b1b8f24aecd12f.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e: \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 BeamNG \u0432\u0445\u043e\u0434\u0438\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 Lua <code>outgauge.lua<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e UDP \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <code>127.0.0.1:4444<\/code>. \u0422\u0430\u043c \u044d\u0442\u0438 \u043f\u0430\u043a\u0435\u0442\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u043a\u043e\u043b\u0435\u043d\u043a\u0435 \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 Python, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 CAN-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0445 \u0431\u043b\u043e\u043a\u0443 \u043f\u0430\u043d\u0435\u043b\u0438 \u043f\u0440\u0438\u0431\u043e\u0440\u043e\u0432.<\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0436\u0435\u043b\u0435\u0437\u0430 \u043a\u0440\u043e\u043c\u0435 \u041f\u041a, CAN-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 \u0441\u0430\u043c\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u0423 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438, \u0441\u0430\u043c\u044b\u0439 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 &#8212; \u044d\u0442\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u044f \u0442\u043e\u043f\u043b\u0438\u0432\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0439 \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0438 \u0441\u043e\u043f\u0440\u043e\u0442\u0438\u0432\u043b\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0435\u0439 \u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0442\u043e\u043f\u043b\u0438\u0432\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CAN-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f.<\/p>\n<p>\u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c \u043f\u0440\u0438\u0431\u043e\u0440\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 CAN-\u0448\u0438\u043d\u044b \u0438 \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u043e\u043c \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445\/\u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043e\u0432. \u0414\u043b\u044f \u0431\u0435\u0437\u0443\u043c\u043d\u044b\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u0435\u0435 \u043d\u0430 \u0440\u0430\u0437\u0431\u043e\u0440\u043a\u0435, \u0430 \u043d\u0435 \u0432\u044b\u0434\u0438\u0440\u0430\u0442\u044c \u0438\u0437 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u0430\u043d\u0435\u043b\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u043b\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u043d\u0430\u0434\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0441 \u043d\u0435\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0435\u0435 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f. \u0414\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 <a href=\"https:\/\/www.csselectronics.com\/pages\/can-dbc-file-database-intro\" rel=\"noopener noreferrer nofollow\">DBC<\/a>-\u0444\u0430\u0439\u043b\u044b, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0442\u0440\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 CAN-\u0448\u0438\u043d\u044b:<\/p>\n<ul>\n<li>\n<p><em>\u0443\u0437\u043b\u044b<\/em>, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u043a \u0448\u0438\u043d\u0435 (\u0431\u043b\u043e\u043a\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u0431\u043e\u0440\u044b \u0438 \u0442.\u0434.);<\/p>\n<\/li>\n<li>\n<p><em>\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u0442\u0438 \u0443\u0437\u043b\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442;<\/p>\n<\/li>\n<li>\n<p><em>\u0441\u0438\u0433\u043d\u0430\u043b\u044b<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0432 \u044d\u0442\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0445. <\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043d\u0430 Python \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/cantools\/cantools\" rel=\"noopener noreferrer nofollow\">cantools<\/a> \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 DBC-\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/hardbyte\/python-can\" rel=\"noopener noreferrer nofollow\">python-can<\/a>, \u0443\u043c\u0435\u044e\u0449\u0430\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043a\u0443\u0447\u0435\u0439 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 CAN-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432.<\/p>\n<p>\u0412\u0430\u0436\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c, \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433 CAN-\u0448\u0438\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f, \u0432\u044b\u0441\u0442\u0443\u043f\u0438\u0442 \u041f\u041e <a href=\"https:\/\/github.com\/collin80\/SavvyCAN\" rel=\"noopener noreferrer nofollow\">SavvyCAN<\/a>. \u0412\u043e\u0442 \u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u043d\u043e \u0443\u043c\u0435\u0435\u0442:<\/p>\n<ul>\n<li>\n<p>\u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c DBC-\u0444\u0430\u0439\u043b\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0441\u0438\u0433\u043d\u0430\u043b\u044b, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 DBC-\u0444\u0430\u0439\u043b\u0430\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 UDS-\u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0444\u0430\u0437\u0437\u0438\u043d\u0433.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f DBC-\u0444\u0430\u0439\u043b\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f <a href=\"https:\/\/www.vector.com\/int\/en\/products\/products-a-z\/software\/candb\/\" rel=\"noopener noreferrer nofollow\">CANdb++<\/a> \u043e\u0442 Vector.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0449\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0441\u0430\u043c\u043e\u043c\u0443, \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0440\u0430\u0437\u0431\u0438\u0442\u0430 \u043d\u0430 \u0434\u0432\u0430 \u0443\u0440\u043e\u0432\u043d\u044f: \u0431\u0430\u0437\u043e\u0432\u044b\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0443\u0447\u0438\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u0443\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0438 \u0443\u0433\u043b\u0443\u0431\u043b\u0435\u043d\u043d\u044b\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u0432\u044b\u0436\u0430\u0442\u044c \u0438\u0437 \u043f\u0430\u043d\u0435\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c, \u043f\u0443\u0441\u0442\u0438\u0432 \u0432 \u0445\u043e\u0434 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0435\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Lua-\u0441\u043a\u0440\u0438\u043f\u0442\u0430 BeamNG.<\/p>\n<h2>\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c<\/h2>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0434\u043b\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f:<\/p>\n<ol>\n<li>\n<p>\u043f\u043e\u0433\u0430\u0441\u0438\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0438 (\u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043d\u0435 \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u043b\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0433\u0440\u044b) \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CAN-\u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u043e\u0440\u043e\u0442\u043e\u0432, \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c Lua-\u0441\u043a\u0440\u0438\u043f\u0442 BeamNG \u043f\u0435\u0440\u0432\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043f\u0430\u043d\u0435\u043b\u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435.<\/p>\n<\/li>\n<\/ol>\n<h3>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 CAN-\u0448\u0438\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f<\/h3>\n<p>\u042d\u0442\u043e\u0442 \u0448\u0430\u0433 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439\/\u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430\u0446\u0438\u0438 \u0438 \u043e\u0441\u043d\u0430\u0449\u0435\u043d\u0438\u0438 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f, \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438, \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0445\u0435\u043c\u044b \u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u043a\u0438 \u043f\u0440\u0438 \u0440\u0430\u0437\u0431\u043e\u0440\u043a\u0435 \u0441\u0430\u043b\u043e\u043d\u0430.<\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0432 \u0440\u043e\u043b\u0438 \u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 Lada Granta FL 2021 \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430\u0446\u0438\u0438 &#171;\u041a\u043e\u043c\u0444\u043e\u0440\u0442&#187;, \u0441 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u043c \u0412\u0410\u0417-21127 \u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447. \u041e\u0441\u043d\u0430\u0449\u0435\u043d\u0438\u0435 \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u043d\u0430\u0432\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u043e\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438 \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bd5\/05f\/1bc\/bd505f1bcd570b6b3523304786e0960f.png\" width=\"481\" height=\"238\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bd5\/05f\/1bc\/bd505f1bcd570b6b3523304786e0960f.png\"\/><figcaption><\/figcaption><\/figure>\n<p><em>\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u043e\u0432 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043d\u044b \u0444\u0440\u0438\u0432\u043e\u043b\u044c\u043d\u043e \u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.<\/em><\/p>\n<p>\u0412\u0441\u0435\u0433\u043e 6 \u0431\u043b\u043e\u043a\u043e\u0432, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u043a \u043e\u0434\u043d\u043e\u0439-\u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0448\u0438\u043d\u0435: <\/p>\n<ol>\n<li>\n<p>ECM (Engine Control Module) &#8212; \u0431\u043b\u043e\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u043c;<\/p>\n<\/li>\n<li>\n<p>SRS (Supplemental Restraint System) &#8212; \u0431\u043b\u043e\u043a \u043f\u043e\u0434\u0443\u0448\u0435\u043a \u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0442\u044f\u0436\u0438\u0442\u0435\u043b\u0435\u0439 \u0440\u0435\u043c\u043d\u0435\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p>ABS (Anti-lock Braking System) &#8212; \u0431\u043b\u043e\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043d\u0442\u0438\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439;<\/p>\n<\/li>\n<li>\n<p>Instrument Cluster &#8212; \u043f\u0430\u043d\u0435\u043b\u044c \u043f\u0440\u0438\u0431\u043e\u0440\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>Head Unit &#8212; \u0433\u043e\u043b\u043e\u0432\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e;<\/p>\n<\/li>\n<li>\n<p>ERA &#8212; \u0431\u043b\u043e\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u042d\u043a\u0441\u0442\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0420\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438 \u0410\u0432\u0430\u0440\u0438\u044f\u0445.<\/p>\n<\/li>\n<\/ol>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u0431\u043b\u043e\u043a \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u043c\u043a\u0430, \u043d\u043e \u043e\u043d \u043a \u0448\u0438\u043d\u0435 \u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435.<\/p>\n<h3>\u0421\u0431\u043e\u0440 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437 \u043b\u043e\u0433\u043e\u0432<\/h3>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a CAN-\u0448\u0438\u043d\u0435 &#8212; \u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0430\u0437\u044a\u0435\u043c. \u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0447\u0443\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0435\u0441\u043b\u0438 \u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d <a href=\"https:\/\/habr.com\/ru\/post\/571766\/\" rel=\"noopener noreferrer nofollow\">\u0433\u0435\u0439\u0442\u0432\u0435\u0439<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0442\u0440\u0430\u0444\u0438\u043a \u0438 \u043d\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0422\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a \u0448\u0438\u043d\u0430\u043c \u0437\u0430 \u0433\u0435\u0439\u0442\u0432\u0435\u0435\u043c \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u0434\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u043a\u0430\u043a\u0430\u044f \u0448\u0438\u043d\u0430 \u0437\u0430 \u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043c\u0435\u043d \u0441\u0435\u0442\u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442.<\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0431\u043e\u0440\u0430 \u043b\u043e\u0433\u043e\u0432 \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0441\u043e\u0431\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0438 \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0432 \u043b\u043e\u0433\u0430\u0445. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0433\u0440\u0435\u0442\u044c \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044c \u0434\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0438\u043b\u0438 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u043e\u0431\u043e\u0440\u043e\u0442\u044b \u0434\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433 &#8212; \u044d\u0442\u043e \u0430\u043d\u0430\u043b\u0438\u0437 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043b\u043e\u0433\u043e\u0432. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0435\u0441\u0442\u044c \u0434\u0430\u0436\u0435 <a href=\"https:\/\/github.com\/brent-stone\/CAN_Reverse_Engineering\" rel=\"noopener noreferrer nofollow\">\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435<\/a>. \u0412 \u0446\u0435\u043b\u043e\u043c \u044d\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u0438 \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439, \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 \u0441\u0443\u0434\u043e\u043a\u0443. \u0427\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0432\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435, \u0442\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0437\u0430\u0433\u0430\u0434\u043a\u0430\u043c\u0438.<\/p>\n<p>\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0432\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0432 DBC-\u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u0435\u0435. \u041a\u0441\u0442\u0430\u0442\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u0430\u043c \u043f\u043e\u0432\u0435\u0437\u043b\u043e \u0438 CAN-\u0448\u0438\u043d\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f \u0443\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 <a href=\"https:\/\/github.com\/commaai\/opendbc\" rel=\"noopener noreferrer nofollow\">opendbc<\/a>.<\/p>\n<p>\u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a\u0438:<\/p>\n<ul>\n<li>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441 \u043f\u043e\u0438\u0441\u043a\u0430 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u043e\u0439 \u0431\u043b\u043e\u043a \u043a\u0430\u043a\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0438\u0441\u043a\u0430\u0442\u044c \u043e\u0431\u043e\u0440\u043e\u0442\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0445 \u0431\u043b\u043e\u043a\u0430 ABS. \u041c\u043e\u0436\u043d\u043e \u0441\u043d\u044f\u0442\u044c \u0438 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0431\u043b\u043e\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u0441\u0442\u043e\u043b\u0435 \u0438\u043b\u0438 \u0432\u044b\u0442\u0430\u0449\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u0440\u0435\u0434\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435\u043b\u044c \u0432 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0435 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u043f\u0430\u0434\u0443\u0442 (\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u044d\u043a\u0441\u0442\u0440\u0435\u043c\u0430\u043b\u043e\u0432).<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u0438\u0433\u043d\u0430\u043b \u0432\u044b \u0438\u0449\u0435\u0442\u0435: \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 (\u043e\u0431\u043e\u0440\u043e\u0442\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f), \u0441\u0447\u0435\u0442\u043d\u044b\u0439 (\u043f\u0440\u043e\u0431\u0435\u0433) \u0438\u043b\u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 (\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u0430\u043b\u044c\u043d\u0435\u0433\u043e \u0441\u0432\u0435\u0442\u0430: \u0432\u043a\u043b\/\u0432\u044b\u043a\u043b), \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0438\u0433\u043d\u0430\u043b\u044b \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0438\u0437 &#171;\u043f\u043e\u043f\u0443\u0433\u0430\u0435\u0432&#187; \u0432 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u043d\u0435 \u0437\u0430\u043e\u0441\u0442\u0440\u044f\u0439\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0445 &#8212; \u0444\u043e\u0440\u043c\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0432\u0430\u0436\u043d\u0435\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u0435\u0433\u043e ID: \u043c\u0435\u043d\u044c\u0448\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u044b\u0441\u0448\u0435\u043c\u0443 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0443 \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441 \u043c\u0435\u043d\u044c\u0448\u0438\u043c ID \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442\u044c \u0432\u0430\u0436\u043d\u043e\u043c\u0443 \u0431\u043b\u043e\u043a\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 ECM.<\/p>\n<\/li>\n<li>\n<p>\u0422\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0441 \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439: \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u043c\u0435\u043d\u044c\u0448\u0438\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u043c \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0434\u0432\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0430: \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438.<\/p>\n<p><strong>\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439<\/strong> &#8212; \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0439 \u043f\u043e\u0435\u0437\u0434\u043a\u0438 \u043f\u043e \u0433\u043e\u0440\u043e\u0434\u0443, \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c, \u043a\u0430\u043a \u0448\u0435\u0432\u0435\u043b\u044f\u0442\u0441\u044f \u0441\u0442\u0440\u0435\u043b\u043a\u0438 \u0443 \u043b\u0435\u0436\u0430\u0449\u0435\u0439 \u043d\u0430 \u0441\u0442\u043e\u043b\u0435 \u043f\u0430\u043d\u0435\u043b\u0438. <\/p>\n<ol>\n<li>\n<p>\u043f\u0430\u043d\u0435\u043b\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u0441\u0442\u043e\u043b\u0435 \u0438 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0440\u0430\u043d\u0435\u0435 \u043b\u043e\u0433, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0435\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e \u0443\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u0441\u0443\u0436\u0430\u044f \u043a\u0440\u0443\u0433 \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u0435\u043c\u044b\u0445, \u043f\u043e\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u0432\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0430\u0437\u0437\u0438\u043d\u0433\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u0431\u0438\u0442\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ol>\n<figure class=\"bordered full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0a4\/969\/001\/0a4969001b8dbb770bd2927cfd73d005.PNG\" alt=\"\" title=\"\" width=\"521\" height=\"408\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0433\u0430\u043b\u043a\u0443 &#171;Use original frame timing from captured frames&#187;, \u0447\u0442\u043e\u0431\u044b SavvyCAN \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439.<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u043e\u0438 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0441\u043a\u043e\u043c\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438, \u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0422\u0443\u0442 \u0432\u0430\u0436\u043d\u043e \u043d\u0430\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u0440\u043f\u0435\u043d\u0438\u044f \u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p><strong>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438 <\/strong>&#8212; \u0431\u043e\u043b\u0435\u0435 \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432 OBD2, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u043a\u0440\u0430\u0439\u043d\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439.<\/p>\n<ol>\n<li>\n<p>\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043b\u043e\u0433, \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0441\u044b\u043b\u0430\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 OBD2-\u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 RPM;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043a\u0430\u0440\u043c\u043b\u0438\u0432\u0430\u0435\u043c SavvyCAN \u043b\u043e\u0433, <a href=\"https:\/\/www.csselectronics.com\/pages\/obd2-dbc-file\" rel=\"noopener noreferrer nofollow\">DBC-\u0444\u0430\u0439\u043b \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c OBD2-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/a> \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0439 DBC-\u0444\u0430\u0439\u043b \u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0442\u0440\u043e\u0438\u043c \u0434\u0432\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430: \u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0441\u043d\u044b\u0439 \u043d\u0430 \u0431\u0430\u0437\u0435 OBD2 \u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0439;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u043e\u0431\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439, \u0443\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043f\u043e\u0445\u043e\u0436\u0438 \u0438\u043b\u0438 \u043d\u0435\u0442.<\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/10f\/6ef\/63e\/10f6ef63e7608c28a34cfe88ab30358c.png\" width=\"601\" height=\"232\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/10f\/6ef\/63e\/10f6ef63e7608c28a34cfe88ab30358c.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0432 \u0434\u0432\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 RPM, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431 1.0 \u0434\u043b\u044f \u043e\u0431\u043e\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 &#171;\u043f\u043e\u043f\u0443\u0433\u0430\u044f\u0445&#187;:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1cd\/4b7\/8e1\/1cd4b78e10f58fe8b7bfbdb6d7fceff2.png\" width=\"656\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1cd\/4b7\/8e1\/1cd4b78e10f58fe8b7bfbdb6d7fceff2.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0438\u0433\u043d\u0430\u043b\u044b \u043f\u043e\u0445\u043e\u0436\u0438 \u043f\u043e \u0444\u043e\u0440\u043c\u0435, \u043d\u043e \u043e\u043d\u0438 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043e\u043c. \u0413\u0440\u0430\u0444\u0438\u043a RPM \u0434\u043b\u044f OBD2 \u043d\u0435 \u0442\u0430\u043a\u043e\u0439 \u0433\u043b\u0430\u0434\u043a\u0438\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0438\u0436\u0435, \u0447\u0435\u043c \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f. \u0415\u0441\u043b\u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u0443 OBD2 \u0435\u0433\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043c\u0430\u0441\u0448\u0442\u0430\u0431 0.25 \u0438 \u043f\u043e\u0434\u043e\u0433\u043d\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430 0.125, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f10\/617\/a34\/f10617a347059aec87e830b9baadcd85.png\" width=\"656\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f10\/617\/a34\/f10617a347059aec87e830b9baadcd85.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0438\u0433\u043d\u0430\u043b RPM \u043d\u0430\u0439\u0434\u0435\u043d! \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0434\u0432\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0442\u0430\u0445\u043e\u043c\u0435\u0442\u0440\u0430.<\/p>\n<h3>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 BeamNG<\/h3>\n<p>\u041f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u0432:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/185\/323\/1fa\/1853231fab33ab7411f21d375852f130.png\" width=\"359\" height=\"182\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/185\/323\/1fa\/1853231fab33ab7411f21d375852f130.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440 CAN-\u0448\u0438\u043d\u044b, \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043d\u0430\u043b\u0430\u0434\u0438\u0442\u044c \u043e\u0431\u043c\u0435\u043d \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438.<\/p>\n<p>\u0412\u044b\u0432\u043e\u0434 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0443\u0440\u043e\u0432\u043d\u044f \u0442\u043e\u043f\u043b\u0438\u0432\u0430 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0441 \u043c\u0430\u0441\u0441\u043e\u0439, \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u043c\u0443 \u0431\u0430\u043a\u0443 \u0438 \u043f\u043e\u0433\u0430\u0441\u0438\u0442 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e \u043c\u0438\u0433\u0430\u044e\u0449\u0443\u044e \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u044e \u043d\u0438\u0437\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0442\u043e\u043f\u043b\u0438\u0432\u0430. \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0437\u0430\u0445\u043e\u0447\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0443\u0440\u043e\u0432\u043d\u044f \u0442\u043e\u043f\u043b\u0438\u0432\u0430, \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043e\u0442 \u0441\u043e\u043f\u0440\u043e\u0442\u0438\u0432\u043b\u0435\u043d\u0438\u044f:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e9e\/7b6\/4d7\/e9e7b64d79e118e6fb10a1d45866dbb6.PNG\" width=\"301\" height=\"278\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0422\u043e\u0447\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0442\u043e\u043f\u043b\u0438\u0432\u0430 \u0432 % \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 1-\u043e\u043c \u0431\u0430\u0439\u0442\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f <code>0x280<\/code>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0434\u0435\u0441\u044c \u043e\u043d \u0440\u0430\u0432\u0435\u043d 0x5C = 92%:<\/p>\n<p><code>0280  8  01 5C FF 10 FF FF 00 00<\/code><\/p>\n<p>\u041d\u0443 \u0430 \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 OutGauge \u0432 BeamNG, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0433\u0430\u043b\u043a\u0443 \u0432 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0435 <em>Options -> Other<\/em>. \u0422\u0430\u043c \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c IP-\u0430\u0434\u0440\u0435\u0441 \u0438 \u043f\u043e\u0440\u0442:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8d6\/c75\/70e\/8d6c7570e4bab553ffdec22454a287cf.PNG\" width=\"738\" height=\"153\"\/><figcaption><\/figcaption><\/figure>\n<h3>\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0430\u043d\u0430\u043b\u0438\u0437\u0430<\/h3>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0435\u0445\u043d\u0438\u043a, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435, \u0431\u044b\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0438\u0441\u043a\u043e\u043c\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u043e\u0431\u043e\u0440\u043e\u0442\u043e\u0432 \u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u044f\u0434 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0445 \u0437\u0430 \u043b\u0430\u043c\u043f\u044b \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u0438:<\/p>\n<details class=\"spoiler\">\n<summary>granta_basic.dbc<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>VERSION \"\"   NS_ :     NS_DESC_     CM_     BA_DEF_     BA_     VAL_     CAT_DEF_     CAT_     FILTER     BA_DEF_DEF_     EV_DATA_     ENVVAR_DATA_     SGTYPE_     SGTYPE_VAL_     BA_DEF_SGTYPE_     BA_SGTYPE_     SIG_TYPE_REF_     VAL_TABLE_     SIG_GROUP_     SIG_VALTYPE_     SIGTYPE_VALTYPE_     BO_TX_BU_     BA_DEF_REL_     BA_REL_     BA_DEF_DEF_REL_     BU_SG_REL_     BU_EV_REL_     BU_BO_REL_     SG_MUL_VAL_  BS_:  BU_: ECM ABS SRS  BO_ 384 ECM_180: 8 ECM    SG_ rpm : 7|16@0+ (0.125,0) [0|0] \"rpm\" Vector__XXX  BO_ 505 ECM_1F9: 8 ECM    SG_ speed_km_h : 23|16@0+ (0.01,0) [0|0] \"\" Vector__XXX  BO_ 852 ABS_354: 8 ABS    SG_ abs_lamp_on : 55|1@0+ (1,0) [0|1] \"\" Vector__XXX  BO_ 1176 SRS_498: 1 SRS    SG_ airbag_lamp : 4|1@1+ (1,0) [0|0] \"\" Vector__XXX    SG_ seatbelt_fastened : 0|1@1+ (1,0) [0|0] \"\" Vector__XXX  BO_ 1361 ECM_551: 8 ECM    SG_ coolant_temperature : 15|8@0+ (1,-40) [0|0] \"\" Vector__XXX    SG_ check_engine_lamp_on : 32|1@1+ (1,0) [0|0] \"\" Vector__XXX    SG_ check_engine_lamp_blinking : 33|1@1+ (1,0) [0|0] \"\" Vector__XXX    SG_ oil_lamp_on : 34|1@1+ (1,0) [0|0] \"\" Vector__XXX    SG_ overheat_lamp_with_sound : 35|1@1+ (1,0) [0|0] \"\" Vector__XXX    SG_ battery_lamp_off : 24|1@1+ (1,0) [0|0] \"\" Vector__XXX <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u041f\u0430\u0440\u0443 \u0441\u043b\u043e\u0432 \u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u043d\u0430 Python, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u044c\u043c\u0435\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f \u0440\u043e\u043b\u044c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u0430. \u0412\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a CAN-\u0448\u0438\u043d\u0435, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 DBC-\u0444\u0430\u0439\u043b\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0430\u0441\u043a\u043e\u0432 \u0434\u043b\u044f \u0438\u0445 \u0446\u0438\u043a\u043b\u0438\u0447\u043d\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438. \u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u0435 \u043e\u0442 BeamNG, \u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439:<\/p>\n<details class=\"spoiler\">\n<summary>translator_basic.py<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"python\">import socket import struct import can import cantools from time import time  db = cantools.database.load_file('granta_basic.dbc') ecm_180 = db.get_message_by_name('ECM_180') ecm_1f9 = db.get_message_by_name('ECM_1F9') abs_354 = db.get_message_by_name('ABS_354') srs_498 = db.get_message_by_name('SRS_498') ecm_551 = db.get_message_by_name('ECM_551')  bus = can.interface.Bus(bustype='pcan', channel='PCAN_USBBUS1', bitrate=500000)  def socket_stuff():     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)     sock.bind(('127.0.0.1', 4444))      data = ecm_180.encode({'rpm': 0})     ecm_180_msg = can.Message(arbitration_id=ecm_180.frame_id, data=data, is_extended_id=False)     ecm_180_task = bus.send_periodic(ecm_180_msg, 0.100)      data = ecm_1f9.encode({'speed_km_h': 0})     ecm_1f9_msg = can.Message(arbitration_id=ecm_1f9.frame_id, data=data, is_extended_id=False)     ecm_1f9_task = bus.send_periodic(ecm_1f9_msg, 0.100)      data = abs_354.encode({'abs_lamp_on': 0})     abs_354_msg = can.Message(arbitration_id=abs_354.frame_id, data=data, is_extended_id=False)     abs_354_task = bus.send_periodic(abs_354_msg, 0.100)      data = srs_498.encode({'airbag_lamp': 0,                            'seatbelt_fastened': 1})     srs_498_msg = can.Message(arbitration_id=srs_498.frame_id, data=data, is_extended_id=False)     srs_498_task = bus.send_periodic(srs_498_msg, 0.200)      data = ecm_551.encode({'coolant_temperature': 0,                            'check_engine_lamp_on': 0,                            'check_engine_lamp_blinking': 0,                            'oil_lamp_on': 0,                            'overheat_lamp_with_sound': 0,                            'battery_lamp_off': 1})     ecm_551_msg = can.Message(arbitration_id=ecm_551.frame_id, data=data, is_extended_id=False)     ecm_551_task = bus.send_periodic(ecm_551_msg, 0.100)      start_ms = int(time() * 1000)      while True:         data = sock.recv(256)          if not data:             break          elapsed_ms = int(time() * 1000) - start_ms         if elapsed_ms >= 50:             start_ms = int(time() * 1000)             outgauge_pack = struct.unpack('I3sxH2B7f2I3f15sx15sxi', data)             speed = int(outgauge_pack[5])             rpm = int(outgauge_pack[6])             engtemp = int(outgauge_pack[8])              ecm_180_msg.data = ecm_180.encode({'rpm': rpm})             ecm_180_task.modify_data(ecm_180_msg)              ecm_1f9_msg.data = ecm_1f9.encode({'speed_km_h': speed * 3.6})             ecm_1f9_task.modify_data(ecm_1f9_msg)              ecm_551_msg.data = ecm_551.encode({'coolant_temperature': engtemp,                                                 'check_engine_lamp_on': 0,                                                 'check_engine_lamp_blinking': 0,                                                 'oil_lamp_on': 0,                                                 'overheat_lamp_with_sound': 0,                                                 'battery_lamp_off': 1})             ecm_551_task.modify_data(ecm_551_msg)      sock.close()  socket_stuff() <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0434\u0442\u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0435 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043a\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0430\u043d\u0435\u043b\u044c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u0430 \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u044c. \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0438. \u0412 \u0442\u0440\u0430\u0444\u0438\u043a\u0435 \u0413\u0440\u0430\u043d\u0442\u044b \u043e\u043d\u0438 \u0442\u043e\u0436\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f, \u043d\u043e \u0438\u0445 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0430\u043d\u0435\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0438\u0437 DBC-\u0444\u0430\u0439\u043b\u0430.<\/p>\n<p>\u0421 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0430\u0434\u043e\u0435\u0434\u043b\u0438\u0432\u044b\u0445 \u043b\u0430\u043c\u043f\u043e\u0447\u0435\u043a \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e &#8212; \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0438\u043e\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0438 \u0437\u0430\u0431\u044b\u0442\u044c \u043f\u0440\u043e \u043d\u0438\u0445. \u0414\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0442 BeamNG \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th data-colwidth=\"106\" width=\"106\">\n<p>Indicator<\/p>\n<\/th>\n<th data-colwidth=\"128\" width=\"128\">\n<p>CAN Message<\/p>\n<\/th>\n<th>\n<p>BeamNG Lua Variable<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td data-colwidth=\"106\" width=\"106\">\n<p>speed<\/p>\n<\/td>\n<td data-colwidth=\"128\" width=\"128\">\n<p>ECM_1F9<\/p>\n<\/td>\n<td>\n<p>electrics.values.wheelspeed OR electrics.values.airspeed<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"106\" width=\"106\">\n<p>RPM<\/p>\n<\/td>\n<td data-colwidth=\"128\" width=\"128\">\n<p>ECM_180<\/p>\n<\/td>\n<td>\n<p>electrics.values.rpm<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"106\" width=\"106\">\n<p>coolant temp<\/p>\n<\/td>\n<td data-colwidth=\"128\" width=\"128\">\n<p>ECM_551<\/p>\n<\/td>\n<td>\n<p>electrics.values.watertemp<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0442\u043e \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u0433\u0430\u0441\u0438\u0442 \u0432\u0441\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0430\u043c\u043f\u044b \u0438 \u0431\u0443\u0434\u0435\u0442 \u0436\u0434\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 BeamNG:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4f1\/ffc\/77c\/4f1ffc77c6f1a39b425bb8d7c02ef7e2.JPG\" width=\"1056\" height=\"395\"\/><figcaption><\/figcaption><\/figure>\n<h2>\u0423\u0433\u043b\u0443\u0431\u043b\u0435\u043d\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c<\/h2>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u043c \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u043e\u043c \u0434\u043e\u043b\u0433\u043e \u0441\u044b\u0442 \u043d\u0435 \u0431\u0443\u0434\u0435\u0448\u044c, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 BeamNG \u0443\u043c\u0435\u0435\u0442 \u0441\u0438\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c. \u0421\u043f\u0438\u0441\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0434\u043b\u044f \u0443\u0433\u043b\u0443\u0431\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f:<\/p>\n<ol>\n<li>\n<p>\u043f\u043e\u0433\u0430\u0441\u0438\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0438 (\u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043d\u0435 \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u043b\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0433\u0440\u044b) \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CAN-\u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0430\u043d\u0435\u043b\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Lua-\u0441\u043a\u0440\u0438\u043f\u0442 BeamNG \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043d\u043e\u0432\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043f\u0430\u043d\u0435\u043b\u0438 \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u0438.<\/p>\n<\/li>\n<\/ol>\n<h3>\u042d\u0442\u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0433\u0438\u0440\u043b\u044f\u043d\u0434\u0430<\/h3>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5bf\/f73\/e5e\/5bff73e5ea6376f9a7c93d3ad73207c8.png\" width=\"500\" height=\"226\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5bf\/f73\/e5e\/5bff73e5ea6376f9a7c93d3ad73207c8.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e &#8212; \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0445 \u043b\u0430\u043c\u043f \u0432 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0430\u043d\u0435\u043b\u0438, \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430. \u0420\u0430\u043d\u044c\u0448\u0435 \u043e\u043d\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u043b\u0438\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043c\u0430\u044f\u0447\u0438\u0442\u044c, \u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043f\u043e \u043f\u0440\u044f\u043c\u043e\u043c\u0443 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0439\u0442\u0438 \u0440\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0432 BeamNG. \u041f\u043e\u0439\u0434\u0435\u043c \u043f\u043e-\u043f\u043e\u0440\u044f\u0434\u043a\u0443, \u043a\u0440\u0430\u0442\u043a\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438.<\/p>\n<p>\u041b\u0430\u043c\u043f\u0430<em> \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e\u0433\u043e \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u0441\u043b\u0430<\/em>.  \u0417\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0441\u0432\u0435\u0442\u043e\u043c \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0437\u0430\u0436\u0438\u0433\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f \u0433\u0430\u0441\u043d\u0435\u0442. \u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u043c \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435 \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u043c \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u043c\u0430\u0437\u043a\u0438 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f. \u0411\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u043f\u043e \u0441\u043c\u044b\u0441\u043b\u0443, \u0447\u0442\u043e \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0432 BeamNG, \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>electrics.values.oil<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u043c\u0430\u0441\u043b\u0430 \u0431\u043e\u043b\u0435\u0435 130 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432. \u041d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0442\u043e, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e, \u043d\u043e \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u043d\u0438\u0447\u0435\u0433\u043e. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435 BeamNG \u0431\u044b\u043b\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 <code>o.oilPressure = 0 -- TODO<\/code>, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0430\u0432\u0434\u0438\u0432\u043e.<\/p>\n<p>\u041b\u0430\u043c\u043f\u0430 <em>\u0430\u043d\u0442\u0438\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0442\u043e\u0440\u043c\u043e\u0437\u043e\u0432<\/em>. \u0417\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u0436\u0435\u043b\u0442\u044b\u043c \u0441\u0432\u0435\u0442\u043e\u043c \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0437\u0430\u0436\u0438\u0433\u0430\u043d\u0438\u044f \u043d\u0430 2 \u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0432\u043e \u0432\u0441\u0435\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b ABS. \u0412 BeamNG \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>electrics.values.abs<\/code> \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 ABS \u0438 \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u0440\u0435\u0437\u043a\u043e\u043c \u0442\u043e\u0440\u043c\u043e\u0436\u0435\u043d\u0438\u0438.<\/p>\n<p>\u041b\u0430\u043c\u043f\u0430<em> &#171;\u041e\u0442\u043a\u0430\u0437 \u0442\u043e\u0440\u043c\u043e\u0437\u0430&#187;<\/em>. \u0417\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0441\u0432\u0435\u0442\u043e\u043c \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0437\u0430\u0436\u0438\u0433\u0430\u043d\u0438\u044f \u043d\u0430 2 \u0441\u0435\u043a\u0443\u043d\u0434\u044b. \u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 3-\u0435\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439: \u043c\u0438\u0433\u0430\u0435\u0442, \u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0441\u0442\u043e\u044f\u043d\u043e\u0447\u043d\u044b\u0439 \u0442\u043e\u0440\u043c\u043e\u0437; \u0433\u043e\u0440\u0438\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0422\u0416; \u0433\u043e\u0440\u0438\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c ABS \u043f\u0440\u0438 \u043e\u0442\u043a\u0430\u0437\u0435 ABS. \u0418 \u0437\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 &#8212; \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0432\u043e\u0434\u043e\u0432, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u043a \u0441\u0442\u043e\u044f\u043d\u043e\u0447\u043d\u043e\u043c\u0443 \u0442\u043e\u0440\u043c\u043e\u0437\u0443 \u0438\u043b\u0438 \u0434\u0430\u0442\u0447\u0438\u043a\u0443 \u0443\u0440\u043e\u0432\u043d\u044f \u0422\u0416. \u041f\u043e CAN-\u0448\u0438\u043d\u0435 \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0435\u0442\u044c\u044f \u043e\u043f\u0446\u0438\u044f &#8212; \u043a\u043e\u0433\u0434\u0430 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0433\u043e\u0440\u0438\u0442 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c ABS. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u043c\u0438\u0440\u0438\u0442\u044c\u0441\u044f \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 &#171;\u0440\u0443\u0447\u043d\u0438\u043a\u0430&#187; (<code>electrics.values.parkingbrake<\/code>) \u0432 BeamNG \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043b\u0438\u0446\u0435\u0437\u0440\u0435\u0442\u044c \u0435\u0449\u0435 \u0438 \u043b\u0430\u043c\u043f\u0443 ABS.<\/p>\n<p>\u041b\u0430\u043c\u043f\u0430<em> &#171;\u041f\u0440\u043e\u0432\u0435\u0440\u044c \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044c&#187;<\/em>. \u0417\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u0436\u0435\u043b\u0442\u044b\u043c \u0441\u0432\u0435\u0442\u043e\u043c \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0437\u0430\u0436\u0438\u0433\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f \u0433\u0430\u0441\u043d\u0435\u0442. \u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0435\u0439, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f. \u0412 BeamNG \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>electrics.values.checkengine<\/code> \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0437\u0430\u0436\u0438\u0433\u0430\u043d\u0438\u044f \u0438 \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>\u041b\u0430\u043c\u043f\u0430<em> \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u041e\u0416<\/em>. \u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0437\u0430\u0436\u0438\u0433\u0430\u043d\u0438\u044f \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0441\u0432\u0435\u0442\u043e\u043c \u043d\u0430 2 \u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0434\u0430\u043b\u0435\u0435 \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u041e\u0416 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u044b\u0448\u0435 115 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432. \u0412 BeamNG \u043d\u0435\u0442 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0442\u0430\u043a\u043e\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 Lua, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043b \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 <code>electrics.values.watertemp > 115<\/code>.<\/p>\n<p>\u041b\u0430\u043c\u043f\u0430 <em>\u0440\u0430\u0437\u0440\u044f\u0434\u0430 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043d\u043e\u0439 \u0431\u0430\u0442\u0430\u0440\u0435\u0438<\/em>. \u0417\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0441\u0432\u0435\u0442\u043e\u043c \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0437\u0430\u0436\u0438\u0433\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f \u0433\u0430\u0441\u043d\u0435\u0442. \u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u043c \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435 \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 BeamNG \u043d\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441\u0438\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u043a\u0438, \u0442\u043e \u0432 \u0438\u0433\u0440\u0435 \u044d\u0442\u0430 \u043b\u0430\u043c\u043f\u0430 \u0433\u043e\u0440\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0437\u0430\u0433\u043b\u0443\u0448\u0435\u043d\u043d\u043e\u043c \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>electrics.values.engineRunning<\/code>.<\/p>\n<h3>\u041a\u0440\u0430\u0442\u043a\u043e \u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/h3>\n<p>\u0415\u0449\u0435 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u043b\u043e\u0433\u043e\u0432 \u0431\u044b\u043b\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e ASCII-\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0445. \u0412\u0441\u0435\u0433\u043e \u0442\u0430\u043a\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c 6: <code>0x4A4<\/code>, <code>0x4A6<\/code>, <code>0x4A8<\/code>, <code>0x4AA<\/code>, <code>0x4AC<\/code>, <code>0x4AE<\/code>; \u0432\u0441\u0435 \u043f\u043e 8 \u0431\u0430\u0439\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c. \u0412\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043e\u043d\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0434\u0432\u0430 \u0432\u0438\u0434\u0430 \u043f\u043e\u0441\u044b\u043b\u043e\u043a \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 NMEA: GPRMC \u0438 GPGGA. \u0412\u043d\u0443\u0442\u0440\u0438 GPRMC \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u043d\u0443\u0442\u0440\u0438 GPGGA &#8212; \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438. \u041d\u0430\u0439\u0442\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0431\u044b\u043b\u043e \u043b\u0435\u0433\u043a\u043e: \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0431\u043b\u043e\u043a\u043e\u043c, \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0438\u043c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u043e\u043c \u0431\u044b\u043b \u0431\u043b\u043e\u043a \u042d\u0420\u0410-\u0413\u043b\u043e\u043d\u0430\u0441\u0441.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u043a\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0435, \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043b\u043e\u0433\u0438 \u0438 \u0438\u0437\u0432\u043b\u0435\u0447\u044c NMEA-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u0442\u043e\u0447\u043d\u044b\u0439 \u0438 \u043f\u043b\u0430\u0432\u043d\u044b\u0439 \u0442\u0440\u0435\u043a \u043f\u043e\u0435\u0437\u0434\u043a\u0438. \u0425\u0430\u043b\u044f\u0432\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 &#8212; \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0441\u043a\u0430\u0440\u043c\u043b\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043a\u0443\u043f\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041d\u043e \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0435 \u0441 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 &#171;\u0431\u0430\u043b\u0430\u043b\u0430\u0439\u043a\u043e\u0439&#187; \u0431\u0435\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438? \u041f\u0440\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043b\u043e\u0433\u043e\u0432, \u0432 \u0433\u043b\u0430\u0437\u0430 \u0431\u0440\u043e\u0441\u0438\u043b\u0438\u0441\u044c \u0447\u0430\u0441\u044b \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 &#8212; \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c \u043d\u0430 \u0442\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u043e\u0441\u044c \u0432 NMEA-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0445.<\/p>\n<p>\u0420\u0430\u0437 \u0442\u0430\u043a, \u0442\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u043e\u0447\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438? \u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f GPRMC. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <code>nmeasim<\/code> \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443, \u0440\u0430\u0441\u0444\u0430\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0435\u0435 \u043f\u043e CAN-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c \u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u0443\u0437\u044b \u0432 50 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.<\/p>\n<details class=\"spoiler\">\n<summary>nmea_set_time.py<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"python\">from datetime import datetime, timedelta, timezone from nmeasim.models import GpsReceiver import time import can  bus = can.interface.Bus(bustype='pcan',                          channel='PCAN_USBBUS1',                          bitrate=500000)  gps = GpsReceiver(     #date_time=datetime(2020, 1, 1, 1, 20, 1, tzinfo=timezone.utc),     date_time=datetime.now(),     output=('RMC',) )  gprmc_str = gps.get_output() gprmc_bytes = gprmc_str[0].encode()  can_id = 0x4A4 for i in range(0, len(gprmc_bytes), 8):     data = gprmc_bytes[i:i+8]     print(hex(can_id), data)     bus.send(can.Message(arbitration_id=can_id, data=data, is_extended_id=False))     can_id = (can_id + 0x02) if (can_id &lt; 0x4AE) else 0x4A4     time.sleep(0.050)  bus.shutdown()<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u041c\u043e\u0436\u043d\u043e \u0431\u0440\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u041f\u041a \u0438\u043b\u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 04 \u0447\u0430\u0441\u0430 20 \u043c\u0438\u043d\u0443\u0442:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/892\/754\/edb\/892754edb4090047e57b461f1f0285e1.gif\" width=\"180\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/892\/754\/edb\/892754edb4090047e57b461f1f0285e1.gif\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0440\u0435\u043c\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0430 \u0432\u0438\u0434\u0443.<\/p>\n<h3>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0438 \u0435\u0435 \u043f\u0440\u0438\u0447\u0443\u0434\u044b<\/h3>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0431\u043b\u043e\u043a\u043e\u0432 &#8212; \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u0440\u0430\u0441\u0442\u044f\u0436\u0438\u043c\u043e\u0435 \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0430\u0432\u0442\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043a \u043d\u0435\u0439 \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443, \u043d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u043c\u044b\u0441\u043b \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0434\u0438\u043d: \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\/\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438.<\/p>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0434\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u043f\u043e \u0434\u0432\u0443\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c:<\/p>\n<ol>\n<li>\n<p>\u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f: \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043d\u0430\u0431\u043e\u0440\u0430 \u0448\u0442\u0430\u0442\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430\u0446\u0438\u044f\u0445 \u0438 \u043e\u043f\u0446\u0438\u044f\u0445 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0430\u0440\u0445\u0435\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f: \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u0448\u0435\u043b \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044c, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044f \u043e\u0442 \u0440\u0430\u043d\u043d\u0438\u0445 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u0430\u043a\u0442\u0443\u0430\u0442\u043e\u0440\u043e\u0432 \u043a \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c (\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u0437\u0430\u0434\u0435\u0440\u0436\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u0440\u044b\u043d\u043a\u0435).<\/p>\n<\/li>\n<\/ol>\n<p>\u0414\u043b\u044f \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c, \u0447\u0435\u043c \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0440\u0433\u0430\u0442\u044c \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u043e\u0439 ESC, \u043d\u0443\u0436\u043d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0439\u0442\u0438 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u0443 \u043e\u043f\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 UDS, \u0430 \u0437\u0430\u0442\u0435\u043c \u043d\u0430\u0439\u0442\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u043e\u0439. \u0417\u0430\u0434\u0430\u0447\u0443 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f \u0432 \u043d\u0443\u0436\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430\u0446\u0438\u0438. <\/p>\n<p>\u0412 \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0447\u0435\u0442\u044b\u0440\u0435 \u044d\u0442\u0430\u043f\u0430:<\/p>\n<ol>\n<li>\n<p>\u043f\u043e\u0438\u0441\u043a \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0433\u043e DID, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0434\u0431\u043e\u0440 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u043e\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 DID, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 1 = \u0412\u041a\u041b, 0 = \u0412\u042b\u041a\u041b;<\/p>\n<\/li>\n<li>\n<p>\u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u0430\u043d\u0435\u043b\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u0433\u043e\u0440\u0435\u0442\u044c\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u043b\u0430\u043c\u043f\u044b;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0434\u0431\u043e\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0430\u0437\u0437\u0438\u043d\u0433\u0430.<\/p>\n<\/li>\n<\/ol>\n<p>\u041a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b, \u0438\u0437 \u044d\u0442\u0438\u0445 \u043f\u0440\u0430\u0432\u0438\u043b \u0431\u044b\u0432\u0430\u044e\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u043b\u0438\u0441\u044c, \u043d\u043e \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u044b\u0434\u0430\u0432\u0430\u043b\u0438 \u0441\u0435\u0431\u044f. \u0418\u043d\u043e\u0433\u0434\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u043c\u043e\u0433\u043b\u0430 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0443\u0432\u0438\u0434\u0435\u0432 \u0432 \u0442\u0440\u0430\u0444\u0438\u043a\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b &#8212; \u0442\u0430\u043a \u0431\u044b\u043b\u043e \u0441 \u0442\u0438\u043f\u043e\u043c \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0442\u0430\u043a\u043e\u0435 \u0441\u0430\u043c\u043e\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438.<\/p>\n<p>\u0421\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 DID, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f, \u0432\u044b\u044f\u0432\u0438\u043b\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 <code>0x0100..0x0110<\/code>. \u0417\u0430\u043f\u0438\u0441\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432 \u0437\u0430\u0449\u0438\u0442\u044b, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0443\u044e \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e <code>0x03<\/code>. <\/p>\n<p>\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0448\u043b\u0430\u0441\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438 (ESC). \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0432 DID <code>0x0103<\/code> \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0441\u0430\u043c\u0430 \u0437\u0430\u0433\u043e\u0440\u0435\u043b\u0430\u0441\u044c \u0438\u0441\u043a\u043e\u043c\u0430\u044f \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u044f:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b5b\/779\/a9e\/b5b779a9e98b8ad1e6e3c289e36d8055.PNG\" width=\"980\" height=\"140\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u0435 BeamNG \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u0430\u043c\u043f\u043e\u0439 ESC \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0438\u0441\u044c \u0434\u0432\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445: <code>electrics.values.esc<\/code> \u0438 <code>electrics.values.tcs<\/code>. \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0430 \u0438\u0437 \u043d\u0438\u0445 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0442\u043e \u043b\u0430\u043c\u043f\u0430 \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043f\u043e \u043e\u0431\u0440\u044b\u0432\u043a\u0430\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430 \u0413\u0440\u0430\u043d\u0442\u0443, \u0444\u0443\u043d\u043a\u0446\u0438\u0438 ABS \u0438 ESC \u0441\u043e\u0432\u043c\u0435\u0449\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u0435 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0431\u043b\u043e\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e5b\/3e1\/615\/e5b3e1615f3e068135ab53a50f525259.png\" width=\"481\" height=\"238\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e5b\/3e1\/615\/e5b3e1615f3e068135ab53a50f525259.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0441\u0432\u0435\u0442\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0435: <em>\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u043c \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430<\/em>, <em>\u043b\u0430\u043c\u043f\u0430\u043c \u0431\u043b\u0438\u0436\u043d\u0435\u0433\u043e<\/em> \u0438 <em>\u0434\u0430\u043b\u044c\u043d\u0435\u0433\u043e \u0441\u0432\u0435\u0442\u0430<\/em>. \u041d\u0430 \u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u043e\u043c \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0435 \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0430\u0447\u0435\u0439 12\u0412 \u043e\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u0435\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u0432\u0435\u0442\u043e\u0432\u044b\u043c\u0438 \u043f\u0440\u0438\u0431\u043e\u0440\u0430\u043c\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u043f\u0430\u043d\u0435\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a \u044d\u0442\u0438\u043c \u0441\u0430\u043c\u044b\u043c \u0440\u0435\u043b\u0435, \u043d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0441\u0442\u0440\u043e\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c\u0438 \u043f\u043e CAN-\u0448\u0438\u043d\u0435, \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u043e\u0431\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u0443\u0442\u044c.<\/p>\n<p>\u0418\u043c \u0441\u0442\u0430\u043d\u0435\u0442 \u0426\u0411\u041a\u042d (\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0411\u043b\u043e\u043a \u041a\u0443\u0437\u043e\u0432\u043d\u043e\u0439 \u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0438), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0431\u043e\u043b\u0435\u0435 \u0434\u043e\u0440\u043e\u0433\u0438\u0445 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430\u0446\u0438\u044f\u0445, \u043e\u0434\u043d\u0430 \u0438\u0437 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 &#8212; \u044d\u0442\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u043e\u0439. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0430\u043d\u0435\u043b\u0438 \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0439\u0442\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0432\u043b\u0438\u044f\u044e\u0449\u0438\u0435 \u043d\u0430 \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u044e \u0441\u0432\u0435\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u0431\u043e\u0440\u043e\u0432:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/ba1\/a19\/270\/ba1a192703c958de16aaed6809918178.jpg\" width=\"874\" height=\"240\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ba1\/a19\/270\/ba1a192703c958de16aaed6809918178.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>BeamNG \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 <code>electrics.values.lowbeam<\/code>\/<code>electrics.values.highbeam<\/code> \u0434\u043b\u044f \u0431\u043b\u0438\u0436\u043d\u0435\u0433\u043e\/\u0434\u0430\u043b\u044c\u043d\u0435\u0433\u043e \u0441\u0432\u0435\u0442\u0430 \u0438 <code>electrics.values.signal_L<\/code>\/<code>electrics.values.signal_R<\/code> \u0434\u043b\u044f \u043b\u0435\u0432\u043e\u0433\u043e\/\u043f\u0440\u0430\u0432\u043e\u0433\u043e \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u043d\u0438\u043a\u043e\u0432.<\/p>\n<p>\u0426\u0411\u041a\u042d \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c BCM (Body Control Module):<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3e3\/644\/a6c\/3e3644a6c3556e6bcd37c5aada96dc54.png\" width=\"561\" height=\"249\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3e3\/644\/a6c\/3e3644a6c3556e6bcd37c5aada96dc54.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0427\u0435\u0433\u043e \u0435\u0449\u0435 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0443? \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438! \u041d\u0430 \u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u043e\u043c \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u041c\u041a\u041f\u041f \u0438 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u0432\u044b\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u043f\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0447. \u0412\u0441\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/5fa\/bcc\/5de\/5fabcc5de6fa7a4e94142675d14de320.jpg\" width=\"1200\" height=\"722\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5fa\/bcc\/5de\/5fabcc5de6fa7a4e94142675d14de320.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0430\u043a\u0430\u044f \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e \u0434\u0432\u0443\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c:<\/p>\n<ul>\n<li>\n<p>\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u0435\u043a\u0443\u0449\u0430\u044f, \u0430 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u0430\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0440\u044f\u0434\u043e\u043c \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u0438\u0433\u0430\u0435\u0442 \u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f\/\u043f\u043e\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u0439\u0442\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438 \u0444\u0430\u0437\u0437\u0438\u043d\u0433\u0430 &#171;\u0447\u0438\u0441\u0442\u044b\u0439&#187; \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u041c\u041a\u041f\u041f \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c. \u041d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0447\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u043d\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044c \u043c\u043e\u0433\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u0440\u043e\u0431\u043a\u0438, \u0430 \u0443\u0436 \u043e\u043d\u0438-\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u044f\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0440\u0435\u0436\u0438\u043c\/\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u043f\u0440\u0438\u0431\u043e\u0440\u043e\u0432.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0432 DID <code>0x0100<\/code> \u043f\u0430\u043d\u0435\u043b\u044c \u0437\u0430\u0436\u0433\u043b\u0430 \u0448\u0435\u0441\u0442\u0435\u0440\u0435\u043d\u043a\u0443 \u0441 \u0432\u043e\u0441\u043a\u043b\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0437\u043d\u0430\u043a\u043e\u043c \u0432\u043d\u0443\u0442\u0440\u0438 &#8212; \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 <em>\u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0438 \u0442\u0440\u0430\u043d\u0441\u043c\u0438\u0441\u0441\u0438\u0438<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f  \u0410\u041a\u041f\u041f \u0438\u043b\u0438 &#171;\u0440\u043e\u0431\u043e\u0442\u0430&#187;:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d09\/805\/ac1\/d09805ac19a4bf0ac20af4ad0315cf15.png\" width=\"597\" height=\"205\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d09\/805\/ac1\/d09805ac19a4bf0ac20af4ad0315cf15.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041c\u0435\u0442\u043e\u0434\u043e\u043c \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u0431\u044b\u043b \u043d\u0430\u0439\u0434\u0435\u043d \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u0438:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/3c3\/438\/e55\/3c3438e55c0ca0e1c1aac66aee451a99.jpg\" width=\"1486\" height=\"300\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3c3\/438\/e55\/3c3438e55c0ca0e1c1aac66aee451a99.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u042d\u0442\u043e \u0443\u0436\u0435 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u041c\u041a\u041f\u041f, \u0442\u0430\u043a\u0430\u044f \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u043e\u0439\u0442\u0438 \u0434\u043b\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 &#171;\u043f\u0440\u044b\u043d\u0434\u043b\u043e\u0432&#187;. \u041d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c \u043d\u0430 \u041c\u041a\u041f\u041f \u0438 \u0432\u0438\u0434\u0435\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c 2?<\/p>\n<p>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0432, \u0447\u0442\u043e DID <code>0x0100<\/code>  \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0442\u0438\u043f \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447, \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u043c \u0447\u0443\u0434\u0435\u0441\u0430 \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u0438 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u0434\u0432\u043e\u0439\u043a\u0443 &#8212; \u043f\u0430\u043d\u0435\u043b\u044c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u043c\u043e\u0440\u0433\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043b\u0430\u043c\u043f\u043e\u0439 \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0438 \u0442\u0440\u0430\u043d\u0441\u043c\u0438\u0441\u0441\u0438\u0438. \u0421\u043d\u043e\u0432\u0430 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e &#171;\u0440\u043e\u0431\u043e\u0442\u0430&#187;:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/8bc\/98b\/354\/8bc98b3547c661656cabaa371acde5b6.jpg\" width=\"1221\" height=\"900\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8bc\/98b\/354\/8bc98b3547c661656cabaa371acde5b6.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c: \u0437\u0430\u0434\u043d\u044e\u044e, \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c \u0438 \u043f\u043e 5 \u043f\u0435\u0440\u0435\u0434\u0430\u0447 \u0432 \u0440\u0443\u0447\u043d\u043e\u043c \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0430\u0445. \u0412\u043e\u0442 \u044d\u0442\u043e \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u044b\u0439 \u0443\u043b\u043e\u0432! \u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 8-\u043c\u0438 \u0441\u0442\u0443\u043f\u0435\u043d\u0447\u0430\u0442\u044b\u0445 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0435\u0439 \u044d\u0442\u043e\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u0442, \u043d\u043e \u0434\u043b\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 5-\u0442\u0438 \u0441\u0442\u0443\u043f\u0435\u043d\u0447\u0430\u0442\u043e\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0438 \u0438\u043b\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 &#8212; \u0432\u043f\u043e\u043b\u043d\u0435. BeamNG \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438, \u043d\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 <code>electrics.values.gearIndex<\/code>.<\/p>\n<p>\u041e\u0431\u0430 \u0442\u0438\u043f\u0430 \u0442\u0440\u0430\u043d\u0441\u043c\u0438\u0441\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u0434\u043b\u044f BeamNG, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0438\u0441\u0443\u0435\u043c \u043d\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 \u0441\u0440\u0430\u0437\u0443 \u043e\u0431\u0435:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3a4\/6f4\/652\/3a46f4652bcb2c0544a15e706e0c42e6.png\" width=\"566\" height=\"249\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3a4\/6f4\/652\/3a46f4652bcb2c0544a15e706e0c42e6.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u043e\u0434\u043d\u043e. \u0410\u041c\u0422 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0438\u0437-\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445 \u043f\u0435\u0440\u0435\u0434\u0430\u0447, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0451.<\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u0438 \u0443\u0436\u0435 \u043f\u043e\u043a\u0440\u044b\u0442\u044b, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0439\u0442\u0438 \u0438 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u043e\u043b\u0435\u0435 \u044d\u043a\u0437\u043e\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435. \u0412 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u043d\u043d\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u0445, \u0432\u043e \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 DID \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0441\u044f \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 \u0444\u0430\u0437\u0437\u0438\u043d\u0433\u043e\u043c. \u0421\u043c\u044b\u0441\u043b \u0431\u044b\u043b \u043f\u0440\u043e\u0441\u0442 &#8212; \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438 \u0437\u0430\u0434\u043e\u043b\u0431\u0430\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u044c \u0432\u0441\u0435\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438. <\/p>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u043d\u0430 \u0433\u043b\u0430\u0437\u0430 \u043f\u043e\u043f\u0430\u043b\u0438\u0441\u044c \u043b\u0430\u043c\u043f\u044b <em>\u043a\u0440\u0443\u0438\u0437-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f<\/em> \u0438 <em>\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u0435\u043b\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438<\/em>, \u0447\u0442\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0443\u0434\u0430\u0447\u0435\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0430\u043c\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0437\u0430\u0433\u043e\u0440\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0437\u0430\u0436\u0438\u0433\u0430\u043d\u0438\u044f. \u0411\u044b\u043b \u043d\u0430\u0439\u0434\u0435\u043d \u043d\u0443\u0436\u043d\u044b\u0439 DID <code>0x0101<\/code> \u0438 \u0434\u0430\u0436\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f BeamNG <code>electrics.values.cruiseControlActive<\/code>. \u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0438\u0433\u0440\u044b \u043a\u0440\u0443\u0438\u0437\u0430 \u043d\u0435\u0442, \u043d\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <em>UI Apps -> Add app -> Cruise Control<\/em>. \u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u043d\u0430 \u0441\u0445\u0435\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0435 \u043d\u0430\u0434\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u0440\u0443\u0438\u0437-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 ECM. \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0447\u043d\u043e, \u0434\u0430\u0436\u0435 \u0438\u043a\u043e\u043d\u043a\u0438 \u043f\u043e\u0447\u0442\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7e5\/1fd\/b47\/7e51fdb47fd13b67e47349458ca6e8d2.PNG\" width=\"475\" height=\"178\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0410 \u043a\u0430\u043a \u043d\u0430\u0441\u0447\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0448\u0438\u043d? \u0417\u0430\u043f\u0438\u0441\u044c \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0432 DID <code>0x0104<\/code> \u043f\u0440\u0438\u0432\u0435\u043b\u0430 \u043a \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u043b\u0430\u043c\u043f\u044b <em>\u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e\u0433\u043e \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u0448\u0438\u043d\u0430\u0445<\/em>, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0434\u043e\u043b\u0436\u043d\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e CAN \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u0448\u0438\u043d\u0430\u0445 (Tire Pressure Monitoring System). \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u043e\u043f\u0446\u0438\u0438 \u0434\u043b\u044f \u0413\u0440\u0430\u043d\u0442\u044b \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e, \u0432\u0438\u0434\u0438\u043c\u043e \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0434\u043a\u043e\u0439:<\/p>\n<figure class=\"bordered full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fd5\/b49\/fd6\/fd5b49fd636dfadb686595851d4b9d4e.png\" width=\"682\" height=\"143\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fd5\/b49\/fd6\/fd5b49fd636dfadb686595851d4b9d4e.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0414\u0430\u043d\u043d\u044b\u0435 \u043e \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0432 \u0448\u0438\u043d\u0430\u0445 <code>electrics.values<\/code> \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442, \u043d\u043e \u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432<code>wheels.wheels[0..N].isTireDeflated<\/code>. \u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f, \u044d\u0442\u043e \u0431\u0443\u043b\u0435\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0435\u0435 \u0441\u0434\u0443\u043b\u0430\u0441\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0448\u0438\u043d\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442. <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0431\u043b\u043e\u043a TPMS \u043d\u0430 \u0441\u0445\u0435\u043c\u0443 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0435 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f1d\/908\/926\/f1d908926f93369e2796a1331129c979.png\" width=\"681\" height=\"249\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f1d\/908\/926\/f1d908926f93369e2796a1331129c979.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0434\u0432\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u044d\u0442\u043e \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 &#171;\u043d\u0430\u0442\u044f\u0433\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0432\u044b \u043d\u0430 \u0433\u043b\u043e\u0431\u0443\u0441&#187;. \u0414\u043b\u044f \u043d\u0438\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 <code>electrics.values<\/code>. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043e\u043d\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 \u0434\u043e\u043b\u0436\u043d\u043e\u043c \u0443\u043f\u043e\u0440\u0441\u0442\u0432\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e.<\/p>\n<p>\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 DID, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0441\u043c\u044b\u0441\u043b\u0438\u0442\u044c, \u0441\u043e\u0431\u0435\u0440\u0435\u043c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"99\" width=\"99\">\n<p><strong>DID<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>\u0424\u0443\u043d\u043a\u0446\u0438\u044f<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"99\" width=\"99\">\n<p>0x0100<\/p>\n<\/td>\n<td>\n<p>\u0422\u0438\u043f \u041a\u041f\u041f (0 = \u041c\u041a\u041f\u041f, 1 = \u0410\u041a\u041f\u041f, 2 = \u0410\u041c\u0422)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"99\" width=\"99\">\n<p>0x0101<\/p>\n<\/td>\n<td>\n<p>\u041a\u0440\u0443\u0438\u0437-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u0435\u043b\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"99\" width=\"99\">\n<p>0x0103<\/p>\n<\/td>\n<td>\n<p>ESC<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"99\" width=\"99\">\n<p>0x0104<\/p>\n<\/td>\n<td>\n<p>TPMS<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"99\" width=\"99\">\n<p>0x0107<\/p>\n<\/td>\n<td>\n<p>\u041f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u041c\u041a\u041f\u041f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"99\" width=\"99\">\n<p>0x010A<\/p>\n<\/td>\n<td>\n<p>ABS<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"99\" width=\"99\">\n<p>0x010C<\/p>\n<\/td>\n<td>\n<p>SRS<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0410 \u0432\u043e\u0442 \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0435 &#171;\u043c\u0435\u043d\u044e&#187;, \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c\u0438 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c\u0438, \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ff\/804\/288\/5ff804288359215d9a7117ece75bddbd.JPG\" width=\"1059\" height=\"392\"\/><figcaption><\/figcaption><\/figure>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th data-colwidth=\"112\" width=\"112\">\n<p>Indicator<\/p>\n<\/th>\n<th data-colwidth=\"218\" width=\"218\">\n<p>CAN Message<\/p>\n<\/th>\n<th>\n<p>BeamNG Lua Variable<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>speed<\/p>\n<\/td>\n<td data-colwidth=\"218\" width=\"218\">\n<p>ECM_1F9<\/p>\n<\/td>\n<td>\n<p>electrics.values.wheelspeed OR electrics.values.airspeed<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>RPM<\/p>\n<\/td>\n<td data-colwidth=\"218\" width=\"218\">\n<p>ECM_180<\/p>\n<\/td>\n<td>\n<p>electrics.values.rpm<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>coolant temp<\/p>\n<\/td>\n<td data-colwidth=\"218\" width=\"218\">\n<p>ECM_551<\/p>\n<\/td>\n<td>\n<p>electrics.values.watertemp<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>gear<\/p>\n<\/td>\n<td data-colwidth=\"218\" width=\"218\">\n<p>ECM_1F9\/AT_421\/AMT_3F7<\/p>\n<\/td>\n<td>\n<p>electrics.values.gearIndex<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>lowbeam<\/p>\n<\/td>\n<td data-colwidth=\"218\" width=\"218\">\n<p>BCM_481<\/p>\n<\/td>\n<td>\n<p>electrics.values.lowbeam<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>highbeam<\/p>\n<\/td>\n<td data-colwidth=\"218\" width=\"218\">\n<p>BCM_481<\/p>\n<\/td>\n<td>\n<p>electrics.values.highbeam<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>handbrake<\/p>\n<\/td>\n<td data-colwidth=\"218\" width=\"218\">\n<p>ABS_354<\/p>\n<\/td>\n<td>\n<p>electrics.values.parkingbrake<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>ESC\/TCS<\/p>\n<\/td>\n<td data-colwidth=\"218\" width=\"218\">\n<p>ESC_245<\/p>\n<\/td>\n<td>\n<p>electrics.values.esc OR electrics.values.tcs<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>turnsignal L<\/p>\n<\/td>\n<td data-colwidth=\"218\" width=\"218\">\n<p>BCM_481<\/p>\n<\/td>\n<td>\n<p>electrics.values.signal_L<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>turnsignal R<\/p>\n<\/td>\n<td data-colwidth=\"218\" width=\"218\">\n<p>BCM_481<\/p>\n<\/td>\n<td>\n<p>electrics.values.signal_R<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>oil warning<\/p>\n<\/td>\n<td data-colwidth=\"218\" width=\"218\">\n<p>ECM_551<\/p>\n<\/td>\n<td>\n<p>electrics.values.oil<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>battery<\/p>\n<\/td>\n<td data-colwidth=\"218\" width=\"218\">\n<p>ECM_551<\/p>\n<\/td>\n<td>\n<p>electrics.values.engineRunning<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>abs<\/p>\n<\/td>\n<td data-colwidth=\"218\" width=\"218\">\n<p>ABS_354<\/p>\n<\/td>\n<td>\n<p>electrics.values.abs<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>check engine<\/p>\n<\/td>\n<td data-colwidth=\"218\" width=\"218\">\n<p>ECM_551<\/p>\n<\/td>\n<td>\n<p>electrics.values.checkengine<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>coolant warning<\/p>\n<\/td>\n<td data-colwidth=\"218\" width=\"218\">\n<p>ECM_551<\/p>\n<\/td>\n<td>\n<p>electrics.values.watertemp<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>tire pressure<\/p>\n<\/td>\n<td data-colwidth=\"218\" width=\"218\">\n<p>TPMS_3E2<\/p>\n<\/td>\n<td>\n<p>wheels.wheels[0..N].isTireDeflated<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>cruise<\/p>\n<\/td>\n<td data-colwidth=\"218\" width=\"218\">\n<p>ECM_35D<\/p>\n<\/td>\n<td>\n<p>electrics.values.cruiseControlActive<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0414\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b:<\/p>\n<details class=\"spoiler\">\n<summary>granta_advanced.dbc<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>VERSION \"\"   NS_ :     NS_DESC_     CM_     BA_DEF_     BA_     VAL_     CAT_DEF_     CAT_     FILTER     BA_DEF_DEF_     EV_DATA_     ENVVAR_DATA_     SGTYPE_     SGTYPE_VAL_     BA_DEF_SGTYPE_     BA_SGTYPE_     SIG_TYPE_REF_     VAL_TABLE_     SIG_GROUP_     SIG_VALTYPE_     SIGTYPE_VALTYPE_     BO_TX_BU_     BA_DEF_REL_     BA_REL_     BA_DEF_DEF_REL_     BU_SG_REL_     BU_EV_REL_     BU_BO_REL_     SG_MUL_VAL_  BS_:  BU_: ECM ABS SRS BCM ESC AMT TPMS AT  BO_ 384 ECM_180: 8 ECM    SG_ rpm : 7|16@0+ (0.125,0) [0|0] \"rpm\" Vector__XXX  BO_ 505 ECM_1F9: 8 ECM    SG_ speed_km_h : 23|16@0+ (0.01,0) [0|0] \"\" Vector__XXX    SG_ mt_gear_recommendation : 15|4@0+ (1,0) [0|1] \"\" Vector__XXX  BO_ 581 ESC_245: 8 ESC    SG_ esc_off_lamp_on : 24|1@0+ (1,0) [0|1] \"\" Vector__XXX    SG_ esc_lamp_on : 25|1@0+ (1,0) [0|1] \"\" Vector__XXX  BO_ 852 ABS_354: 8 ABS    SG_ abs_lamp_on : 55|1@0+ (1,0) [0|1] \"\" Vector__XXX    SG_ abs_and_brake_lamp_on : 53|1@0+ (1,0) [0|1] \"\" Vector__XXX  BO_ 861 ECM_35D: 8 ECM    SG_ cruise_orange_lamp_on : 38|1@0+ (1,0) [0|1] \"\" Vector__XXX    SG_ limiter_orange_lamp_on : 39|1@0+ (1,0) [0|1] \"\" Vector__XXX    SG_ orange_lamp_blinking_flag : 33|1@0+ (1,0) [0|1] \"\" Vector__XXX    SG_ green_lamp_flag : 32|1@0+ (1,0) [0|1] \"\" Vector__XXX  BO_ 994 TPMS_3E2: 8 TPMS    SG_ tpms_lamp_on : 5|1@0+ (1,0) [0|1] \"\" Vector__XXX    SG_ tpms_lamp_blinking : 6|1@0+ (1,0) [0|1] \"\" Vector__XXX  BO_ 1015 AMT_3F7: 8 AMT    SG_ amt_state : 7|5@0+ (1,0) [0|1] \"\" Vector__XXX    SG_ transmission_lamp_on : 2|1@0+ (1,0) [0|1] \"\" Vector__XXX  BO_ 1057 AT_421: 8 AT    SG_ overdrive_off_lamp_on : 0|1@0+ (1,0) [0|1] \"\" Vector__XXX    SG_ transmission_lamp_on : 2|1@0+ (1,0) [0|1] \"\" Vector__XXX    SG_ at_state : 6|4@0+ (1,0) [0|1] \"\" Vector__XXX  BO_ 1153 BCM_481: 8 BCM    SG_ turnsignal_right : 16|1@0+ (1,0) [0|1] \"\" Vector__XXX    SG_ turnsignal_left : 17|1@0+ (1,0) [0|1] \"\" Vector__XXX    SG_ low_beam : 6|1@0+ (1,0) [0|1] \"\" Vector__XXX    SG_ high_beam : 4|1@0+ (1,0) [0|1] \"\" Vector__XXX  BO_ 1176 SRS_498: 1 SRS    SG_ airbag_lamp : 4|1@1+ (1,0) [0|0] \"\" Vector__XXX    SG_ seatbelt_fastened : 0|1@1+ (1,0) [0|0] \"\" Vector__XXX  BO_ 1361 ECM_551: 8 ECM    SG_ coolant_temperature : 15|8@0+ (1,-40) [0|0] \"\" Vector__XXX    SG_ check_engine_lamp_on : 32|1@1+ (1,0) [0|0] \"\" Vector__XXX    SG_ check_engine_lamp_blinking : 33|1@1+ (1,0) [0|0] \"\" Vector__XXX    SG_ oil_lamp_on : 34|1@1+ (1,0) [0|0] \"\" Vector__XXX    SG_ overheat_lamp_with_sound : 35|1@1+ (1,0) [0|0] \"\" Vector__XXX    SG_ battery_lamp_off : 24|1@1+ (1,0) [0|0] \"\" Vector__XXX  VAL_ 505 mt_gear_recommendation 3 \"4_down\" 4 \"3_down\" 5 \"2_down\" 6 \"1_down\" 9 \"2_up\" 10 \"3_up\" 11 \"4_up\" 12 \"5_up\"; VAL_ 1015 amt_state 2 \"R\" 3 \"N\" 16 \"M1\" 17 \"M2\" 18 \"M3\" 19 \"M4\" 20 \"M5\" 24 \"A1\" 25 \"A2\" 26 \"A3\" 27 \"A4\" 28 \"A5\"; VAL_ 1057 at_state 1 \"P\" 2 \"R\" 3 \"N\" 4 \"D\" 8 \"1\" 9 \"2\"; <\/code><\/pre>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>translator_advanced.py<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"python\">import socket import struct import can import cantools from time import time  gear_dict = {0: 'R', 1: 'N', 2: 'M1', 3: 'M2', 4: 'M3', 5: 'M4', 6: 'M5'}  db = cantools.database.load_file('granta_advanced.dbc') ecm_180 = db.get_message_by_name('ECM_180') ecm_1f9 = db.get_message_by_name('ECM_1F9') esc_245 = db.get_message_by_name('ESC_245') abs_354 = db.get_message_by_name('ABS_354') ecm_35d = db.get_message_by_name('ECM_35D') tpms_3e2 = db.get_message_by_name('TPMS_3E2') amt_3f7 = db.get_message_by_name('AMT_3F7') bcm_481 = db.get_message_by_name('BCM_481') srs_498 = db.get_message_by_name('SRS_498') ecm_551 = db.get_message_by_name('ECM_551')  bus = can.interface.Bus(bustype='pcan', channel='PCAN_USBBUS1', bitrate=500000)  def socket_stuff():     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)     sock.bind(('127.0.0.1', 4444))      data = ecm_180.encode({'rpm': 0})     ecm_180_msg = can.Message(arbitration_id=ecm_180.frame_id, data=data, is_extended_id=False)     ecm_180_task = bus.send_periodic(ecm_180_msg, 0.100)      data = ecm_1f9.encode({'speed_km_h': 0,                             'mt_gear_recommendation': 0})     ecm_1f9_msg = can.Message(arbitration_id=ecm_1f9.frame_id, data=data, is_extended_id=False)     ecm_1f9_task = bus.send_periodic(ecm_1f9_msg, 0.100)      data = esc_245.encode({'esc_off_lamp_on': 0,                             'esc_lamp_on': 0})     esc_245_msg = can.Message(arbitration_id=esc_245.frame_id, data=data, is_extended_id=False)     esc_245_task = bus.send_periodic(esc_245_msg, 0.100)      data = abs_354.encode({'abs_lamp_on': 0,                             'abs_and_brake_lamp_on': 0})     abs_354_msg = can.Message(arbitration_id=abs_354.frame_id, data=data, is_extended_id=False)     abs_354_task = bus.send_periodic(abs_354_msg, 0.100)      data = ecm_35d.encode({'cruise_orange_lamp_on': 0,                             'limiter_orange_lamp_on': 0,                             'green_lamp_flag': 1,                             'orange_lamp_blinking_flag': 0})     ecm_35d_msg = can.Message(arbitration_id=ecm_35d.frame_id, data=data, is_extended_id=False)     ecm_35d_task = bus.send_periodic(ecm_35d_msg, 0.200)      data = tpms_3e2.encode({'tpms_lamp_blinking': 0,                              'tpms_lamp_on': 0})     tpms_3e2_msg = can.Message(arbitration_id=tpms_3e2.frame_id, data=data, is_extended_id=False)     tpms_3e2_task = bus.send_periodic(tpms_3e2_msg, 0.200)      data = amt_3f7.encode({'amt_state': 'N',                             'transmission_lamp_on':0})     amt_3f7_msg = can.Message(arbitration_id=amt_3f7.frame_id, data=data, is_extended_id=False)     amt_3f7_task = bus.send_periodic(amt_3f7_msg, 0.100)      data = bcm_481.encode({'turnsignal_right': 0,                             'turnsignal_left': 0,                             'low_beam': 0,                             'high_beam': 0})     bcm_481_msg = can.Message(arbitration_id=bcm_481.frame_id, data=data, is_extended_id=False)     bcm_481_task = bus.send_periodic(bcm_481_msg, 0.100)      data = srs_498.encode({'airbag_lamp': 0,                             'seatbelt_fastened': 1})     srs_498_msg = can.Message(arbitration_id=srs_498.frame_id, data=data, is_extended_id=False)     srs_498_task = bus.send_periodic(srs_498_msg, 0.200)      data = ecm_551.encode({'coolant_temperature': 0,                            'check_engine_lamp_on': 0,                            'check_engine_lamp_blinking': 0,                            'oil_lamp_on': 0,                            'overheat_lamp_with_sound': 0,                            'battery_lamp_off': 1})     ecm_551_msg = can.Message(arbitration_id=ecm_551.frame_id, data=data, is_extended_id=False)     ecm_551_task = bus.send_periodic(ecm_551_msg, 0.100)      start_ms = int(time() * 1000)      while True:         data = sock.recv(256)          if not data:             break          elapsed_ms = int(time() * 1000) - start_ms         if elapsed_ms >= 50:             start_ms = int(time() * 1000)             outgauge_pack = struct.unpack('I3sxH2B7f2I3f15sx15sxi', data)             gear = int(outgauge_pack[3])             speed = int(outgauge_pack[5])             rpm = int(outgauge_pack[6])             engtemp = int(outgauge_pack[8])             showlights = int(outgauge_pack[13])              ecm_180_msg.data = ecm_180.encode({'rpm': rpm})             ecm_180_task.modify_data(ecm_180_msg)              ecm_1f9_msg.data = ecm_1f9.encode({'speed_km_h': speed * 3.6,                                                 'mt_gear_recommendation': 0})             ecm_1f9_task.modify_data(ecm_1f9_msg)              esc_245_msg.data = esc_245.encode({'esc_off_lamp_on': 0,                                                 'esc_lamp_on': (showlights >> 4) &amp; 1})             esc_245_task.modify_data(esc_245_msg)              abs_354_msg.data = abs_354.encode({'abs_lamp_on': (showlights >> 10) &amp; 1 ,                                                 'abs_and_brake_lamp_on': (showlights >> 2) &amp; 1})             abs_354_task.modify_data(abs_354_msg)              ecm_35d_msg.data = ecm_35d.encode({'cruise_orange_lamp_on': (showlights >> 14) &amp; 1,                                                 'limiter_orange_lamp_on': 0,                                                 'green_lamp_flag': 1,                                                 'orange_lamp_blinking_flag': 0})             ecm_35d_task.modify_data(ecm_35d_msg)              tpms_3e2_msg.data = tpms_3e2.encode({'tpms_lamp_blinking': 0,                                                   'tpms_lamp_on': (showlights >> 12) &amp; 1})             tpms_3e2_task.modify_data(tpms_3e2_msg)              amt_3f7_msg.data = amt_3f7.encode({'amt_state': gear_dict[gear],                                                 'transmission_lamp_on':0})             amt_3f7_task.modify_data(amt_3f7_msg)              bcm_481_msg.data = bcm_481.encode({'turnsignal_right': (showlights >> 6) &amp; 1,                                                 'turnsignal_left': (showlights >> 5) &amp; 1,                                                 'low_beam': (showlights >> 0) &amp; 1,                                                 'high_beam': (showlights >> 1) &amp; 1})             bcm_481_task.modify_data(bcm_481_msg)              ecm_551_msg.data = ecm_551.encode({'coolant_temperature': engtemp,                                                 'check_engine_lamp_on': (showlights >> 11) &amp; 1,                                                 'check_engine_lamp_blinking': 0,                                                 'oil_lamp_on': (showlights >> 8) &amp; 1,                                                 'overheat_lamp_with_sound': (showlights >> 13) &amp; 1,                                                 'battery_lamp_off': 1 ^ ((showlights >> 9) &amp; 1)})             ecm_551_task.modify_data(ecm_551_msg)      sock.close()  socket_stuff() <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0412 \u0441\u043a\u0440\u0438\u043f\u0442\u0435 <code>outgauge.lua<\/code> \u0431\u044b\u043b\u0438 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 dashLights \u0438 \u043b\u043e\u0433\u0438\u043a\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b ESC. \u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u043b \u043b\u0430\u043c\u043f\u0443 ESC \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u044f\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Hirochi Sunburst.<\/p>\n<details class=\"spoiler\">\n<summary>outgauge.lua (modified)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"lua\">-- This Source Code Form is subject to the terms of the bCDDL, v. 1.1. -- If a copy of the bCDDL was not distributed with this -- file, You can obtain one at http:\/\/beamng.com\/bCDDL-1.1.txt  -- this file serves two purposes: -- A) generic outgauge implementation: used to use for example custom made dashboard hardware and alike -- B) update the user interface for the remote control app directly via the sendPackage function -- please note that use case A and B exclude each other for now.  local M = {}  local ip = \"127.0.0.1\" local port = 4444  local udpSocket = nil  local ffi = require(\"ffi\")  local function declareOutgaugeStruct()   -- the documentation can be found at LFS\/docs\/InSim.txt   ffi.cdef [[   typedef struct outgauge_t  {       unsigned       time;            \/\/ time in milliseconds (to check order)       char           car[4];          \/\/ Car name       unsigned short flags;           \/\/ Info (see OG_x below)       char           gear;            \/\/ Reverse:0, Neutral:1, First:2...       char           plid;            \/\/ Unique ID of viewed player (0 = none)       float          speed;           \/\/ M\/S       float          rpm;             \/\/ RPM       float          turbo;           \/\/ BAR       float          engTemp;         \/\/ C       float          fuel;            \/\/ 0 to 1       float          oilPressure;     \/\/ BAR       float          oilTemp;         \/\/ C       unsigned       dashLights;      \/\/ Dash lights available (see DL_x below)       unsigned       showLights;      \/\/ Dash lights currently switched on       float          throttle;        \/\/ 0 to 1       float          brake;           \/\/ 0 to 1       float          clutch;          \/\/ 0 to 1       char           display1[16];    \/\/ Usually Fuel       char           display2[16];    \/\/ Usually Settings       int            id;              \/\/ optional - only if OutGauge ID is specified   } outgauge_t;   ]] end pcall(declareOutgaugeStruct)  local OG_KM = 16384 local OG_BAR = 32768 local OG_TURBO = 8192  local DL_LOWBEAM = 2 ^ 0 local DL_HIGHBEAM = 2 ^ 1 local DL_HANDBRAKE = 2 ^ 2 local DL_TC = 2 ^ 4 local DL_SIGNAL_L = 2 ^ 5 local DL_SIGNAL_R = 2 ^ 6 local DL_OILWARN = 2 ^ 8 local DL_BATTERY = 2 ^ 9 local DL_ABS = 2 ^ 10 local DL_CHECKENGINE = 2 ^ 11 local DL_TPMS = 2 ^ 12 local DL_OVERHEAT = 2 ^ 13 local DL_CRUISE = 2 ^ 14  local hasShiftLights = false  local function sendPackage(ip, port, id)   --log('D', 'outgauge', 'sendPackage: '..tostring(ip) .. ':' .. tostring(port))    if not electrics.values.watertemp then     -- vehicle not completly initialized, skip sending package     return   end    local o = ffi.new(\"outgauge_t\")   -- set the values   o.time = 0 -- not used atm   o.car = \"beam\"   o.flags = OG_KM + OG_BAR + (electrics.values.turboBoost and OG_TURBO or 0)   o.gear = electrics.values.gearIndex + 1 -- reverse = 0 here   o.plid = 0   o.speed = electrics.values.wheelspeed or electrics.values.airspeed   o.rpm = electrics.values.rpm or 0   o.turbo = (electrics.values.turboBoost or 0) \/ 14.504    o.engTemp = electrics.values.watertemp or 0   o.fuel = electrics.values.fuel or 0   o.oilPressure = 0 -- TODO   o.oilTemp = electrics.values.oiltemp or 0    -- the lights   o.dashLights = bit.bor(o.dashLights, DL_LOWBEAM)   if electrics.values.lowbeam ~= 0 then     o.showLights = bit.bor(o.showLights, DL_LOWBEAM)   end    o.dashLights = bit.bor(o.dashLights, DL_HIGHBEAM)   if electrics.values.highbeam ~= 0 then     o.showLights = bit.bor(o.showLights, DL_HIGHBEAM)   end    o.dashLights = bit.bor(o.dashLights, DL_HANDBRAKE)   if electrics.values.parkingbrake ~= 0 then     o.showLights = bit.bor(o.showLights, DL_HANDBRAKE)   end    o.dashLights = bit.bor(o.dashLights, DL_SIGNAL_L)   if electrics.values.signal_L ~= 0 then     o.showLights = bit.bor(o.showLights, DL_SIGNAL_L)   end    o.dashLights = bit.bor(o.dashLights, DL_SIGNAL_R)   if electrics.values.signal_R ~= 0 then     o.showLights = bit.bor(o.showLights, DL_SIGNAL_R)   end    local hasABS = electrics.values.hasABS or false   if hasABS then     o.dashLights = bit.bor(o.dashLights, DL_ABS)     if electrics.values.abs ~= 0 then       o.showLights = bit.bor(o.showLights, DL_ABS)     end   end    o.dashLights = bit.bor(o.dashLights, DL_OILWARN)   if electrics.values.oil ~= 0 then     o.showLights = bit.bor(o.showLights, DL_OILWARN)   end    o.dashLights = bit.bor(o.dashLights, DL_BATTERY)   if electrics.values.engineRunning == 0 then     o.showLights = bit.bor(o.showLights, DL_BATTERY)   end    local hasESC = (electrics.values.esc ~= nil) or (electrics.values.tcs ~= nil)   if hasESC then     o.dashLights = bit.bor(o.dashLights, DL_TC)     if electrics.values.esc ~= 0 or electrics.values.tcs ~= 0 then       o.showLights = bit.bor(o.showLights, DL_TC)     end   end    o.dashLights = bit.bor(o.dashLights, DL_CHECKENGINE)   if electrics.values.checkengine == true then     o.showLights = bit.bor(o.showLights, DL_CHECKENGINE)   end    o.dashLights = bit.bor(o.dashLights, DL_TPMS)   if wheels.wheels[0].isTireDeflated or       wheels.wheels[1].isTireDeflated or       wheels.wheels[2].isTireDeflated or       wheels.wheels[3].isTireDeflated then     o.showLights = bit.bor(o.showLights, DL_TPMS)   end    o.dashLights = bit.bor(o.dashLights, DL_OVERHEAT)   if electrics.values.watertemp > 115 then     o.showLights = bit.bor(o.showLights, DL_OVERHEAT)   end    local hasCC = (electrics.values.cruiseControlActive ~= nil)   if hasCC then     o.dashLights = bit.bor(o.dashLights, DL_CRUISE)     if electrics.values.cruiseControlActive ~= 0 then       o.showLights = bit.bor(o.showLights, DL_CRUISE)     end   end    o.throttle = electrics.values.throttle   o.brake = electrics.values.brake   o.clutch = electrics.values.clutch   o.display1 = \"\" -- TODO   o.display2 = \"\" -- TODO   o.id = id    local packet = ffi.string(o, ffi.sizeof(o)) --convert the struct into a string   udpSocket:sendto(packet, ip, port)   --log(\"I\", \"\", \"SendPackage for ID '\"..dumps(id)..\"': \"..dumps(electrics.values.rpm)) end  local function updateGFX(dt)   if not playerInfo.firstPlayerSeated then     return   end   sendPackage(ip, port, 0) end  local function onExtensionLoaded()   if not ffi then     log(\"E\", \"outgauge\", \"Unable to load outgauge module: Lua FFI required\")     return false   end    if not udpSocket then     udpSocket = socket.udp()   end    ip = settings.getValue(\"outgaugeIP\")   port = tonumber(settings.getValue(\"outgaugePort\"))    log(\"I\", \"\", \"Outgauge initialized for: \" .. tostring(ip) .. \":\" .. tostring(port))  --  local shiftLightControllers = controller.getControllersByType(\"shiftLights\") --  hasShiftLights = shiftLightControllers and #shiftLightControllers > 0   return true end  local function onExtensionUnloaded()   if udpSocket then     udpSocket:close()   end   udpSocket = nil end  -- public interface M.onExtensionLoaded = onExtensionLoaded M.onExtensionUnloaded = onExtensionUnloaded M.updateGFX = updateGFX  M.sendPackage = sendPackage  return M <\/code><\/pre>\n<\/div>\n<\/details>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f c CAN-\u0448\u0438\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u043e\u0441\u043b\u0430\u0441\u044c \u0434\u043e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a BeamNG. \u041b\u0435\u043d\u044c \u043c\u043e\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0436\u0435\u043b\u0435\u0437\u0430, \u0430 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u0441\u0442\u0432\u043e &#8212; \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439.<\/p>\n<p>\u0418\u0437 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432 \u0441\u0442\u043e\u0438\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 (\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0434\u043b\u044f \u0440\u0438\u0442\u043c\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u043d\u0438\u043a\u043e\u0432) \u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 (\u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0442\u043e\u043f\u043b\u0438\u0432\u0430 \u0438 \u0440\u0443\u0447\u043d\u0438\u043a). \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u044d\u0442\u043e \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u044f\u0445 \u043e\u0442 \u0433\u0435\u0439\u043c\u043f\u043b\u0435\u044f.<\/p>\n<p>\u0417\u0430\u043e\u0434\u043d\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0447\u0443\u0442\u044c \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044c, \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 BeamNG.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/653615\/\"> https:\/\/habr.com\/ru\/post\/653615\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0438\u0434\u0435\u043e \u0434\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438:<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6230f217101f9e0b2753e3ed\" data-style=\"\" id=\"6230f217101f9e0b2753e3ed\" width=\"\"><\/div>\n<p><em>\u0410\u0432\u0442\u043e\u0440 3D-\u043c\u043e\u0434\u0435\u043b\u0438: <\/em><a href=\"https:\/\/vk.com\/kiwiws\" rel=\"noopener noreferrer nofollow\"><em>Kivvich BeamNG Workspace<\/em><\/a><\/p>\n<p><em>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440: \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f \u0431\u0435\u0437 \u0434\u043e\u043b\u0436\u043d\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430 \u0438 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u043b\u0435\u0447\u044c \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043f\u0435\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f.<\/em><\/p>\n<h2>\u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442?<\/h2>\n<p>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b <a href=\"https:\/\/en.lfsmanual.net\/wiki\/OutSim_\/_OutGauge\" rel=\"noopener noreferrer nofollow\">OutGauge<\/a>, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u0431\u043e\u0440\u043e\u0432 \u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u0438 \u043a \u0430\u0432\u0442\u043e\u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u043c.<\/p>\n<figure class=\"bordered full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e: \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 BeamNG \u0432\u0445\u043e\u0434\u0438\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 Lua <code>outgauge.lua<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e UDP \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <code>127.0.0.1:4444<\/code>. \u0422\u0430\u043c \u044d\u0442\u0438 \u043f\u0430\u043a\u0435\u0442\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u043a\u043e\u043b\u0435\u043d\u043a\u0435 \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 Python, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 CAN-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0445 \u0431\u043b\u043e\u043a\u0443 \u043f\u0430\u043d\u0435\u043b\u0438 \u043f\u0440\u0438\u0431\u043e\u0440\u043e\u0432.<\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0436\u0435\u043b\u0435\u0437\u0430 \u043a\u0440\u043e\u043c\u0435 \u041f\u041a, CAN-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 \u0441\u0430\u043c\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u0423 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438, \u0441\u0430\u043c\u044b\u0439 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 &#8212; \u044d\u0442\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u044f \u0442\u043e\u043f\u043b\u0438\u0432\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0439 \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0438 \u0441\u043e\u043f\u0440\u043e\u0442\u0438\u0432\u043b\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0435\u0439 \u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0442\u043e\u043f\u043b\u0438\u0432\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CAN-\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f.<\/p>\n<p>\u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c \u043f\u0440\u0438\u0431\u043e\u0440\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 CAN-\u0448\u0438\u043d\u044b \u0438 \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u043e\u043c \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445\/\u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043e\u0432. \u0414\u043b\u044f \u0431\u0435\u0437\u0443\u043c\u043d\u044b\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u0435\u0435 \u043d\u0430 \u0440\u0430\u0437\u0431\u043e\u0440\u043a\u0435, \u0430 \u043d\u0435 \u0432\u044b\u0434\u0438\u0440\u0430\u0442\u044c \u0438\u0437 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u0430\u043d\u0435\u043b\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u043b\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u043d\u0430\u0434\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0441 \u043d\u0435\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0435\u0435 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f. \u0414\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 <a href=\"https:\/\/www.csselectronics.com\/pages\/can-dbc-file-database-intro\" rel=\"noopener noreferrer nofollow\">DBC<\/a>-\u0444\u0430\u0439\u043b\u044b, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0442\u0440\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 CAN-\u0448\u0438\u043d\u044b:<\/p>\n<ul>\n<li>\n<p><em>\u0443\u0437\u043b\u044b<\/em>, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u043a \u0448\u0438\u043d\u0435 (\u0431\u043b\u043e\u043a\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u0431\u043e\u0440\u044b \u0438 \u0442.\u0434.);<\/p>\n<\/li>\n<li>\n<p><em>\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u0442\u0438 \u0443\u0437\u043b\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442;<\/p>\n<\/li>\n<li>\n<p><em>\u0441\u0438\u0433\u043d\u0430\u043b\u044b<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0432 \u044d\u0442\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0445. <\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043d\u0430 Python \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/cantools\/cantools\" rel=\"noopener noreferrer nofollow\">cantools<\/a> \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 DBC-\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/hardbyte\/python-can\" rel=\"noopener noreferrer nofollow\">python-can<\/a>, \u0443\u043c\u0435\u044e\u0449\u0430\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043a\u0443\u0447\u0435\u0439 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 CAN-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432.<\/p>\n<p>\u0412\u0430\u0436\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c, \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433 CAN-\u0448\u0438\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f, \u0432\u044b\u0441\u0442\u0443\u043f\u0438\u0442 \u041f\u041e <a href=\"https:\/\/github.com\/collin80\/SavvyCAN\" rel=\"noopener noreferrer nofollow\">SavvyCAN<\/a>. \u0412\u043e\u0442 \u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u043d\u043e \u0443\u043c\u0435\u0435\u0442:<\/p>\n<ul>\n<li>\n<p>\u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c DBC-\u0444\u0430\u0439\u043b\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0441\u0438\u0433\u043d\u0430\u043b\u044b, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 DBC-\u0444\u0430\u0439\u043b\u0430\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 UDS-\u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0444\u0430\u0437\u0437\u0438\u043d\u0433.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f DBC-\u0444\u0430\u0439\u043b\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f <a href=\"https:\/\/www.vector.com\/int\/en\/products\/products-a-z\/software\/candb\/\" rel=\"noopener noreferrer nofollow\">CANdb++<\/a> \u043e\u0442 Vector.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0449\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0441\u0430\u043c\u043e\u043c\u0443, \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0440\u0430\u0437\u0431\u0438\u0442\u0430 \u043d\u0430 \u0434\u0432\u0430 \u0443\u0440\u043e\u0432\u043d\u044f: \u0431\u0430\u0437\u043e\u0432\u044b\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0443\u0447\u0438\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u0443\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0438 \u0443\u0433\u043b\u0443\u0431\u043b\u0435\u043d\u043d\u044b\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u0432\u044b\u0436\u0430\u0442\u044c \u0438\u0437 \u043f\u0430\u043d\u0435\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c, \u043f\u0443\u0441\u0442\u0438\u0432 \u0432 \u0445\u043e\u0434 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0435\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Lua-\u0441\u043a\u0440\u0438\u043f\u0442\u0430 BeamNG.<\/p>\n<h2>\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c<\/h2>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0434\u043b\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f:<\/p>\n<ol>\n<li>\n<p>\u043f\u043e\u0433\u0430\u0441\u0438\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0438 (\u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043d\u0435 \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u043b\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0433\u0440\u044b) \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CAN-\u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u043e\u0440\u043e\u0442\u043e\u0432, \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c Lua-\u0441\u043a\u0440\u0438\u043f\u0442 BeamNG \u043f\u0435\u0440\u0432\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043f\u0430\u043d\u0435\u043b\u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435.<\/p>\n<\/li>\n<\/ol>\n<h3>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 CAN-\u0448\u0438\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f<\/h3>\n<p>\u042d\u0442\u043e\u0442 \u0448\u0430\u0433 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439\/\u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430\u0446\u0438\u0438 \u0438 \u043e\u0441\u043d\u0430\u0449\u0435\u043d\u0438\u0438 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f, \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438, \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0445\u0435\u043c\u044b \u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u043a\u0438 \u043f\u0440\u0438 \u0440\u0430\u0437\u0431\u043e\u0440\u043a\u0435 \u0441\u0430\u043b\u043e\u043d\u0430.<\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0432 \u0440\u043e\u043b\u0438 \u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 Lada Granta FL 2021 \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430\u0446\u0438\u0438 &#171;\u041a\u043e\u043c\u0444\u043e\u0440\u0442&#187;, \u0441 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u043c \u0412\u0410\u0417-21127 \u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447. \u041e\u0441\u043d\u0430\u0449\u0435\u043d\u0438\u0435 \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u043d\u0430\u0432\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u043e\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438 \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439:<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p><em>\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u043e\u0432 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043d\u044b \u0444\u0440\u0438\u0432\u043e\u043b\u044c\u043d\u043e \u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.<\/em><\/p>\n<p>\u0412\u0441\u0435\u0433\u043e 6 \u0431\u043b\u043e\u043a\u043e\u0432, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u043a \u043e\u0434\u043d\u043e\u0439-\u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0448\u0438\u043d\u0435: <\/p>\n<ol>\n<li>\n<p>ECM (Engine Control Module) &#8212; \u0431\u043b\u043e\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u043c;<\/p>\n<\/li>\n<li>\n<p>SRS (Supplemental Restraint System) &#8212; \u0431\u043b\u043e\u043a \u043f\u043e\u0434\u0443\u0448\u0435\u043a \u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0442\u044f\u0436\u0438\u0442\u0435\u043b\u0435\u0439 \u0440\u0435\u043c\u043d\u0435\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p>ABS (Anti-lock Braking System) &#8212; \u0431\u043b\u043e\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043d\u0442\u0438\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439;<\/p>\n<\/li>\n<li>\n<p>Instrument Cluster &#8212; \u043f\u0430\u043d\u0435\u043b\u044c \u043f\u0440\u0438\u0431\u043e\u0440\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>Head Unit &#8212; \u0433\u043e\u043b\u043e\u0432\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e;<\/p>\n<\/li>\n<li>\n<p>ERA &#8212; \u0431\u043b\u043e\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u042d\u043a\u0441\u0442\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0420\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438 \u0410\u0432\u0430\u0440\u0438\u044f\u0445.<\/p>\n<\/li>\n<\/ol>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u0431\u043b\u043e\u043a \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u043c\u043a\u0430, \u043d\u043e \u043e\u043d \u043a \u0448\u0438\u043d\u0435 \u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435.<\/p>\n<h3>\u0421\u0431\u043e\u0440 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437 \u043b\u043e\u0433\u043e\u0432<\/h3>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a CAN-\u0448\u0438\u043d\u0435 &#8212; \u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0430\u0437\u044a\u0435\u043c. \u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0447\u0443\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0435\u0441\u043b\u0438 \u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d <a href=\"https:\/\/habr.com\/ru\/post\/571766\/\" rel=\"noopener noreferrer nofollow\">\u0433\u0435\u0439\u0442\u0432\u0435\u0439<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0442\u0440\u0430\u0444\u0438\u043a \u0438 \u043d\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0422\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a \u0448\u0438\u043d\u0430\u043c \u0437\u0430 \u0433\u0435\u0439\u0442\u0432\u0435\u0435\u043c \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u0434\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u043a\u0430\u043a\u0430\u044f \u0448\u0438\u043d\u0430 \u0437\u0430 \u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043c\u0435\u043d \u0441\u0435\u0442\u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442.<\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0431\u043e\u0440\u0430 \u043b\u043e\u0433\u043e\u0432 \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0441\u043e\u0431\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0438 \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0432 \u043b\u043e\u0433\u0430\u0445. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0433\u0440\u0435\u0442\u044c \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044c \u0434\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0438\u043b\u0438 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u043e\u0431\u043e\u0440\u043e\u0442\u044b \u0434\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433 &#8212; \u044d\u0442\u043e \u0430\u043d\u0430\u043b\u0438\u0437 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043b\u043e\u0433\u043e\u0432. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0435\u0441\u0442\u044c \u0434\u0430\u0436\u0435 <a href=\"https:\/\/github.com\/brent-stone\/CAN_Reverse_Engineering\" rel=\"noopener noreferrer nofollow\">\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435<\/a>. \u0412 \u0446\u0435\u043b\u043e\u043c \u044d\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u0438 \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439, \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 \u0441\u0443\u0434\u043e\u043a\u0443. \u0427\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0432\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435, \u0442\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0437\u0430\u0433\u0430\u0434\u043a\u0430\u043c\u0438.<\/p>\n<p>\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0432\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0432 DBC-\u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u0435\u0435. \u041a\u0441\u0442\u0430\u0442\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u0430\u043c \u043f\u043e\u0432\u0435\u0437\u043b\u043e \u0438 CAN-\u0448\u0438\u043d\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f \u0443\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 <a href=\"https:\/\/github.com\/commaai\/opendbc\" rel=\"noopener noreferrer nofollow\">opendbc<\/a>.<\/p>\n<p>\u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a\u0438:<\/p>\n<ul>\n<li>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441 \u043f\u043e\u0438\u0441\u043a\u0430 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u043e\u0439 \u0431\u043b\u043e\u043a \u043a\u0430\u043a\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0438\u0441\u043a\u0430\u0442\u044c \u043e\u0431\u043e\u0440\u043e\u0442\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0445 \u0431\u043b\u043e\u043a\u0430 ABS. \u041c\u043e\u0436\u043d\u043e \u0441\u043d\u044f\u0442\u044c \u0438 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0431\u043b\u043e\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u0441\u0442\u043e\u043b\u0435 \u0438\u043b\u0438 \u0432\u044b\u0442\u0430\u0449\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u0440\u0435\u0434\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435\u043b\u044c \u0432 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0435 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u043f\u0430\u0434\u0443\u0442 (\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u044d\u043a\u0441\u0442\u0440\u0435\u043c\u0430\u043b\u043e\u0432).<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u0438\u0433\u043d\u0430\u043b \u0432\u044b \u0438\u0449\u0435\u0442\u0435: \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 (\u043e\u0431\u043e\u0440\u043e\u0442\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f), \u0441\u0447\u0435\u0442\u043d\u044b\u0439 (\u043f\u0440\u043e\u0431\u0435\u0433) \u0438\u043b\u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 (\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u0430\u043b\u044c\u043d\u0435\u0433\u043e \u0441\u0432\u0435\u0442\u0430: \u0432\u043a\u043b\/\u0432\u044b\u043a\u043b), \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0438\u0433\u043d\u0430\u043b\u044b \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0438\u0437 &#171;\u043f\u043e\u043f\u0443\u0433\u0430\u0435\u0432&#187; \u0432 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u043d\u0435 \u0437\u0430\u043e\u0441\u0442\u0440\u044f\u0439\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0445 &#8212; \u0444\u043e\u0440\u043c\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0432\u0430\u0436\u043d\u0435\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u0435\u0433\u043e ID: \u043c\u0435\u043d\u044c\u0448\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u044b\u0441\u0448\u0435\u043c\u0443 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0443 \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441 \u043c\u0435\u043d\u044c\u0448\u0438\u043c ID \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442\u044c \u0432\u0430\u0436\u043d\u043e\u043c\u0443 \u0431\u043b\u043e\u043a\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 ECM.<\/p>\n<\/li>\n<li>\n<p>\u0422\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0441 \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439: \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u043c\u0435\u043d\u044c\u0448\u0438\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u043c \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0434\u0432\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0430: \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438.<\/p>\n<p><strong>\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439<\/strong> &#8212; \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0439 \u043f\u043e\u0435\u0437\u0434\u043a\u0438 \u043f\u043e \u0433\u043e\u0440\u043e\u0434\u0443, \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c, \u043a\u0430\u043a \u0448\u0435\u0432\u0435\u043b\u044f\u0442\u0441\u044f \u0441\u0442\u0440\u0435\u043b\u043a\u0438 \u0443 \u043b\u0435\u0436\u0430\u0449\u0435\u0439 \u043d\u0430 \u0441\u0442\u043e\u043b\u0435 \u043f\u0430\u043d\u0435\u043b\u0438. <\/p>\n<ol>\n<li>\n<p>\u043f\u0430\u043d\u0435\u043b\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u0441\u0442\u043e\u043b\u0435 \u0438 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0440\u0430\u043d\u0435\u0435 \u043b\u043e\u0433, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0435\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e \u0443\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u0441\u0443\u0436\u0430\u044f \u043a\u0440\u0443\u0433 \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u0435\u043c\u044b\u0445, \u043f\u043e\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u0432\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0430\u0437\u0437\u0438\u043d\u0433\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u0431\u0438\u0442\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ol>\n<figure class=\"bordered full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0433\u0430\u043b\u043a\u0443 &#171;Use original frame timing from captured frames&#187;, \u0447\u0442\u043e\u0431\u044b SavvyCAN \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439.<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u043e\u0438 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0441\u043a\u043e\u043c\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438, \u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0422\u0443\u0442 \u0432\u0430\u0436\u043d\u043e \u043d\u0430\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u0440\u043f\u0435\u043d\u0438\u044f \u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p><strong>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438 <\/strong>&#8212; \u0431\u043e\u043b\u0435\u0435 \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432 OBD2, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u043a\u0440\u0430\u0439\u043d\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439.<\/p>\n<ol>\n<li>\n<p>\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043b\u043e\u0433, \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0441\u044b\u043b\u0430\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 OBD2-\u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 RPM;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043a\u0430\u0440\u043c\u043b\u0438\u0432\u0430\u0435\u043c SavvyCAN \u043b\u043e\u0433, <a href=\"https:\/\/www.csselectronics.com\/pages\/obd2-dbc-file\" rel=\"noopener noreferrer nofollow\">DBC-\u0444\u0430\u0439\u043b \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c OBD2-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/a> \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0439 DBC-\u0444\u0430\u0439\u043b \u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0442\u0440\u043e\u0438\u043c \u0434\u0432\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430: \u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0441\u043d\u044b\u0439 \u043d\u0430 \u0431\u0430\u0437\u0435 OBD2 \u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0439;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u043e\u0431\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439, \u0443\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043f\u043e\u0445\u043e\u0436\u0438 \u0438\u043b\u0438 \u043d\u0435\u0442.<\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0432 \u0434\u0432\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 RPM, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431 1.0 \u0434\u043b\u044f \u043e\u0431\u043e\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 &#171;\u043f\u043e\u043f\u0443\u0433\u0430\u044f\u0445&#187;:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0438\u0433\u043d\u0430\u043b\u044b \u043f\u043e\u0445\u043e\u0436\u0438 \u043f\u043e \u0444\u043e\u0440\u043c\u0435, \u043d\u043e \u043e\u043d\u0438 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043e\u043c. \u0413\u0440\u0430\u0444\u0438\u043a RPM \u0434\u043b\u044f OBD2 \u043d\u0435 \u0442\u0430\u043a\u043e\u0439 \u0433\u043b\u0430\u0434\u043a\u0438\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0438\u0436\u0435, \u0447\u0435\u043c \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f. \u0415\u0441\u043b\u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u0443 OBD2 \u0435\u0433\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043c\u0430\u0441\u0448\u0442\u0430\u0431 0.25 \u0438 \u043f\u043e\u0434\u043e\u0433\u043d\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430 0.125, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0438\u0433\u043d\u0430\u043b RPM \u043d\u0430\u0439\u0434\u0435\u043d! \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0434\u0432\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0442\u0430\u0445\u043e\u043c\u0435\u0442\u0440\u0430.<\/p>\n<h3>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 BeamNG<\/h3>\n<p>\u041f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u0432:<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440 CAN-\u0448\u0438\u043d\u044b, \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043d\u0430\u043b\u0430\u0434\u0438\u0442\u044c \u043e\u0431\u043c\u0435\u043d \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438.<\/p>\n<p>\u0412\u044b\u0432\u043e\u0434 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0443\u0440\u043e\u0432\u043d\u044f \u0442\u043e\u043f\u043b\u0438\u0432\u0430 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0441 \u043c\u0430\u0441\u0441\u043e\u0439, \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u043c\u0443 \u0431\u0430\u043a\u0443 \u0438 \u043f\u043e\u0433\u0430\u0441\u0438\u0442 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e \u043c\u0438\u0433\u0430\u044e\u0449\u0443\u044e \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u044e \u043d\u0438\u0437\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0442\u043e\u043f\u043b\u0438\u0432\u0430. \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0437\u0430\u0445\u043e\u0447\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0443\u0440\u043e\u0432\u043d\u044f \u0442\u043e\u043f\u043b\u0438\u0432\u0430, \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043e\u0442 \u0441\u043e\u043f\u0440\u043e\u0442\u0438\u0432\u043b\u0435\u043d\u0438\u044f:<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0422\u043e\u0447\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0442\u043e\u043f\u043b\u0438\u0432\u0430 \u0432 % \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 1-\u043e\u043c \u0431\u0430\u0439\u0442\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f <code>0x280<\/code>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0434\u0435\u0441\u044c \u043e\u043d \u0440\u0430\u0432\u0435\u043d 0x5C = 92%:<\/p>\n<p><code>0280  8  01 5C FF 10 FF FF 00 00<\/code><\/p>\n<p>\u041d\u0443 \u0430 \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 OutGauge \u0432 BeamNG, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0433\u0430\u043b\u043a\u0443 \u0432 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0435 <em>Options -> Other<\/em>. \u0422\u0430\u043c \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c IP-\u0430\u0434\u0440\u0435\u0441 \u0438 \u043f\u043e\u0440\u0442:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h3>\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0430\u043d\u0430\u043b\u0438\u0437\u0430<\/h3>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0435\u0445\u043d\u0438\u043a, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435, \u0431\u044b\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0438\u0441\u043a\u043e\u043c\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u043e\u0431\u043e\u0440\u043e\u0442\u043e\u0432 \u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u044f\u0434 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0445 \u0437\u0430 \u043b\u0430\u043c\u043f\u044b \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u0438:<\/p>\n<details class=\"spoiler\">\n<summary>granta_basic.dbc<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>VERSION \"\"   NS_ :     NS_DESC_     CM_     BA_DEF_     BA_     VAL_     CAT_DEF_     CAT_     FILTER     BA_DEF_DEF_     EV_DATA_     ENVVAR_DATA_     SGTYPE_     SGTYPE_VAL_     BA_DEF_SGTYPE_     BA_SGTYPE_     SIG_TYPE_REF_     VAL_TABLE_     SIG_GROUP_     SIG_VALTYPE_     SIGTYPE_VALTYPE_     BO_TX_BU_     BA_DEF_REL_     BA_REL_     BA_DEF_DEF_REL_     BU_SG_REL_     BU_EV_REL_     BU_BO_REL_     SG_MUL_VAL_  BS_:  BU_: ECM ABS SRS  BO_ 384 ECM_180: 8 ECM    SG_ rpm : 7|16@0+ (0.125,0) [0|0] \"rpm\" Vector__XXX  BO_ 505 ECM_1F9: 8 ECM    SG_ <\/code><\/pre>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-330954","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/330954","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=330954"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/330954\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=330954"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=330954"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=330954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}