Contr1 ControllerSetting1 ESP8266WifiSettingsRoot1 ProjectTreeESP8266WifiInterfaceRoot1AP Communication1 Modbus1 ModbusSlave1 ModbusVariables1-1 ModbusVariablesTable1-1-4 -89@-483 LibraryRoot LibraryGroup-Базовые элементы LibraryGroup-Триггеры LibraryGroup-Структуры LibraryGroup-Микросхемы расширений LibraryGroup-EEPROM LibraryGroup-Система 0@-147 272 0@-1260 153 291 0@0 Groupinput Groupoutput 1 UserBlockLibraryRootNode LibraryGroup-Регистры 0@0 4 7 3 20@0 40@0 corner: 75.0d@20 20@0 corner: 95.0d@20 44@13.5d 20@10 40@10 14.0d@13.5d 20@0 corner: 40@20 7.0d 27.0d vINIT 6 5d6ee82a-3119-4bdf-9fa5-be95ff15a191 85.0d@10 105.0d@10 2 20@30 40@30 corner: 135.0d@50 20@30 corner: 155.0d@50 44@44.5d 20@40 40@40 20@30 corner: 40@50 170@30 190@30 corner: 230.0d@50 170@30 corner: 250.0d@50 200@43.5d 170@30 corner: 190@50 170@40 20.0d Час 70@40 90@40 corner: 170@80 70@40 corner: 190@80 91.0d@54.5d 70@60 corner: 90@80 5 230@20 250@20 corner: 290@80 230@20 corner: 310@80 261.5d@33.5d 230@40 corner: 250@60 70@90 90@90 corner: 170@130 70@90 corner: 190@130 91.0d@104.5d 400@60 420@60 corner: 500@140 400@60 corner: 520@140 437.0d@74.0d 300@40 320@40 corner: 360@100 300@40 corner: 380@100 328.5d@53.5d Q 9.0d 290@70 310@70 300@70 corner: 300@70 300@70 320@70 300@60 corner: 320@80 340@190 360@190 corner: 434.0d@210 340@190 corner: 454.0d@210 370@204.5d 160@170 180@170 corner: 262.0d@510 160@170 corner: 282.0d@510 188.5d@184.5d 20@190 40@190 corner: 129.0d@210 20@190 corner: 149.0d@210 44@204.5d 20@200 40@200 20@190 corner: 40@210 129.0d@190 corner: 149.0d@210 149.0d@200 81.0d key 248493046 14 15 10 10 87654321 HHHppp workStatus ap mac 20 ssid password ip subnet gateway indicstion chas min chac min sek 10 11 temperatura 8 Fotor tcp 502 0.0d 129.0d@200 149.0d@200 corner: 149.0d@200 REG 160@200 180@200 220@110 240@110 corner: 280@170 220@110 corner: 300@170 249.0d@123.5d 120@130 140@130 corner: 171.0d@150 120@130 corner: 191.0d@150 144@143.5d 171.0d@130 corner: 191.0d@150 191.0d@140 23.0d 109a3b3e-5377-4acf-b8a8-2972547090cc Регистор 38b4ec94-55fd-4bbd-92de-8096dde84434 171.0d@140 220@180 240@180 corner: 280@240 220@180 corner: 300@240 249.0d@193.5d 220@200 corner: 240@220 bn 220@230 240@230 214.0d@233.5d 220@220 corner: 240@240 310@220 330@220 corner: 351.0d@240 310@220 corner: 371.0d@240 334@233.5d 310@220 corner: 330@240 310@230 13.0d B1 f24fc813-ae01-4aef-91b6-35fb0d9e87fc e093153d-369a-4c1d-bd1a-74a930010b2b 330@230 Q 280@230 300@230 280@220 corner: 300@240 220@210 V 240@210 220@250 240@250 corner: 280@310 220@250 corner: 300@310 249.0d@263.5d 220@270 corner: 240@290 220@300 240@300 212.0d@303.5d 220@290 corner: 240@310 310@290 330@290 corner: 352.0d@310 310@290 corner: 372.0d@310 334@303.5d 310@290 corner: 330@310 310@300 14.0d B2 af6da2de-3363-4343-ba25-781afb2da375 38921615-624c-4cb5-909f-6237c53f1a0b 330@300 280@300 300@300 280@290 corner: 300@310 220@280 240@280 220@320 240@320 corner: 280@380 220@320 corner: 300@380 249.0d@333.5d 220@340 corner: 240@360 220@370 240@370 212.0d@373.5d 220@360 corner: 240@380 310@360 330@360 corner: 352.0d@380 310@360 corner: 372.0d@380 334@373.5d 310@360 corner: 330@380 310@370 B3 3d09c8f1-99f9-4c30-8d9c-6b8ce642d3c9 512a1465-afd8-4b9a-9ffd-918cde4b6bfc 330@370 280@370 300@370 280@360 corner: 300@380 220@350 240@350 220@390 240@390 corner: 280@450 220@390 corner: 300@450 249.0d@403.5d 220@410 corner: 240@430 220@440 240@440 211.0d@443.5d 220@430 corner: 240@450 310@430 330@430 corner: 353.0d@450 310@430 corner: 373.0d@450 334@443.5d 310@430 corner: 330@450 310@440 15.0d B4 fd6ae695-00ba-470e-9f3c-5c429337d1d6 44b89eab-e215-4b1c-9d6c-e32a4207a5ec 330@440 280@440 300@440 280@430 corner: 300@450 220@420 240@420 220@460 240@460 corner: 280@520 220@460 corner: 300@520 249.0d@473.5d 220@480 corner: 240@500 220@510 240@510 212.0d@513.5d 220@500 corner: 240@520 310@500 330@500 corner: 352.0d@520 310@500 corner: 372.0d@520 334@513.5d 310@500 corner: 330@520 310@510 B5 351bba76-8bf1-4a4a-802d-483ea6d167d1 cd1a6014-1b12-4adb-be2d-ead6e8bb6e5a 330@510 280@510 300@510 280@500 corner: 300@520 220@490 240@490 220@530 240@530 corner: 280@590 220@530 corner: 300@590 249.0d@543.5d 220@550 corner: 240@570 220@580 240@580 212.0d@583.5d 220@570 corner: 240@590 310@570 330@570 corner: 352.0d@590 310@570 corner: 372.0d@590 334@583.5d 310@570 corner: 330@590 310@580 B6 fc25a672-2536-413a-a580-f86da085bf80 91c18b42-03d1-490c-9b48-067cd0f5fa41 330@580 280@580 300@580 280@570 corner: 300@590 220@560 240@560 220@600 240@600 corner: 280@660 220@600 corner: 300@660 249.0d@613.5d 220@620 corner: 240@640 220@650 240@650 212.0d@653.5d 220@640 corner: 240@660 310@640 330@640 corner: 352.0d@660 310@640 corner: 372.0d@660 334@653.5d 310@640 corner: 330@660 310@650 B7 a0ea4f1f-e764-430d-ba16-e2111258261e 0217e31f-5fee-4f9c-80c0-3bbadde3551b 330@650 280@650 300@650 280@640 corner: 300@660 220@630 240@630 220@670 240@670 corner: 280@730 220@670 corner: 300@730 249.0d@683.5d 220@690 corner: 240@710 220@720 240@720 212.0d@723.5d 220@710 corner: 240@730 310@710 330@710 corner: 352.0d@730 310@710 corner: 372.0d@730 334@723.5d 310@710 corner: 330@730 310@720 B8 8db7a685-9d3b-43d0-b96c-eec956f22717 15fee1bb-1083-4461-9f8c-06c50e086a05 330@720 280@720 300@720 280@710 corner: 300@730 220@700 240@700 220@740 240@740 corner: 280@800 220@740 corner: 300@800 249.0d@753.5d 220@760 corner: 240@780 9 220@790 240@790 212.0d@793.5d 220@780 corner: 240@800 310@780 330@780 corner: 352.0d@800 310@780 corner: 372.0d@800 334@793.5d 310@780 corner: 330@800 310@790 B9 48ab4f97-e463-415d-928c-4dd730b8d337 8868254f-e5be-4f6c-a952-49a8c6665fea 330@790 280@790 300@790 280@780 corner: 300@800 220@770 240@770 220@810 240@810 corner: 280@870 220@810 corner: 300@870 249.0d@823.5d 220@830 corner: 240@850 220@860 240@860 207.0d@863.5d 220@850 corner: 240@870 310@850 330@850 corner: 358.0d@870 310@850 corner: 378.0d@870 334@863.5d 310@850 corner: 330@870 310@860 B10 e0baf4c4-1307-4fd3-8353-f611e65f6311 2893f4b1-ec5c-43d5-b1b6-6c2fa9f29cf0 330@860 280@860 300@860 280@850 corner: 300@870 220@840 240@840 220@880 240@880 corner: 280@940 220@880 corner: 300@940 249.0d@893.5d 220@900 corner: 240@920 220@930 240@930 208.0d@933.5d 220@920 corner: 240@940 310@920 330@920 corner: 357.0d@940 310@920 corner: 377.0d@940 334@933.5d 310@920 corner: 330@940 310@930 19.0d B11 074253e6-5a1a-480a-8c2b-d4714977492a 307c09b4-c950-4435-920a-aea888193ec0 330@930 280@930 300@930 280@920 corner: 300@940 220@910 240@910 220@950 240@950 corner: 280@1010 220@950 corner: 300@1010 249.0d@963.5d 220@970 corner: 240@990 12 220@1000 240@1000 207.0d@1003.5d 220@990 corner: 240@1010 310@990 330@990 corner: 358.0d@1010 310@990 corner: 378.0d@1010 334@1003.5d 310@990 corner: 330@1010 310@1000 B12 a518fe34-b5d2-48e3-9cf9-b920f599466c 13677480-8590-4c54-9014-4ebf28d96fbe 330@1000 280@1000 300@1000 280@990 corner: 300@1010 220@980 240@980 220@1020 240@1020 corner: 280@1080 220@1020 corner: 300@1080 249.0d@1033.5d 220@1040 corner: 240@1060 13 220@1070 240@1070 207.0d@1073.5d 220@1060 corner: 240@1080 310@1060 330@1060 corner: 358.0d@1080 310@1060 corner: 378.0d@1080 334@1073.5d 310@1060 corner: 330@1080 310@1070 B13 2751150d-9cfd-4feb-819d-08779a694b44 26cf7a26-2dc1-4049-975b-3cd88380195e 330@1070 280@1070 300@1070 280@1060 corner: 300@1080 220@1050 240@1050 220@1090 240@1090 corner: 280@1150 220@1090 corner: 300@1150 249.0d@1103.5d 220@1110 corner: 240@1130 14 220@1140 240@1140 206.0d@1143.5d 220@1130 corner: 240@1150 310@1130 330@1130 corner: 359.0d@1150 310@1130 corner: 379.0d@1150 334@1143.5d 310@1130 corner: 330@1150 310@1140 21.0d B14 8f95edc8-63e8-42c1-aba0-32da1a637faf ade06048-17a8-4477-abb0-c306f67770f1 330@1140 280@1140 300@1140 280@1130 corner: 300@1150 220@1120 240@1120 220@1160 240@1160 corner: 280@1220 220@1160 corner: 300@1220 249.0d@1173.5d 220@1180 corner: 240@1200 15 220@1210 240@1210 207.0d@1213.5d 220@1200 corner: 240@1220 310@1200 330@1200 corner: 358.0d@1220 310@1200 corner: 378.0d@1220 334@1213.5d 310@1200 corner: 330@1220 310@1210 B15 8b13699e-2b39-4845-91e0-91d46b0efdef f2b624a4-b100-48c0-84ff-571c81a9e19f 330@1210 280@1210 300@1210 280@1200 corner: 300@1220 220@1190 240@1190 220@140 240@140 220@130 corner: 240@150 0 220@160 240@160 212.0d@163.5d 220@150 corner: 240@170 310@150 330@150 corner: 352.0d@170 310@150 corner: 372.0d@170 334@163.5d 310@150 corner: 330@170 310@160 B0 451d1344-a15b-4f97-b45c-bde7a06a1317 39d60ccd-c178-43fb-a665-4e1a1dc3b28d 330@160 280@160 300@160 280@150 corner: 300@170 220@160 Reg_Bit 1220 d559d1ae-9fef-4db5-82ae-dc9f1b0fc6e3 Reg_Bit 160@190 corner: 180@210 262.0d@190 corner: 282.0d@210 340@210 360@210 corner: 479.0d@230 340@210 corner: 499.0d@230 370@224.5d 340@210 corner: 360@230 340@220 99.0d key_принудительно 510@290 530@290 corner: 570@350 510@290 corner: 590@350 541.5d@303.5d 350@120 370@120 corner: 473.0d@280 350@120 corner: 493.0d@280 393.0d@134.0d 190@120 210@120 corner: 270@160 190@120 corner: 290@160 213.5d@133.5d 270@140 corner: 290@160 290@150 tim V 10.0d 270@150 290@150 corner: 290@150 En 350@150 370@150 Time Inside Time On HH_on 19e35617-c275-4abd-b265-9cb7e13e132d ece0ad04-3378-46f5-846d-5828edfbec80 MM_on 6a9d772b-430b-46c6-b8ab-acd4ce385d82 44c7bc33-18af-4324-82ef-f9acfdc1f531 HH_off b0184802-8d8e-4a21-8d1b-1c48be261073 a46a967b-79ba-410e-96de-0801144d788a MM_off 17a65f61-7aa9-418e-90a1-6d2915f8bbee 34a35dec-5183-4262-9af2-fb7f935f7f79 HH_value 67489d9e-9707-4b3e-b34b-85164f5eb820 2492a952-7fe9-49b8-8a03-d478d20d2055 MM_value 4d685ecc-d91a-4a66-b26f-ef2ec1409fd5 e8184226-7826-48de-b520-314ac749a1a4 En 57984030-8bd4-428e-9f9b-18ba15246059 bb3e78a3-6523-4b70-ba69-148125468c34 6ad4e35f-8514-47a0-88cd-d0558e31d4b5 Попадание в диапазон времени Час начала временного интервала Минута начала временного интервала Час окончания временного интервала Минута окончания временного интервала Час текущего времени Минута текущего времени cb4cebf0-309e-4d6f-9d76-96248720c192 7dd3fb96-58d3-4502-b2ab-3be35f50b59c T_inside 713f6cf8-5c2d-4a3f-839f-f2a8e33fcb4b Попадание в диапазон времени En Блок для детектирования попадания текущего времени в указанный временной интервал HH_value - текущее значение часа MM_value - текущее значение минут HH_on - час начала временного интервала MM_on - минуты начала временного интервала HH_off - час окончания временного интервала MM_off - минуты окончания временного интервала T_inside = true если внутри временного интервала, иначе false AlexCrane, 2018 405 //-------------------- AlexCrane, 2018 ------------------------- T_inside=false; if En { minutes_on = HH_on*60+MM_on; minutes_off = HH_off*60+MM_off; minutes_val = HH_value*60+MM_value; if ((minutes_val>=minutes_on) && (minutes_val<minutes_off)) {T_inside=true;} if ( (minutes_on>minutes_off) && ( (minutes_val>=minutes_on) || ((minutes_val>=0) && (minutes_val<minutes_off)) ) ) {T_inside=true;} } //-------------------------------------------------------------------------- 477 minutes_on ; int minutes_off ; int minutes_val ; int 350@140 corner: 370@160 350@170 370@170 342.0d@173.5d 350@160 corner: 370@180 350@190 370@190 342.0d@193.5d 350@180 corner: 370@200 23 350@210 370@210 336.0d@213.5d 350@200 corner: 370@220 350@230 370@230 342.0d@233.5d 350@220 corner: 370@240 240@10 260@10 corner: 356.0d@30 240@10 corner: 376.0d@30 264@24.5d 240@10 corner: 260@30 356.0d@20 376.0d@20 356.0d@10 corner: 376.0d@30 88.0d 240@20 260@20 480@30 500@30 corner: 573.0d@50 480@30 corner: 593.0d@50 510@44.0d 330@10 350@10 corner: 430@150 330@10 corner: 450@150 nov Graphics.ColorValue purple r19g3b27 час 25744160 мин 220909670 сек 214750161 Graphics.ColorValue black r0g0b0 реле вкл 93046722 таймер вкл 5767540 Graphics.ColorValue blue r0g0b31 Foto 70652032 101985560 n 72341631 480@50 500@50 corner: 591.0d@70 480@50 corner: 611.0d@70 510@64.5d 480@50 corner: 500@70 480@60 71.0d Минута выход 240@40 260@40 corner: 351.0d@60 240@40 corner: 371.0d@60 264@54.5d 240@40 corner: 260@60 351.0d@50 371.0d@50 351.0d@40 corner: 371.0d@60 83.0d 240@50 260@50 350@270 370@270 500@60 480@70 500@70 corner: 572.0d@90 480@70 corner: 592.0d@90 510@84.0d 480@70 corner: 500@90 480@80 8.0d 52.0d Сек выход 240@70 260@70 corner: 348.0d@90 240@70 corner: 368.0d@90 264@84.5d 240@70 corner: 260@90 348.0d@80 368.0d@80 348.0d@70 corner: 368.0d@90 80.0d 240@80 260@80 500@80 640@70 660@70 corner: 727.0d@410 640@70 corner: 747.0d@410 665.0d@84.5d 640@90 corner: 660@110 B1 640@120 660@120 BitReg_8 B0 d82c0e23-4b12-4a98-9277-5b647de200c2 c72fed24-afd8-48b6-ad12-ad40066aa01e 72cd34c9-b2ac-4799-9a82-08a70d91c5c5 3cd45614-1d75-42cf-b33e-4580ad785088 B2 54f93ea9-a146-4ef5-8481-7c3cc6c3539d 529d99a6-b333-46f8-bddf-0fb6bfaec3a7 B3 f8c5c3a2-d45b-4435-92df-746dcf13f776 b1290541-8338-4e4a-b1eb-829cd6f902d9 B4 b139da50-22ad-40eb-884d-3b104b4256ac dbee93d4-1261-4ac7-bbf3-47a549a383ec B5 76d9e1ec-0883-421c-9f4a-3796db32846d 3454ef34-b3a2-4f58-ad5a-22ce5b918acd B6 272627ae-0ab7-48db-8e55-99c800151220 f979c2e9-c850-4b5f-abd5-d8bed549557a B7 664a8415-bde3-4332-8f4e-71efb7c30997 5376a12e-1f49-4ffd-a013-6c2897760c68 Reg 92bf78b7-494e-453f-b773-8070337387ec e786071b-b45b-4ccd-b091-e4dab9bd0262 58e35bc8-c491-48d3-8e18-99289f16be52 BitReg_8 register=0; bitWrite(register, 0, B0); bitWrite(register, 1, B1); bitWrite(register, 2, B3); bitWrite(register, 3, B3); bitWrite(register, 4, B4); bitWrite(register, 5, B5); bitWrite(register, 6, B6); bitWrite(register, 7, B7); Reg = register ; 246 register ; byte 640@110 corner: 660@130 640@140 660@140 640@130 corner: 660@150 640@160 660@160 640@150 corner: 660@170 640@180 660@180 640@170 corner: 660@190 640@200 660@200 640@190 corner: 660@210 640@220 660@220 640@210 corner: 660@230 640@240 660@240 640@230 corner: 660@250 B8 640@260 660@260 BitReg_16 63f2f09e-3b33-4ee6-ab64-8618e1a933e3 6bd6e9da-be91-4f56-a17c-ed578f68259a B9 f1c9a776-5782-470a-b263-0abaceff05d5 064b7b30-6850-4860-a053-bc3efbd9fddb B10 d9b71246-4f7e-46d2-bf3d-3bcb0f6155c3 7e6a0445-89a7-48fb-a628-10a8345e2c7f B11 ae020ea7-9c4c-4ac5-87d9-118fc4766977 38ceb7aa-0ee4-4ea6-9634-7f0fd26d7181 B12 4f7efb53-2d1b-4749-8189-5e8b3d498027 91242469-c3df-4869-a98f-bd5ffc5b7406 B14 210a22c4-d975-4c55-ac0a-5c568b298f9d a76f0247-8074-4c05-9dc2-e77352f8839c B15 fd9306f5-8963-4197-94d2-55c57cf96938 e1bba516-7bdd-43c5-bf81-097f140bd1ca 96fba1e6-f569-4c43-880a-f90b2924e286 BitReg_16 register=0; bitWrite(register, 0, B0); bitWrite(register, 1, B1); bitWrite(register, 2, B2); bitWrite(register, 3, B3); bitWrite(register, 4, B4); bitWrite(register, 5, B5); bitWrite(register, 6, B6); bitWrite(register, 7, B7); bitWrite(register, 8, B8); bitWrite(register, 9, B9); bitWrite(register, 10, B10); bitWrite(register, 11, B11); bitWrite(register, 12, B12); bitWrite(register, 13, B13); bitWrite(register, 14, B14); bitWrite(register, 15, B15); Reg = register ; 473 register ; int 225dadcf-36ea-4ffb-95c4-937d068ca509 640@250 corner: 660@270 640@280 660@280 10ad6c5e-d402-486c-87e4-7d140e835672 640@270 corner: 660@290 640@300 660@300 50f2e7aa-1616-494c-b46a-8c3d2188f3d0 640@290 corner: 660@310 640@320 660@320 7cfe0b50-4bb1-4a3c-9f78-63ef11a2496e 640@310 corner: 660@330 640@340 660@340 d0e1649d-212a-4f11-afd6-20786f3d6fe2 640@330 corner: 660@350 B13 640@360 660@360 847c0b3e-199f-456c-aace-63d09668e443 e3ea32bc-c41b-426a-a569-779ddc5233b1 3f8ef0dd-0f7f-4eb9-b3f6-1010a7de3db6 119c1444-d08f-46bb-a5ff-908b3c7a1a55 6efbb510-27f9-4110-bf68-b05ebdd9ac0e 640@350 corner: 660@370 640@380 660@380 640@370 corner: 660@390 640@400 660@400 640@390 corner: 660@410 780@390 800@390 corner: 873.0d@410 780@390 corner: 893.0d@410 810@403.5d 780@390 corner: 800@410 780@400 53.0d индикация 240@100 260@100 corner: 378.0d@120 240@100 corner: 398.0d@120 264@114.5d 240@100 corner: 260@120 378.0d@110 398.0d@110 378.0d@100 corner: 398.0d@120 110.0d 240@110 260@110 800@400 747.0d@400 corner: 747.0d@400 727.0d@400 747.0d@400 727.0d@390 corner: 747.0d@410 640@100 Bit_Reg_16 d0539b95-6b3f-4cbc-abf5-cf0df22ea5f9 Bit_Reg_16 67.0d 660@100 470@130 490@130 corner: 582.0d@150 470@130 corner: 602.0d@150 500@144.5d 470@130 corner: 490@150 470@140 72.0d фоторезистор 240@130 260@130 corner: 358.0d@150 240@130 corner: 378.0d@150 264@144.5d 240@130 corner: 260@150 358.0d@140 378.0d@140 358.0d@130 corner: 378.0d@150 90.0d 240@140 260@140 490@140 480@40 500@40 480@30 corner: 500@50 Час выход 350@250 370@250 350@240 corner: 370@260 350@260 corner: 370@280 473.0d@260 corner: 493.0d@280 493.0d@270 d69bd399-c590-4ee3-bb37-26c05ac26c92 Блок для детектирования попадания текущего времени в указанный временной интервал En - Включить или выключить работу блока HH_value - текущее значение часа MM_value - текущее значение минут HH_on - час начала временного интервала MM_on - минуты начала временного интервала HH_off - час окончания временного интервала MM_off - минуты окончания временного интервала T_inside = true если внутри временного интервала, иначе false AlexCrane, 2018 447 //-------------------- AlexCrane, 2018 ------------------------- T_inside=false; if (En) { minutes_on = HH_on*60+MM_on; minutes_off = HH_off*60+MM_off; minutes_val = HH_value*60+MM_value; if ((minutes_val>=minutes_on) && (minutes_val<minutes_off)) {T_inside=true;} if ( (minutes_on>minutes_off) && ( (minutes_val>=minutes_on) || ((minutes_val>=0) && (minutes_val<minutes_off)) ) ) {T_inside=true;} } //-------------------------------------------------------------------------- 479 103.0d 42.0d 473.0d@270 800@220 820@220 corner: 900@280 800@220 corner: 920@280 570@340 590@340 590@210 610@210 corner: 632.0d@230 590@210 corner: 652.0d@230 614@223.5d 590@210 corner: 610@230 590@220 33 3eafc0cd-2f81-47ee-9a79-082f61204b23 33 D33 digital 1000 610@220 510@320 530@320 510@310 corner: 530@330 510@330 corner: 530@350 570@330 corner: 590@350 510@340 530@340 360@220 282.0d@220 corner: 282.0d@220 262.0d@220 282.0d@220 262.0d@210 corner: 282.0d@230 340@230 360@230 corner: 438.0d@250 340@230 corner: 458.0d@250 370@245.0d 340@230 corner: 360@250 340@240 58.0d Таймер вкл 400@30 420@30 corner: 460@70 400@30 corner: 480@70 432.5d@43.5d 400@50 corner: 420@70 500@20 520@20 corner: 600@60 500@20 corner: 620@60 533.0d@34.5d 500@40 corner: 520@60 610@20 630@20 corner: 690@80 610@20 corner: 710@80 633.5d@33.5d 610@40 corner: 630@60 V 610@70 630@70 610@60 corner: 630@80 610@50 EN 630@50 610@50 corner: 610@50 Q 600@50 620@50 600@40 corner: 620@60 500@50 Input 520@50 480@50 corner: 480@70 460@60 480@60 460@50 corner: 480@70 400@60 T 420@60 360@240 282.0d@240 corner: 282.0d@240 262.0d@240 282.0d@240 262.0d@230 corner: 282.0d@250 262.0d@260 282.0d@260 262.0d@250 corner: 282.0d@270 262.0d@280 282.0d@280 262.0d@270 corner: 282.0d@290 262.0d@300 282.0d@300 262.0d@290 corner: 282.0d@310 262.0d@320 282.0d@320 262.0d@310 corner: 282.0d@330 262.0d@340 282.0d@340 262.0d@330 corner: 282.0d@350 262.0d@360 282.0d@360 262.0d@350 corner: 282.0d@370 262.0d@380 282.0d@380 262.0d@370 corner: 282.0d@390 262.0d@400 282.0d@400 262.0d@390 corner: 282.0d@410 262.0d@420 282.0d@420 262.0d@410 corner: 282.0d@430 262.0d@440 282.0d@440 262.0d@430 corner: 282.0d@450 262.0d@460 282.0d@460 262.0d@450 corner: 282.0d@470 262.0d@480 282.0d@480 262.0d@470 corner: 282.0d@490 262.0d@500 282.0d@500 262.0d@490 corner: 282.0d@510 282.0d@200 220@110 120@130 220@180 310@220 220@250 310@290 220@320 310@360 220@390 310@430 220@460 310@500 220@530 310@570 220@600 310@640 220@670 310@710 220@740 310@780 220@810 310@850 220@880 310@920 220@950 310@990 220@1020 310@1060 220@1090 310@1130 220@1160 16 310@1200 310@150 Reg_Bit_16 9a613feb-f1c3-4e7b-8f89-c20450e2121e Reg_Bit_16 82.0d 262.0d@200 282.0d@200 corner: 282.0d@200 340@200 360@200 340@190 corner: 360@210 54.0d Сохранить 300@90 320@90 300@80 corner: 320@100 360@80 corner: 380@100 380@90 360@90 380@90 corner: 380@90 EN 400@90 420@90 400@80 corner: 420@100 Hour 400@110 420@110 400@100 corner: 420@120 400@120 corner: 420@140 400@130 D D 24 scl 22 D22 21 sda D21 DS3231 Min 420@130 170@60 190@60 corner: 246.0d@80 170@60 corner: 266.0d@80 200@73.5d 20@60 40@60 corner: 131.0d@80 20@60 corner: 151.0d@80 44@74.5d 20@70 40@70 20@60 corner: 40@80 131.0d@60 corner: 151.0d@80 151.0d@70 131.0d@70 151.0d@70 corner: 151.0d@70 170@70 190@70 170@60 corner: 190@80 36.0d минута Value 70@120 90@120 70@110 corner: 90@130 170@110 corner: 190@130 190@120 Q 170@120 200@70 corner: 200@120 230@70 250@70 230@60 corner: 250@80 290@60 corner: 310@80 230@50 250@50 190@50 corner: 190@70 170@70 190@70 170@60 corner: 190@80 70@70 90@70 190@40 155.0d@40 corner: 155.0d@40 135.0d@40 155.0d@40 135.0d@30 corner: 155.0d@50 87.0d 591.0d 140@70 160@70 corner: 282.0d@90 140@70 corner: 302.0d@90 164@85.0d 0@10 20@10 corner: 101.0d@150 0@10 corner: 121.0d@150 25.0d@24.5d control 33.0d 101.0d@40 121.0d@40 RT.Диспетчер uart c6dc98fc-9703-43cc-8c4a-2487a1d84a78 df33d449-e44d-4240-ad80-08ba9b33fda3 c7300995-ce24-481b-9c8c-5536c400fd4e 168bedd0-e985-41ce-aa37-b180bcdbcf4f quick 9422d83d-8171-44e2-bff3-b55c42d94719 8a884944-e63a-40bc-a567-3777f259315c fast dd571a9c-c671-4753-83c1-a872487de4fe 627d2840-166b-4fd4-b2fa-d0cc67864d16 slow 0fe2fcd6-bff9-4527-8594-c7dada842a34 fd05407b-d461-4768-9f4f-e54d0e0f9787 back 089ca824-182a-47a9-b732-2fb613fea029 27b2c581-9a95-41b7-b5b1-f4fe49ca3104 frdm cd8f08f8-92ef-4c5c-b182-93380642f799 4fd2d748-be54-4c9b-ad44-61c59fa06a68 71e4be07-8ef9-4c4c-9e19-f3ee7c695727 RT.Диспетчер head 68fd8407-4102-4a11-b295-2ccc29d06708 ffbbae92-335a-4455-bde2-cae2cbd10788 813be28b-8d1c-443f-8c39-892d8f48824a 101.0d@30 corner: 121.0d@50 140@50 160@50 corner: 304.0d@70 140@50 corner: 324.0d@70 164@65.0d 140@50 corner: 160@70 140@60 136.0d Номер оперативной задачи c4e0251e-b2d9-402f-9eb0-78f6e76946a7 160@60 121.0d@60 corner: 121.0d@60 26.0d 101.0d@60 121.0d@60 101.0d@50 corner: 121.0d@70 101.0d@70 corner: 121.0d@90 140@90 160@90 corner: 295.0d@110 140@90 corner: 315.0d@110 164@105.0d 140@90 corner: 160@110 140@100 127.0d Номер медленной задачи 7b45fe5e-0fca-4555-b283-74f280d2fe8b 160@100 121.0d@100 corner: 121.0d@100 101.0d@100 121.0d@100 101.0d@90 corner: 121.0d@110 140@110 160@110 corner: 284.0d@130 140@110 corner: 304.0d@130 164@125.0d 140@110 corner: 160@130 140@120 116.0d Номер фоновой задачи ba39c42f-eb76-4ea2-bf7a-4fa83faca09d 160@120 121.0d@120 corner: 121.0d@120 101.0d@120 121.0d@120 101.0d@110 corner: 121.0d@130 140@130 160@130 corner: 293.0d@150 140@130 corner: 313.0d@150 164@145.0d 140@130 corner: 160@150 140@140 125.0d Номер свободной задачи 1dd7993b-b62d-4f64-9f58-d803f38445c1 160@140 121.0d@140 corner: 121.0d@140 101.0d@140 121.0d@140 101.0d@130 corner: 121.0d@150 121.0d@80 RT.Диспетчер 7b1ffb11-7fd4-4f52-a5a3-ec1513229dcd 1.RT.Диспетчер: Планирование вызова задач Блок диспетчера задач. 1. Запускает планировщик событий и задач (диспетчер). 1.1.Блок имеет выходы номеров задач, номера задач сменяются с заданной периодичностью: quick – номера оперативных задач (по умолчанию 5 задач, период смены задачи 10 мс); fast – номера быстрых задач (по умолчанию 4 задач, период смены задачи 25 мс); slow – номера медленных задач (по умолчанию 4 задачи, период смены задачи 250 мс); back – номера фоновых задач (по умолчанию 5 задач, период смены задачи 100 мс); frdm - номера свободных задач (без периода) (по умолчанию 25 задач) номера последовательно изменяются в циклах, когда номера предыдущих задач равны 0); 1.2.Кол-во задач могут быть изменены внешним блоком, который должен запускаться 1 раз перед первым вызовом диспетчера: RT_HW_Base.shed.quick.qnt, RT_HW_Base.shed.fast.qnt, RT_HW_Base.shed.slow.qnt, RT_HW_Base.shed.back.qntж 1.3.Номера задач изменяются циклически. Например для quick ->1,2,3,4,5,1,2,3,4,5 и т.д.) 1.4.В каждом цикле только одна задача может быть отлична от нуля. 1.5.При одновременной готовности к вызову нескольких типов (quick, fast и т.д.) задач, они вызываетсяпо приоритету quick,fast,slow,back,frdm. 1.6.Номера задач quick,fast,slow,back устанавливаются на один цикл, затем они сбрасывается в 0 до установки по времени следующего номера задач. 2.Блок запускает инициализацию консоли, на которую могут выдаваться отладочные сообщения. 3.В каждом цикле на выходе control изменяется значение (0/1). Это выход предусмотрен для наблюдения логическим анализатором. 1554 //-----Управление задачами------------------------------------------------------------- RT_HW_Base.sheduler(); //--Вызов диспетчера задач; control=bitRead(RT_HW_Base.shed.blink,0); quick=RT_HW_Base.shed.quick.num; fast =RT_HW_Base.shed.fast.num; slow =RT_HW_Base.shed.slow.num; back=RT_HW_Base.shed.back.num; frdm= RT_HW_Base.shed.frdm.num; //-------------------------------------------------------------------------------------------------------- 460 #include "RT_HW_BASE.h" 101.0d@80 121.0d@80 corner: 121.0d@80 140@80 160@80 140@70 corner: 160@90 114.0d Номер быстрой задачи 62012ac0-17a6-409e-ae99-baec1b86347d 340@70 340@70 corner: 620.0d@146.0d left Оперативная задача: период= 10ms; кол-во задач=5; Быстрая задача: период= 50ms; кол-во задач=4; Медленная задача: период=250ms; кол-во задач=4; Фоновая задача: период=100ms; кол-во задач=5; Свободная задача: период=loop(); кол-во задач=25; Оперативная задача: период= 10ms; кол-во задач=5; 269.0d 3@12.0d Быстрая задача: период= 50ms; кол-во задач=4; 267.0d 3@26.0d Медленная задача: период=250ms; кол-во задач=4; 3@40.0d Фоновая задача: период=100ms; кол-во задач=5; 3@54.0d Свободная задача: период=loop(); кол-во задач=25; 274.0d 3@68.0d 220@0 240@0 corner: 294.0d@40 220@0 corner: 314.0d@40 245.0d@14.5d pin 220@30 240@30 207.0d@33.5d Контроль 38117ba7-3a56-472f-b8b7-0ea00bdc760e 9fed22e6-037f-4916-9056-ce378f3ba23d 6e6758b3-ccf6-4215-b30f-713b80b6d5e4 03.Контроль:Вывод на пин контрольного сигнала RT_HW_Base.directPinSetID(id,pin); if(bitRead(idCnt.mode,RT_HW_PIN_KIND_DIR)) { if(bitRead(!id.cnt.mode,14) {bitset(id.cnt.mode,14); RT_HW_PIN_DIR_MODE_OUTPUT(id);} //--Настройка пина на вывод; RT_HW_PIN_DIR_WRITE(id, bitRead(RT_HW_Base.shed.blink,0)); //--Вывод на пин контрольного сигнала; } 302 #include "RT_HW_BASE.h" RT_HW_PIN_DIR_ID idControl; 51 220@20 corner: 240@40 La.loop() 7a7ceee5-22ee-4f37-bf2d-00c2637ff8cb 2.La.loop(): Быстрый вывод на пин повторения цикла loop() (для La); Быстрый вывод на пин повторения цикла loop() (для логического анализатора La) ---------------------------------------------------------------------------------------------------------------------------- Вывод на дискретный пин входного значения напрямую через регистры контроллера. Быстрее функции digitalWrite() (особенно для контроллеров AVR, а также DUE,ESP8266). 367 //--Быстрый вывод на пин повторения цикла loop() (для La); if(id.dir==0) {id.dir=7; if(id.mode==0) {RT_HW_Base.directPinSetID(id,pin); if(bitRead(id.mode,RT_HW_PIN_KIND_DIR)) {RT_HW_PIN_DIR_MODE_OUTPUT(id);} id.dir=1;}} if(id.dir==1) {RT_HW_PIN_DIR_WRITE(id, bitRead(RT_HW_Base.shed.blink,0));} 299 id.dir=0; #include "RT_HW_BASE.h" id ; RT_HW_PIN_DIR_ID 231.0d Часы == 510@60 530@60 corner: 610@140 510@60 corner: 630@140 551.5d@73.5d 650@60 670@60 corner: 750@140 650@60 corner: 770@140 Min 610@110 630@110 Sec 610@130 630@130 H 610@90 630@90 610@80 corner: 630@100 610@100 corner: 630@120 610@120 corner: 630@140 ModBus 248.0d таймер 448.0d 80@50 100@50 corner: 145.0d@110 80@50 corner: 165.0d@110 105.0d@63.5d EN 80@80 94@80 ds1820_new 32bd8af4-f64d-479e-9a35-f8d9a15feaca e8462a12-4eb1-4232-a20a-658c4a65e030 pin a730f3a4-eb0c-4255-8ac1-84f4061c8526 0a64618a-9537-45fd-afa6-749141a6eff5 t c7ee3e87-5efe-474f-b3dd-e2fa7bbb858c 732232cf-57ff-426b-bfeb-7db2a6c47fbd d4c9c2ba-6e41-4b5c-9676-1665a9fc889d 5.ds1820_new if(dir==0) {ds.begin(pin); dir=1;} if(dir==1) {if ( !ds.search(addr)) {ds.reset_search(); timeStart=millis(); dir=2; } else {if (OneWire::crc8(addr, 7) != addr[7]) {timeStart=millis(); dir=2; } else {dir=3;} }} if(dir==2) {if ((millis()-timeStart)>250) dir=1;} 283 #include <OneWire.h> ds ; OneWire dir =0; uint8_t i ; byte present = 0; byte type_s ; byte data [12]; byte addr [8]; byte timeStart ; uint32_t T 7d58ae04-72de-4653-b2b6-0e71ac0abdb2 ПЕРИОД_ОПРОСА_МС Период опроса a35a1f85-a7fc-4341-a0d4-e0a17bf5ba09 4c94a1b9-9695-4c77-adfe-b8e7ef39b1ae meter(); #include "OneWire.h" --Создание объекта для ds1820 ds ; OneWire --Тип датчика - новый/старый (0/1) mode ; uint8_t --Период опроса сенсора period ; int --Номер шага step =0; uint8_t --Буфер для данных data [10]; uint8_t --Результат raw ; int16_t --Буфер timeStart ; uint32_t timeDelay ; uint32_t crc ; uint8_t cntErr ; uint8_t if(step==0) {if((int8_t)pin<0) {return;} period=ПЕРИОД_ОПРОСА_МС; if(period<1000) {period=1000;} ds.begin(pin); T=0.1; step++;} if(step==1) {if(EN) {timeStart=millis(); ds.reset(); step++; return;} } if(step==2) {ds.write(0xCC); ds.write(0x44,1); timeDelay=millis(); step++; return;} //----Запуск преобразования с учетом сенсоров с "паразитным питанием" if(step==3) {if( (millis() - timeDelay)<800) {return;}; step++;} //----Пауза для преобразования сенсором; if(step==4) {ds.reset(); step++; return;} //----Сброс шины; if(step==5) {if( ds.write(0xCC); ds.write(0xBE,mode); step++; return;} //----Запрос на чтение параметров; if(step==6) {ds.read_bytes(data, 9); crc=OneWire::crc8(data, 8); step++; return;} //---- if(step==7) {if ((crc !=data[8]) || (data[4]==0)) {cntErr++; if(cntErr>5) {cntErr=5; T_float=NAN;} step++; return;} //----Выход, если несовпадение CRC; raw = (data[1] << 8) | data[0]; //---Вычисление измеренного значения; if (mode) {raw = raw << 3; if (data[7] == 0x10) { raw = (raw & 0xFFF0) + 12 - data[6]; }} else {uint8_t cfg = (data[4] & 0x60); if (cfg == 0x00) raw = raw & ~7; //--Урезаем, если 9 bit resolution, 93.75 ms else if (cfg == 0x20) raw = raw & ~3; //--Урезаем, если 10 bit res, 187.5 ms else if (cfg == 0x40) raw = raw & ~1; //--Урезаем, если 11 bit res, 375 ms } cntErr=0; T=(float)raw / 16.0; step++;} if(step==8) {if((millis()-timeStart) <1000) {return;}; step=1;return;} 1530 void meter 80@70 corner: 94@90 19 80@100 100@100 67.0d@103.5d 80@90 corner: 100@110 err 145.0d@80 165.0d@80 7c432315-3faa-49e6-ac23-cc0f1d609a77 dd414df8-bd28-4269-8f2e-5f8b7ad741d6 5d2b3c28-fcf4-4977-9ff8-b95d2ece01d4 ============Блок чтения с DS1820================================================ 1.Блок опрашивает значения температуры с сенсора ds1820. 2.Блоку не требуется указание адрес сенсора на шине - требуется только, чтобы на шине находился только один датчик. 3.Блок позволяет работать с датчиками с "паразитным" питанием - режим выбирается параметром "РЕЖИМ_ПИТАНИЯ". 4.Блок опрашивает сенсор с периодом= "ПЕРИОД ОПРОСА В МС". 5.Можно приостанавливать опрос через вход EN, при этом начатое измерение будет выполнено до конца. 6.При 5-ти кратной ошибке обмена, устанавливается флаг err, T=-0.1; 7.В отличии от стандартного блока FLProg, у которого при измерении возникает задержка >17мс, у данного блока несколько задержек разнесенных по времени -1мс,1.3мс, 4.7мс (для AV328). ------------------------------------------------------------ Блок использует только библиотеку "OneWire.h" - это немного адаптированная библиотека с именем RT_50_HW_OneWire-master_PaulStoffregen. ------------------------------------------------------------- ecoins@mail.ru 12.08.2020 1060 РЕЖИМ_ПИТАНИЯ 1834915e-98e4-4b63-93f7-d9564e5280ff d838e8e6-869d-4147-9910-425f122ec825 if(step==0) {if((int8_t)pin<0) {return;} period=ПЕРИОД_ОПРОСА_МС; if(period<1000) {period=1000;} ds.begin(pin); T=-0.1; step++;} if(step==1) {if(EN) {timeStart=millis(); ds.reset(); step++; return;} } if(step==2) {ds.write(0xCC); ds.write(0x44,1); timeDelay=millis(); step++; return;} //----Запуск преобразования с учетом сенсоров с "паразитным питанием" if(step==3) {if( (millis() - timeDelay)<800) {return;}; step++;} //----Пауза для преобразования сенсором; if(step==4) {ds.reset(); step++; return;} //----Сброс шины; if(step==5) {ds.write(0xCC); ds.write(0xBE,mode); step++; return;} //----Запрос на чтение параметров; if(step==6) {ds.read_bytes(data, 9); crc=OneWire::crc8(data, 8); step++; return;} //---- if(step==7) {if ((crc !=data[8]) || (data[4]==0)) {cntErr++; if(cntErr>5) {cntErr=5; err=0; T=-0.1;} step++; return;} //----Выход, если несовпадение CRC; raw = (data[1] << 8) | data[0]; //---Вычисление измеренного значения; if (mode) {raw = raw << 3; if (data[7] == 0x10) { raw = (raw & 0xFFF0) + 12 - data[6]; }} else {uint8_t cfg = (data[4] & 0x60); if (cfg == 0x00) raw = raw & ~7; //--Урезаем, если 9 bit resolution, 93.75 ms else if (cfg == 0x20) raw = raw & ~3; //--Урезаем, если 10 bit res, 187.5 ms else if (cfg == 0x40) raw = raw & ~1; //--Урезаем, если 11 bit res, 375 ms } cntErr=0; err=0; T=(float)raw / 16.0; step++;} if(step==8) {if((millis()-timeStart) <1000) {return;}; step=1;return;} 1536 145.0d@70 corner: 165.0d@90 230@90 250@90 corner: 380.0d@110 230@90 corner: 400.0d@110 254@104.5d 230@90 corner: 250@110 380.0d@100 400.0d@100 380.0d@90 corner: 400.0d@110 230@100 122.0d 250@100 165.0d@100 corner: 165.0d@100 145.0d@100 165.0d@100 145.0d@90 corner: 165.0d@110 ds1820 0c067488-5cae-464e-a0a0-dd6538a33157 5.ds1820 - Один сенсор на пине ============Блок чтения с DS1820================================================ 1.Блок опрашивает значения температуры с сенсора ds1820. 2.Блоку не требуется указание адрес сенсора на шине - требуется только, чтобы на шине находился только один датчик. 3.Блок позволяет работать с датчиками с "паразитным" питанием - режим выбирается параметром "РЕЖИМ_ПИТАНИЯ" (в отладке). 4.Блок опрашивает сенсор с периодом= "ПЕРИОД ОПРОСА В МС". 5.Можно приостанавливать опрос через вход EN, при этом начатое измерение будет выполнено до конца. 6.При 5-ти кратной ошибке обмена, устанавливается флаг err, температура T=-0.1; 7.В отличии от стандартного блока FLProg, у которого при измерении возникает задержка >17мс, у данного блока несколько задержек разнесенные во времени - 1мс,1.3мс, 4.7мс (для AV328). 8.Опрос параметра занимает 5-6 программных прерываний. Рекомендуется не превышать период программных перываний 200мс. Блок использует только библиотеку "OneWire.h" - это немного адаптированная библиотека с именем RT_50_HW_OneWire-master_PaulStoffregen. ------------------------------------------------------------------------------------------------------------- Примечание: Рекомендуется подключать блок как оперативную, быструю или свободную задачу. -------------------------------------------------------------------------------------- ecoins@mail.ru 12.08.2020 1366 if(step==0) {if((int8_t)pin<0) {return;} period=ПЕРИОД_ОПРОСА_МС; if(period<1000) {period=1000;} ds.begin(pin); T=-0.1; step++;} if(step==1) {if(EN) {timeStart=millis(); ds.reset(); step++; return;} } if(step==2) {ds.write(0xCC); ds.write(0x44,1); timeDelay=millis(); step++; return;} //----Запуск преобразования с учетом сенсоров с "паразитным питанием" if(step==3) {if( (millis() - timeDelay)<800) {return;}; step++;} //----Пауза для преобразования сенсором; if(step==4) {ds.reset(); step++; return;} //----Сброс шины; if(step==5) {ds.write(0xCC); ds.write(0xBE,mode); step++; return;} //----Запрос на чтение параметров; if(step==6) {ds.read_bytes(data, 9); crc=OneWire::crc8(data, 8); step++; return;} //---- if(step==7) {if ((crc !=data[8]) || (data[4]==0)) {cntErr++; if(cntErr>5) {cntErr=5; err=0; T=-0.1;} step++; return;} //----Выход, если несовпадение CRC; raw = (data[1] << 8) | data[0]; //---Вычисление измеренного значения; if (mode) {raw = raw << 3; if (data[7] == 0x10) { raw = (raw & 0xFFF0) + 12 - data[6]; }} else {uint8_t cfg = (data[4] & 0x60); if (cfg == 0x00) raw = raw & ~7; //--Урезаем, если 9 bit resolution, 93.75 ms else if (cfg == 0x20) raw = raw & ~3; //--Урезаем, если 10 bit res, 187.5 ms else if (cfg == 0x40) raw = raw & ~1; //--Урезаем, если 11 bit res, 375 ms } cntErr=0; err=0; T=(float)raw / 16.0; step++;} if(step==8) {if((millis()-timeStart) <1000) {return;}; step=1;return;} 1537 45.0d 140@50 160@50 corner: 182.0d@70 140@50 corner: 202.0d@70 164@63.5d 320@30 340@30 corner: 420@70 320@30 corner: 440@70 353.5d@44.0d 320@50 corner: 340@70 320@60 340@60 202.0d@60 corner: 202.0d@60 182.0d@60 202.0d@60 Ацп вход 14 cc5f64ce-df77-4760-b6ee-5ba83047a5af D14 analogInput 188.0d 9600 arduinoIDE 204 4096 125630616 36675646 57 ESP32 WROOM DEVKIT V1 215230342 default