I/O Mapping Matrix: различия между версиями
Kt315 (обсуждение | вклад) |
|||
(не показано 15 промежуточных версий 5 участников) | |||
Строка 1: | Строка 1: | ||
<languages/> | |||
<!--T:1--> | |||
== Назначение == <!--T:3--> | |||
{{DISPLAYTITLE:Mapping-матрица}} | |||
Релейные модули имеют несколько режимов работы реле от входов. И один из них — это взаимодействие согласно Mapping-матрице. | |||
Режимы настраиваются индивидуально на каждый вход регистрами № 9-16, см. [[Relay_Module_Modbus_Management | карту регистров модулей реле]]. | |||
== | Матрица действий над выходами по изменению состояний входов позволяет гибко настраивать реакцию устройства в зависимости от изменения его входов. | ||
{ | Эта функциональность появилась с версии '''1.9.0''' для устройств серии '''WB-MR''' и [[WB-MWAC]]. | ||
== Устройство и принцип работы == <!--T:4--> | |||
=== Классическая матрица === | |||
{| class="wikitable" style="float:right; margin-left: 10px;" | |||
! Регистры !! !! colspan="8"| Выходы '''MR3-6''' | |||
|- | |||
! | |||
| || '''1''' || '''2''' || '''3''' || '''4''' || '''5''' || '''6''' || '''7''' || '''8''' | |||
|- | |||
!rowspan="8" |Входы | |||
| '''1''' || 384 || 385 || 386 || 387 || 388 || 389 || 390 || 391 | |||
|- | |||
| '''2''' || 392 || 393 || 394 || 395 || 396 || 397 || 398 || 399 | |||
|- | |||
| '''3''' || 400 || 401 || 402 || 403 || 404 || 405 || 406 || 407 | |||
|- | |||
| '''4''' || 408 || 409 || 410 || 411 || 412 || 413 || 414 || 415 | |||
|- | |||
| '''5''' || 416 || 417 || 418 || 419 || 420 || 421 || 422 || 423 | |||
|- | |||
| '''6''' || 424 || 425 || 426 || 427 || 428 || 429 || 430 || 431 | |||
|- | |||
| '''7''' || 432 || 433 || 434 || 435 || 436 || 437 || 438 || 439 | |||
|- | |||
| '''0''' || 440 || 441 || 442 || 443 || 444 || 445 || 446 || 447 | |||
|} | |||
Mapping-матрица находится в регистрах начиная с адреса 384, и содержит 64 регистра из расчета 8 входов / 8 выходов. | |||
В каждом регистре записан код действия входа на выход. | |||
Если в устройстве количество входов и/или выходов меньше 8, то адреса регистров '''не''' меняются — просто строки/столбцы для отсутствующих регистров не учитываются. Исключение — устройства с 2 входами и выходами. | |||
{| class="wikitable" style="float:right; margin-left: 10px;" | |||
! Регистры !! !! colspan="8"| Выходы '''MR2''' | |||
|- | |||
! | |||
| || '''1''' || '''2''' | |||
|- | |||
!rowspan="8" |Входы | |||
| '''1''' || 384 || 385 | |||
|- | |||
| '''2''' || 386 || 387 | |||
|- | |||
|} | |||
< | <!--T:5--> | ||
В ячейке на пересечении строки входа и столбца выхода — регистр действия входа на выход. | |||
В него записывается 16-битное слово '''0b0000 0000 0000 yyxx''', где биты '''yy''' описывают действия при замыкании входа (переход из 0 в 1, передний фронт), а биты '''xx''' — при размыкании (из 1 в 0, задний фронт). | |||
< | Действия, в зависимости от битов: | ||
<!--T:7--> | |||
*00 — ничего не делать | |||
*01 — выключить | |||
*10 — включить | |||
*11 — инвертировать значение | |||
<!--T:8--> | |||
Таким образом, можно запрограммировать реакцию каждого выхода на замыкание и размыкание любых входов. | |||
[[Examples of interaction | Примеры программирования взаимодействия входов и выходов]] | |||
{| class="wikitable" | |||
! !! !! ! colspan="4" |Задний фронт | |||
|- | |||
! | |||
| || 00 || 01 || 10 || 11 | |||
|- | |||
! rowspan="4"|Передний<br>фронт | |||
| 00 | |||
| 0000 (0) — Вход отключен, не управляет выходами | |||
| 0001 (1) — Выключить при размыкании | |||
| 0010 (2) — Включить при размыкании | |||
| 0011 (3) — Изменить состояние выхода при размыкании | |||
|- | |||
| 01 | |||
| 0100 (4) — Выключить при замыкании | |||
| 0101 (5) — Всегда выключать | |||
| 0110 (6) — Работать как инвертированный выключатель с фиксацией | |||
| 0111 (7) — Выключить при размыкании, потом изменять состояние при переключении | |||
|- | |||
| 10 || 1000 (8) — Включить при замыкании || 1001 (9) — Работать как выключатель с фиксацией (повторять вход) || 1010 (10, 0x0A)— Всегда включать || 1011 (11, 0x0B) — Включить, потом изменять состояние при размыкании | |||
|- | |||
| 11 || 1100 (12, 0x0C) — Изменить состояние выхода при замыкании (выключатель без фиксации) || 1101 (13, 0x0D) — Изменить состояние, потом выключить при размыкании || 1110 (14, 0x0E) — Изменить состояние, потом включить при размыкании || 1111 (15, 0x0F)— Изменить состояние при замыкании и вернуться к исходному состоянию при размыкании | |||
|} | |||
<!--T:9--> | |||
{| class="wikitable" | |||
! !! !! ! colspan="4" |Биты xx — размыкание входа | |||
|- | |||
! | |||
| || style="text-align:center;"| '''00''' || style="text-align:center;"| '''01''' || style="text-align:center;"| '''10''' || style="text-align:center;"| '''11''' | |||
|- style="vertical-align:center;" | |||
! rowspan="4"|Биты '''yy''', замыкание входа | |||
| '''00''' | |||
| style="text-align:center;vertical-align:bottom;" | [[File:Mm_0000.png|frameless|270px]]<br>(0) — Вход отключен, не управляет выходами | |||
| style="text-align:center;vertical-align:bottom;" | [[File:Mm_0001.png|frameless|270px]]<br>(1) — Выключить при размыкании | |||
| style="text-align:center;vertical-align:bottom;" | [[File:Mm_0010.png|frameless|270px]]<br>(2) — Включить при размыкании | |||
| style="text-align:center;vertical-align:bottom;" | [[File:Mm_0011.png|frameless|270px]]<br>(3) — Изменить состояние выхода при размыкании | |||
|- style="vertical-align:center;" | |||
| '''01''' | |||
| style="text-align:center;vertical-align:bottom;" | [[File:Mm_0100.png|frameless|270px]]<br>(4) — Выключить при замыкании | |||
| style="text-align:center;vertical-align:bottom;" | [[File:Mm_0101.png|frameless|270px]]<br>(5) — '''Всегда выключать''' | |||
| style="text-align:center;vertical-align:bottom;" | [[File:Mm_0110.png|frameless|270px]]<br>(6) — Работать как инвертированный <br>выключатель с фиксацией | |||
| style="text-align:center;vertical-align:bottom;" | [[File:Mm_0111.png|frameless|270px]]<br>(7) — Выключить при размыкании, потом <br>изменять состояние при переключении | |||
|- style="vertical-align:center;" | |||
| '''10''' | |||
| style="text-align:center;vertical-align:bottom;" | [[File:Mm_1000.png|frameless|270px]]<br>(8) — Включить при замыкании | |||
| style="text-align:center;vertical-align:bottom;" | [[File:Mm_1001.png|frameless|270px]]<br>(9) — Работать как '''выключатель с фиксацией''' <br>(повторять вход) | |||
| style="text-align:center;vertical-align:bottom;" | [[File:Mm_1010.png|frameless|270px]]<br>(10, 0x0A)— Всегда включать | |||
| style="text-align:center;vertical-align:bottom;" | [[File:Mm_1011.png|frameless|270px]]<br>(11, 0x0B) — Включить, потом изменять <br>состояние при размыкании | |||
|- style="vertical-align:center;" | |||
| '''11''' | |||
| style="text-align:center;vertical-align:bottom;" | [[File:Mm_1100.png|frameless|270px]]<br>(12, 0x0C) — Изменить состояние выхода <br>при замыкании<br>('''выключатель без фиксации''') | |||
| style="text-align:center;vertical-align:bottom;" | [[File:Mm_1101.png|frameless|270px]]<br>(13, 0x0D) — Изменить состояние, потом <br>выключить при размыкании | |||
| style="text-align:center;vertical-align:bottom;" | [[File:Mm_1110.png|frameless|270px]]<br>(14, 0x0E) — Изменить состояние, потом <br>включить при размыкании | |||
| style="text-align:center;vertical-align:bottom;" | [[File:Mm_1111.png|frameless|270px]]<br>(15, 0x0F) — Изменить состояние при замыкании<br>и вернуться к исходному состоянию<br>при размыкании | |||
|} | |||
=== Матрицы для кнопок с распознаванием нажатий === | |||
Начиная с версии прошивки 1.17.0 появились дополнительные матрицы с возможностью настроить входы как кнопки для детектирования различных четырёх типов нажатий: | |||
* короткое, | |||
* длинное, | |||
* двойное | |||
* и сначала короткое, затем длинное. | |||
Настраиваемые действия аналогичны Mapping-матрице, также как и принцип выбора регистра на пересечении. Биты '''yy''' не используются. | |||
Карты регистров для настройки матриц нажатий описаны ниже, про настройку можно почитать в статье [[Examples of interaction | Примеры программирования взаимодействия входов и выходов]] | |||
Mapping-матрица коротких нажатий: | |||
{| class="wikitable" | {| class="wikitable" | ||
! Регистры !! !! colspan="8"| Выходы '''MR3-6''' | ! Регистры !! !! colspan="8"| Выходы '''MR3-6''' | ||
|- | |- | ||
Строка 96: | Строка 179: | ||
|} | |} | ||
Mapping-матрица длинных нажатий: | |||
{| class="wikitable" | {| class="wikitable" | ||
Строка 135: | Строка 218: | ||
|} | |} | ||
Mapping-матрица двойных нажатий: | |||
{| class="wikitable" | {| class="wikitable" | ||
Строка 174: | Строка 257: | ||
|} | |} | ||
Mapping-матрица сначала коротких, потом длинных нажатий: | |||
{| class="wikitable" | {| class="wikitable" | ||
Строка 210: | Строка 293: | ||
|- | |- | ||
| '''2''' || 738 || 739 | | '''2''' || 738 || 739 | ||
|- | |- | ||
|} | |} |
Версия 14:08, 2 мая 2022
Назначение
Релейные модули имеют несколько режимов работы реле от входов. И один из них — это взаимодействие согласно Mapping-матрице.
Режимы настраиваются индивидуально на каждый вход регистрами № 9-16, см. карту регистров модулей реле.
Матрица действий над выходами по изменению состояний входов позволяет гибко настраивать реакцию устройства в зависимости от изменения его входов. Эта функциональность появилась с версии 1.9.0 для устройств серии WB-MR и WB-MWAC.
Устройство и принцип работы
Классическая матрица
Регистры | Выходы MR3-6 | ||||||||
---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ||
Входы | 1 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 |
2 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | |
3 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | |
4 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | |
5 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | |
6 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | |
7 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | |
0 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 |
Mapping-матрица находится в регистрах начиная с адреса 384, и содержит 64 регистра из расчета 8 входов / 8 выходов. В каждом регистре записан код действия входа на выход. Если в устройстве количество входов и/или выходов меньше 8, то адреса регистров не меняются — просто строки/столбцы для отсутствующих регистров не учитываются. Исключение — устройства с 2 входами и выходами.
Регистры | Выходы MR2 | ||||||||
---|---|---|---|---|---|---|---|---|---|
1 | 2 | ||||||||
Входы | 1 | 384 | 385 | ||||||
2 | 386 | 387 |
В ячейке на пересечении строки входа и столбца выхода — регистр действия входа на выход.
В него записывается 16-битное слово 0b0000 0000 0000 yyxx, где биты yy описывают действия при замыкании входа (переход из 0 в 1, передний фронт), а биты xx — при размыкании (из 1 в 0, задний фронт).
Действия, в зависимости от битов:
- 00 — ничего не делать
- 01 — выключить
- 10 — включить
- 11 — инвертировать значение
Таким образом, можно запрограммировать реакцию каждого выхода на замыкание и размыкание любых входов.
Примеры программирования взаимодействия входов и выходов
Задний фронт | |||||
---|---|---|---|---|---|
00 | 01 | 10 | 11 | ||
Передний фронт |
00 | 0000 (0) — Вход отключен, не управляет выходами | 0001 (1) — Выключить при размыкании | 0010 (2) — Включить при размыкании | 0011 (3) — Изменить состояние выхода при размыкании |
01 | 0100 (4) — Выключить при замыкании | 0101 (5) — Всегда выключать | 0110 (6) — Работать как инвертированный выключатель с фиксацией | 0111 (7) — Выключить при размыкании, потом изменять состояние при переключении | |
10 | 1000 (8) — Включить при замыкании | 1001 (9) — Работать как выключатель с фиксацией (повторять вход) | 1010 (10, 0x0A)— Всегда включать | 1011 (11, 0x0B) — Включить, потом изменять состояние при размыкании | |
11 | 1100 (12, 0x0C) — Изменить состояние выхода при замыкании (выключатель без фиксации) | 1101 (13, 0x0D) — Изменить состояние, потом выключить при размыкании | 1110 (14, 0x0E) — Изменить состояние, потом включить при размыкании | 1111 (15, 0x0F)— Изменить состояние при замыкании и вернуться к исходному состоянию при размыкании |
Матрицы для кнопок с распознаванием нажатий
Начиная с версии прошивки 1.17.0 появились дополнительные матрицы с возможностью настроить входы как кнопки для детектирования различных четырёх типов нажатий:
- короткое,
- длинное,
- двойное
- и сначала короткое, затем длинное.
Настраиваемые действия аналогичны Mapping-матрице, также как и принцип выбора регистра на пересечении. Биты yy не используются.
Карты регистров для настройки матриц нажатий описаны ниже, про настройку можно почитать в статье Примеры программирования взаимодействия входов и выходов
Mapping-матрица коротких нажатий:
Регистры | Выходы MR3-6 | ||||||||
---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ||
Входы | 1 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 |
2 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | |
3 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | |
4 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | |
5 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | |
6 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | |
7 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | |
0 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 |
Регистры | Выходы MR2 | ||||||||
---|---|---|---|---|---|---|---|---|---|
1 | 2 | ||||||||
Входы | 1 | 544 | 545 | ||||||
2 | 546 | 547 |
Mapping-матрица длинных нажатий:
Регистры | Выходы MR3-6 | ||||||||
---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ||
Входы | 1 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 |
2 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | |
3 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | |
4 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | |
5 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | |
6 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | |
7 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | |
0 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 |
Регистры | Выходы MR2 | ||||||||
---|---|---|---|---|---|---|---|---|---|
1 | 2 | ||||||||
Входы | 1 | 608 | 609 | ||||||
2 | 610 | 611 |
Mapping-матрица двойных нажатий:
Регистры | Выходы MR3-6 | ||||||||
---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ||
Входы | 1 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 |
2 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | |
3 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | |
4 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | |
5 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | |
6 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | |
7 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | |
0 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 |
Регистры | Выходы MR2 | ||||||||
---|---|---|---|---|---|---|---|---|---|
1 | 2 | ||||||||
Входы | 1 | 672 | 673 | ||||||
2 | 674 | 675 |
Mapping-матрица сначала коротких, потом длинных нажатий:
Регистры | Выходы MR3-6 | ||||||||
---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ||
Входы | 1 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 |
2 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | |
3 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | |
4 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | |
5 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | |
6 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | |
7 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | |
0 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 |
Регистры | Выходы MR2 | ||||||||
---|---|---|---|---|---|---|---|---|---|
1 | 2 | ||||||||
Входы | 1 | 736 | 737 | ||||||
2 | 738 | 739 |