Перейти к содержанию

Навигация

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

Нет описания правки
Строка 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
|-
|-
|}
|}
translator, wb_editors
4218

правок