I/O Mapping Matrix: различия между версиями

Материал из Wiren Board
Строка 1: Строка 1:
<languages/>
{{DISPLAYTITLE:Настройка взаимодействия входов и выходов модулей WB-MR}}
== Общие сведения ==
[[Image: mapping-example.png |250px|thumb|right| Представление маппинг-матрицы в виде таблицы ]]
[[Image: wb press events.png |250px|thumb|right| Временные диаграммы типов нажатий ]]
В релейных модулях WB-MR каждый из входов можно назначить для управления любым выходом с помощью шести управляющих событий. Логика управления записывается в память модуля WB-MR и не задействует ресурсы контроллера.


<!--T:1-->
Настройка делается через маппинг-матрицы — это набор регистров в памяти модуля. Для простоты мы представим маппинг-матрицу в виде таблицы, где в строках будут входы, в столбцах — выходы, а на пересечении — действие.


{{DISPLAYTITLE:Mapping-матрица}}
Возможные события, сгруппированные по типам:
== Назначение == <!--T:3-->
# Фронт сигнала:  
Релейные модули имеют несколько режимов работы реле от входов. И один из них — это взаимодействие согласно Mapping-матрице.
#* передний;
#* задний.
# Нажатие на кнопку, подключённую к входу:
#* короткое;
#* длинное;
#* двойное;
#* сначала короткое, затем длинное.  


Режимы настраиваются индивидуально на каждый вход регистрами № 9-16, см.  [[Relay_Module_Modbus_Management | карту регистров модулей реле]].
Для каждого типа события существует своя таблица, где прописано взаимодействие выходов и входов.


Матрица действий над выходами по изменению состояний входов позволяет гибко настраивать реакцию устройства в зависимости от изменения его входов.
==Настройка в веб-интерфейсе контроллера Wiren Board==
{{note|note|Перед настройкой проверьте, что прошивка модуля на ниже 1.17.0, а ПО контроллера не старее wb-2207.}}
Для настройки mapping-матрицы в веб-интерфейсе перейдите на вкладку '''Настройки — Конфигурационные файлы — Настройка драйвера serial-устройств''' и выберите настраиваемый модуль реле. В настройках модуля перейдите на вкладку с номером входа, который вы настраиваете, например, '''Вход 1'''.


Настроить Mapping-матрицы можно через запись значений в регистры или в веб-интерфейсе контроллера Wiren Board.
Активируйте флажок '''Режим работы''' и выберите из выпадающего списка один из режимов:
* ''Управлять по mapping-матрице'', чтобы настроить матрицы для управления по фронтам. Используется [[Mapping_matrix_legacy |старый вариант маппинг-матрицы]].
* ''Управлять по mapping-матрице для кнопок'', для распознавания нажатий кнопок.  


== Классическая матрица == <!--T:4-->
<gallery mode="packed" heights="200px" caption="Управлять по mapping-матрице">
[[Image: WebUI mapping-matrix.png |300px|thumb|right| Пример настройки mapping-матрицы в веб-интерфейсе контроллера Wiren Board]]
Image: Mapping-front-1.png |
Image: Mapping-front-2.png |  
</gallery>


Классическая Mapping-матрица появилась в устройствах WB-MR и WB-MWAC с версии прошивки '''1.9.0'''.  
<gallery mode="packed" heights="200px" caption="Управлять по mapping-матрице для кнопок">
Image: Mapping-button-1.png |
Image: Mapping-button-2.png |
</gallery>


{| class="wikitable noclear"
==Настройка через запись в Modbus-регистры==
! Регистры !!  !! colspan="8"| Выходы '''MR3-6'''
{{note|note|Перед настройкой проверьте, что прошивка модуля на ниже 1.19.0. Если у вас старая версия прошивки, обновите её на свежую или используйте [[Mapping_matrix_legacy |старый вариант маппинг-матрицы]].}}
|-
=== Как настраивать ===
!
Если у вас нет контроллера [[Wiren Board]], вы можете настроить маппинг-матрицы через запись значений в регистры, подробнее в статье [[Working_with_WB_devices_without_a_controller | Работа с Modbus-устройствами Wiren Board без контроллера]].
|  || '''1''' || '''2''' || '''3''' || '''4''' || '''5''' || '''6''' || '''7''' || '''8'''
 
|-
Общий алгоритм настройки:
!rowspan="8" |Входы
# Подключите модуль к компьютеру через преобразователь USB—RS485.
| '''1''' || 384 || 385 || 386 || 387 || 388 || 389 || 390 || 391
# Задайте режим работы входа в регистрах 9-15:
|-
#* 4 — управлять по mapping-матрице по фронтам.
| '''2''' || 392 || 393 || 394 || 395 || 396 || 397 || 398 || 399
#* 6 — управлять по mapping-матрице для кнопок.
|-
# Запишите в регистры маппинг-матрицы для выбранного типа события одно из действий:
| '''3''' || 400 || 401 || 402 || 403 || 404 || 405 || 406 || 407
#*0 — ничего не делать;
|-
#*1 — выключить;
| '''4''' || 408 || 409 || 410 || 411 || 412 || 413 || 414 || 415
#*2 — включить;
|-
#*3 — инвертировать значение.
| '''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 входами и выходами.
Если в устройстве количество входов и/или выходов меньше 8, то адреса регистров '''не''' меняются — просто строки/столбцы для отсутствующих регистров не учитываются. Исключение — устройства с 2 входами и выходами.


{| class="wikitable"
Ниже вы найдёте таблицы регистров для каждого типа событий, а подробное описание всех регистров модулей реле по ссылке [[Relay_Module_Modbus_Management | Modbus-регистры WB-MR]].
! Регистры !!  !! colspan="8"| Выходы '''MR2'''
|-
!
|  || '''1''' || '''2'''
|-
!rowspan="8" |Входы
| '''1''' || 384 || 385
|-
| '''2''' || 386 || 387
|-
|}


===Маппинг-матрица коротких нажатий===


<!--T:5-->
{| class="wikitable"  
В ячейке на пересечении строки входа и столбца выхода — регистр действия входа на выход.
В него записывается 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>при размыкании
|}
 
== Матрицы для кнопок с распознаванием нажатий ==
[[Image: WebUI WB-MR6C v.2 Relay Change Input Mode Matrix.png |300px|thumb|right| Пример настройки матрицы для кнопок в веб-интерфейсе контроллера Wiren Board]]
Начиная с версии прошивки 1.17.0 появились дополнительные матрицы с возможностью настроить входы как кнопки для детектирования четырёх типов нажатий:
* короткое,
* длинное,
* двойное
* и сначала короткое, затем длинное.
 
Настраиваемые действия аналогичны Mapping-матрице, также как и принцип выбора регистра на пересечении. Биты '''yy''' не используются.
 
Карты регистров для настройки матриц нажатий описаны ниже, про настройку можно почитать в статье [[Examples of interaction | Примеры программирования взаимодействия входов и выходов]]
 
Mapping-матрица коротких нажатий:
 
{| class="wikitable"
! Регистры !!  !! colspan="8"| Выходы '''MR3-6'''
! Регистры !!  !! colspan="8"| Выходы '''MR3-6'''
|-
|-
Строка 184: Строка 96:
|}
|}


Mapping-матрица длинных нажатий:
===Маппинг-матрица длинных нажатий===


{| class="wikitable"  
{| class="wikitable"  
Строка 223: Строка 135:
|}
|}


Mapping-матрица двойных нажатий:
===Маппинг-матрица двойных нажатий===


{| class="wikitable"  
{| class="wikitable"  
Строка 262: Строка 174:
|}
|}


Mapping-матрица сначала коротких, потом длинных нажатий:
===Маппинг-матрица сначала коротких, потом длинных нажатий===


{| class="wikitable"  
{| class="wikitable"  
Строка 298: Строка 210:
|-
|-
| '''2''' || 738 || 739
| '''2''' || 738 || 739
|-
|}
===Маппинг-матрица для заднего фронта сигнала===
{| class="wikitable"
! Регистры !!  !! colspan="8"| Выходы '''MR3-6'''
|-
!
|  || '''1''' || '''2''' || '''3''' || '''4''' || '''5''' || '''6''' || '''7''' || '''8'''
|-
!rowspan="8" |Входы
| '''1''' || 800 || 801 || 802 || 803 || 804 || 805 || 806 || 807
|-
| '''2''' || 808 || 809 || 810 || 811 || 812 || 813 || 814 || 815
|-
| '''3''' || 816 || 817 || 818 || 819 || 820 || 821 || 822 || 823
|-
| '''4''' || 824 || 825 || 826 || 827 || 828 || 829 || 830 || 831
|-
| '''5''' || 832 || 833 || 834 || 835 || 836 || 837 || 838 || 839
|-
| '''6''' || 840 || 841 || 842 || 843 || 844 || 845 || 846 || 847
|-
| '''7''' || 848 || 849 || 850 || 851 || 852 || 853 || 854 || 855
|-
| '''0''' || 856 || 857 || 858 || 859 || 860 || 861 || 862 || 863
|}
{| class="wikitable"
! Регистры !!  !! colspan="8"| Выходы '''MR2'''
|-
!
|  || '''1''' || '''2'''
|-
!rowspan="8" |Входы
| '''1''' || 800 || 801
|-
| '''2''' || 802 || 803
|-
|}
===Маппинг-матрица для переднего фронта сигнала===
{| class="wikitable"
! Регистры !!  !! colspan="8"| Выходы '''MR3-6'''
|-
!
|  || '''1''' || '''2''' || '''3''' || '''4''' || '''5''' || '''6''' || '''7''' || '''8'''
|-
!rowspan="8" |Входы
| '''1''' || 864 || 865 || 866 || 867 || 868 || 869 || 870 || 871
|-
| '''2''' || 872 || 873 || 874 || 875 || 876 || 877 || 878 || 879
|-
| '''3''' || 880 || 881 || 882 || 883 || 884 || 885 || 886 || 887
|-
| '''4''' || 888 || 889 || 890 || 891 || 892 || 893 || 894 || 895
|-
| '''5''' || 896 || 897 || 898 || 899 || 900 || 901 || 902 || 903
|-
| '''6''' || 904 || 905 || 906 || 907 || 908 || 909 || 910 || 911
|-
| '''7''' || 912 || 913 || 914 || 915 || 916 || 917 || 918 || 919
|-
| '''0''' || 920 || 921 || 922 || 923 || 924 || 925 || 926 || 927
|}
{| class="wikitable"
! Регистры !!  !! colspan="8"| Выходы '''MR2'''
|-
!
|  || '''1''' || '''2'''
|-
!rowspan="8" |Входы
| '''1''' || 864 || 865
|-
| '''2''' || 866 || 867
|-
|-
|}
|}

Версия 17:19, 28 марта 2023

Общие сведения

Представление маппинг-матрицы в виде таблицы
Временные диаграммы типов нажатий

В релейных модулях WB-MR каждый из входов можно назначить для управления любым выходом с помощью шести управляющих событий. Логика управления записывается в память модуля WB-MR и не задействует ресурсы контроллера.

Настройка делается через маппинг-матрицы — это набор регистров в памяти модуля. Для простоты мы представим маппинг-матрицу в виде таблицы, где в строках будут входы, в столбцах — выходы, а на пересечении — действие.

Возможные события, сгруппированные по типам:

  1. Фронт сигнала:
    • передний;
    • задний.
  2. Нажатие на кнопку, подключённую к входу:
    • короткое;
    • длинное;
    • двойное;
    • сначала короткое, затем длинное.

Для каждого типа события существует своя таблица, где прописано взаимодействие выходов и входов.

Настройка в веб-интерфейсе контроллера Wiren Board

Перед настройкой проверьте, что прошивка модуля на ниже 1.17.0, а ПО контроллера не старее wb-2207. Для настройки mapping-матрицы в веб-интерфейсе перейдите на вкладку Настройки — Конфигурационные файлы — Настройка драйвера serial-устройств и выберите настраиваемый модуль реле. В настройках модуля перейдите на вкладку с номером входа, который вы настраиваете, например, Вход 1.

Активируйте флажок Режим работы и выберите из выпадающего списка один из режимов:

  • Управлять по mapping-матрице, чтобы настроить матрицы для управления по фронтам. Используется старый вариант маппинг-матрицы.
  • Управлять по mapping-матрице для кнопок, для распознавания нажатий кнопок.

Настройка через запись в Modbus-регистры

Перед настройкой проверьте, что прошивка модуля на ниже 1.19.0. Если у вас старая версия прошивки, обновите её на свежую или используйте старый вариант маппинг-матрицы.

Как настраивать

Если у вас нет контроллера Wiren Board, вы можете настроить маппинг-матрицы через запись значений в регистры, подробнее в статье Работа с Modbus-устройствами Wiren Board без контроллера.

Общий алгоритм настройки:

  1. Подключите модуль к компьютеру через преобразователь USB—RS485.
  2. Задайте режим работы входа в регистрах 9-15:
    • 4 — управлять по mapping-матрице по фронтам.
    • 6 — управлять по mapping-матрице для кнопок.
  3. Запишите в регистры маппинг-матрицы для выбранного типа события одно из действий:
    • 0 — ничего не делать;
    • 1 — выключить;
    • 2 — включить;
    • 3 — инвертировать значение.

Если в устройстве количество входов и/или выходов меньше 8, то адреса регистров не меняются — просто строки/столбцы для отсутствующих регистров не учитываются. Исключение — устройства с 2 входами и выходами.

Ниже вы найдёте таблицы регистров для каждого типа событий, а подробное описание всех регистров модулей реле по ссылке Modbus-регистры WB-MR.

Маппинг-матрица коротких нажатий

Регистры Выходы 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

Маппинг-матрица длинных нажатий

Регистры Выходы 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

Маппинг-матрица двойных нажатий

Регистры Выходы 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

Маппинг-матрица сначала коротких, потом длинных нажатий

Регистры Выходы 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

Маппинг-матрица для заднего фронта сигнала

Регистры Выходы MR3-6
1 2 3 4 5 6 7 8
Входы 1 800 801 802 803 804 805 806 807
2 808 809 810 811 812 813 814 815
3 816 817 818 819 820 821 822 823
4 824 825 826 827 828 829 830 831
5 832 833 834 835 836 837 838 839
6 840 841 842 843 844 845 846 847
7 848 849 850 851 852 853 854 855
0 856 857 858 859 860 861 862 863
Регистры Выходы MR2
1 2
Входы 1 800 801
2 802 803

Маппинг-матрица для переднего фронта сигнала

Регистры Выходы MR3-6
1 2 3 4 5 6 7 8
Входы 1 864 865 866 867 868 869 870 871
2 872 873 874 875 876 877 878 879
3 880 881 882 883 884 885 886 887
4 888 889 890 891 892 893 894 895
5 896 897 898 899 900 901 902 903
6 904 905 906 907 908 909 910 911
7 912 913 914 915 916 917 918 919
0 920 921 922 923 924 925 926 927
Регистры Выходы MR2
1 2
Входы 1 864 865
2 866 867