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