|
|
(не показаны 53 промежуточные версии 11 участников) |
Строка 1: |
Строка 1: |
| <languages/>
| | {{DISPLAYTITLE:Настройка взаимодействия входов и выходов модулей WB-MR с помощью Mapping-матриц}} |
| <translate>
| | == Общие сведения == |
| {{DISPLAYTITLE: I/O Mapping Matrix}} | | [[Image: mapping-example.png |250px|thumb|right| Представление mapping-матрицы в виде таблицы ]] |
| | [[Image: wb press events.png |250px|thumb|right| Временные диаграммы типов нажатий ]] |
| | В релейных модулях WB-MR каждый из входов можно назначить для управления любым выходом с помощью шести управляющих событий. Логика управления записывается в память модуля WB-MR и не задействует ресурсы контроллера. |
|
| |
|
| === Назначение ===
| | Настройка делается через mapping-матрицы — это набор регистров в памяти модуля. Для простоты мы представим mapping-матрицу в виде таблицы, где в строках будут входы, в столбцах — выходы, а на пересечении — действие. |
| Начиная с версии '''1.9.0''' для устройств серии '''WB-MR''' и [[WB-MWAC]] в прошивке реализована поддержка матрицы отображения значений входов на значения выходов. Данная дополнительная функциональность позволяет максимально гибко настраивать реакцию конкретных выходов устройства в зависимости от состояния его входов.
| |
|
| |
|
| | Возможные события, сгруппированные по типам: |
| | # Фронт сигнала: |
| | #* передний; |
| | #* задний. |
| | # Нажатие на кнопку, подключённую к входу: |
| | #* короткое; |
| | #* длинное; |
| | #* двойное; |
| | #* сначала короткое, затем длинное. |
|
| |
|
| == Устройство и принцип работы mapping-матрицы ==
| | Для каждого типа события существует своя таблица, где прописано взаимодействие выходов и входов. |
| Матрица действий над выходами по изменению состояний входов (mapping-матрица) находится в регистрах хранения устройства, начиная с адреса 384, и содержит 64 регистра из расчета 8 входов / 8 выходов.
| |
| В каждом регистре записано одно из числовых значений, которыми кодируется взаимодействие одного из входов с одним из выходов.
| |
|
| |
|
| Строки описывают действия при изменении соответствующего входа, столбцы — соответствующие выходы.
| | ==Настройка в веб-интерфейсе контроллера Wiren Board== |
| Таким образом в ячейке на пересечении сроки входа и столбца выхода содержится значение, задающее работу выхода при изменении соответствующего входа.
| | {{note|note|Перед настройкой проверьте, что прошивка модуля не ниже 1.17.0, а ПО контроллера не старее wb-2207.}} |
| Действие описывается значением младших четырех бит шестнадцатибитного слова '''0b0000 0000 0000 yyxx''', хранящегося в регистре.
| | Для настройки mapping-матрицы в веб-интерфейсе перейдите на вкладку '''Настройки — Конфигурационные файлы — Настройка драйвера serial-устройств''' и выберите настраиваемый модуль реле. В настройках модуля перейдите на вкладку с номером входа, который вы настраиваете, например, '''Вход 1'''. |
| Биты '''yy''' описывают действия при переходе значения входа из 0 в 1 (передний фронт), а биты '''xx''' — из 1 в 0 (задний фронт).
| |
|
| |
|
| Каждая комбинация из двух бит описывает четыре возможных действия:
| | Активируйте флажок '''Режим работы''' и выберите из выпадающего списка один из режимов: |
| | * ''Управлять по mapping-матрице'', чтобы настроить матрицы для управления по фронтам. Используется [[Mapping_matrix_legacy |старый вариант маппинг-матрицы]]. |
| | * ''Управлять по mapping-матрице для кнопок'', для распознавания нажатий кнопок. |
|
| |
|
| *00 — ничего не делать
| | <gallery mode="packed" heights="200px" caption="Управлять по mapping-матрице"> |
| *01 — выключить
| | Image: Mapping-front-1.png | |
| *10 — включить
| | Image: Mapping-front-2.png | |
| *11 — инвертировать значение
| | </gallery> |
|
| |
|
| Таким образом, можно запрограммировать реакцию каждого выхода на замыкание и размыкание любых входов.
| | <gallery mode="packed" heights="200px" caption="Управлять по mapping-матрице для кнопок"> |
| <!--
| | Image: Mapping-button-1.png | |
|
| | Image: Mapping-button-2.png | |
| {| class="wikitable" | | </gallery> |
| ! !! !! ! colspan="4" |Задний фронт | | |
| | ==Настройка через запись в Modbus-регистры== |
| | {{note|note|Перед настройкой проверьте, что прошивка модуля на ниже 1.19.0. Если у вас старая версия прошивки, обновите её на свежую или используйте [[Mapping_matrix_legacy |старый вариант mapping-матрицы]].}} |
| | === Как настраивать === |
| | Если у вас нет контроллера [[Wiren Board]], вы можете настроить mapping-матрицы через запись значений в регистры, подробнее в статье [[Working_with_WB_devices_without_a_controller | Работа с Modbus-устройствами Wiren Board без контроллера]]. |
| | |
| | Общий алгоритм настройки: |
| | # Подключите модуль к компьютеру через преобразователь USB—RS485. |
| | # Задайте режим работы входа в регистрах 9-15: |
| | #* 4 — управлять по mapping-матрице по фронтам. |
| | #* 6 — управлять по mapping-матрице для кнопок. |
| | # Запишите в регистры mapping-матрицы для выбранного типа события одно из действий: |
| | #*0 — ничего не делать; |
| | #*1 — выключить; |
| | #*2 — включить; |
| | #*3 — инвертировать значение. |
| | |
| | Если в устройстве количество входов и/или выходов меньше 8, то адреса регистров '''не''' меняются — просто строки/столбцы для отсутствующих регистров не учитываются. Исключение — устройства с 2 входами и выходами. |
| | |
| | Ниже вы найдёте таблицы регистров для каждого типа событий, а подробное описание всех регистров модулей реле по ссылке [[Relay_Module_Modbus_Management | Modbus-регистры WB-MR]]. |
| | |
| | ===Mapping-матрица коротких нажатий=== |
| | |
| | {| class="wikitable" |
| | ! Регистры !! !! colspan="8"| Выходы '''MR3-6''' |
| |- | | |- |
| ! | | ! |
| | || 00 || 01 || 10 || 11 | | | || '''1''' || '''2''' || '''3''' || '''4''' || '''5''' || '''6''' || '''7''' || '''8''' |
| | |- |
| | !rowspan="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 |
| |- | | |- |
| ! rowspan="4"|Передний<br>фронт
| | | '''5''' || 576 || 577 || 578 || 579 || 580 || 581 || 582 || 583 |
| | 00 | |
| | 0000 (0) — Вход отключен, не управляет выходами | |
| | 0001 (1)— Выключить при размыкании | |
| | 0010 (2) — Включить при размыкании | |
| | 0011 (3) — Изменить состояние выхода при размыкании | |
| |- | | |- |
| | 01 | | | '''6''' || 584 || 585 || 586 || 587 || 588 || 589 || 590 || 591 |
| | 0100 (4) — Выключить при замыкании | |
| | 0101 (5)— Всегда выключать | |
| | 0110 (6) — Работать как инвертированный выключатель с фиксацией | |
| | 0111 (7) — Выключить при размыкании, потом изменять состояние при переключении | |
| |- | | |- |
| | 10 || 1000 (8) — Включить при замыкании || 1001 (9) — Работать как выключатель с фиксацией (повторять вход) || 1010 (10, 0x0A)— Всегда включать || 1011 (11, 0x0B) — Включить, потом изменять состояние при размыкании | | | '''7''' || 592 || 593 || 594 || 595 || 596 || 597 || 598 || 599 |
| |- | | |- |
| | 11 || 1100 (12, 0x0C) — Изменить состояние выхода при замыкании (выключатель без фиксации) || 1101 (13, 0x0D) — Изменить состояние, потом выключить при размыкании || 1110 (14, 0x0E) — Изменить состояние, потом включить при размыкании || 1111 (15, 0x0F)— Изменить состояние при замыкании и вернуться к исходному состоянию при размыкании | | | '''0''' || 600 || 601 || 602 || 603 || 604 || 605 || 606 || 607 |
| |} | | |} |
|
| |
|
| -->
| |
| {| class="wikitable" | | {| class="wikitable" |
| ! !! !! ! colspan="4" |Задний фронт | | ! Регистры !! !! colspan="8"| Выходы '''MR2''' |
| |- | | |- |
| ! | | ! |
| | || style="text-align:center;"| '''00''' || style="text-align:center;"| '''01''' || style="text-align:center;"| '''10''' || style="text-align:center;"| '''11''' | | | || '''1''' || '''2''' |
| |- style="vertical-align:center;" | | |- |
| ! rowspan="4"|Передний<br>фронт | | !rowspan="8" |Входы |
| | '''00'''
| | | '''1''' || 544 || 545 |
| | 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) — Выключить при размыкании
| | | '''2''' || 546 || 547 |
| | 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>при размыкании
| |
| |} | | |} |
|
| |
|
| ==Карта регистров mapping-матрицы == | | ===Mapping-матрица длинных нажатий=== |
| {| class="wikitable" | | |
| ! Регистры !! !! colspan="8"| Выходы | | {| class="wikitable" |
| | ! Регистры !! !! colspan="8"| Выходы '''MR3-6''' |
| |- | | |- |
| ! | | ! |
Строка 91: |
Строка 105: |
| |- | | |- |
| !rowspan="8" |Входы | | !rowspan="8" |Входы |
| | '''1''' || 384 || 385 || 386 || 387 || 388 || 389 || 390 || 391 | | | '''1''' || 608 || 609 || 610 || 611 || 612 || 613 || 614 || 615 |
| |- | | |- |
| | '''2''' || 392 || 393 || 394 || 395 || 396 || 397 || 398 || 399 | | | '''2''' || 616 || 617 || 618 || 619 || 620 || 621 || 622 || 623 |
| |- | | |- |
| | '''3''' || 400 || 401 || 402 || 403 || 404 || 405 || 406 || 407 | | | '''3''' || 624 || 625 || 626 || 627 || 628 || 629 || 630 || 631 |
| |- | | |- |
| | '''4''' || 408 || 409 || 410 || 411 || 412 || 413 || 414 || 415 | | | '''4''' || 632 || 633 || 634 || 635 || 636 || 637 || 638 || 639 |
| |- | | |- |
| | '''5''' || 416 || 417 || 418 || 419 || 420 || 421 || 422 || 423 | | | '''5''' || 640 || 641 || 642 || 643 || 644 || 645 || 646 || 647 |
| |- | | |- |
| | '''6''' || 424 || 425 || 426 || 427 || 428 || 429 || 430 || 431 | | | '''6''' || 648 || 649 || 650 || 651 || 652 || 653 || 654 || 655 |
| |- | | |- |
| | '''7''' || 432 || 433 || 434 || 435 || 436 || 437 || 438 || 439 | | | '''7''' || 656 || 657 || 658 || 659 || 660 || 661 || 662 || 663 |
| |- | | |- |
| | '''0''' || 440 || 441 || 442 || 443 || 444 || 445 || 446 || 447 | | | '''0''' || 664 || 665 || 666 || 667 || 668 || 669 || 670 || 671 |
| |} | | |} |
|
| |
|
| == Предыдущая версия настройки взаимодействия входов и выходов релейных модулей == | | {| class="wikitable" |
| | ! Регистры !! !! colspan="8"| Выходы '''MR2''' |
| | |- |
| | ! |
| | | || '''1''' || '''2''' |
| | |- |
| | !rowspan="8" |Входы |
| | | '''1''' || 608 || 609 |
| | |- |
| | | '''2''' || 610 || 611 |
| | |- |
| | |} |
|
| |
|
| В новых прошивках также сохранился механизм управления связями вход-выход из предыдущих прошивок. Holding-регистр 5 описывает поведение всех входов, а регистры с 9 по 9+x-1 (x — число реле в модуле) и регистр 16 (нулевой вход) — поведение каждого отдельного входа.
| | ===Mapping-матрица двойных нажатий=== |
|
| |
|
| Регистры могут содержать следующие управляющие значения:
| | {| class="wikitable" |
| | | ! Регистры !! !! colspan="8"| Выходы '''MR3-6''' |
| {| class="wikitable" | | |- |
| ! Значение регистра !! Режим работы входов !! Примечание | | ! |
| | | || '''1''' || '''2''' || '''3''' || '''4''' || '''5''' || '''6''' || '''7''' || '''8''' |
| | |- |
| | !rowspan="8" |Входы |
| | | '''1''' || 672 || 673 || 674 || 675 || 676 || 677 || 678 || 679 |
| | |- |
| | | '''2''' || 680 || 681 || 682 || 683 || 684 || 685 || 686 || 687 |
| |- | | |- |
| | 0 || Кнопки без фиксации || | | | '''3''' || 688 || 689 || 690 || 691 || 692 || 693 || 694 || 695 |
| |- | | |- |
| | 1 || Выключатель с фиксацией || | | | '''4''' || 696 || 697 || 698 || 699 || 700 || 701 || 702 || 703 |
| |- | | |- |
| | 2 || Отключать все реле при нажатии || с прошивки 1.9.0 | | | '''5''' || 704 || 705 || 706 || 707 || 708 || 709 || 710 || 711 |
| |- | | |- |
| | 3 || Отключить взаимодействие входов и выходов || | | | '''6''' || 712 || 713 || 714 || 715 || 716 || 717 || 718 || 719 |
| |- | | |- |
| | 4 || Управлять в соответствии с Mapping-матрицей || с прошивки 1.9.0 | | | '''7''' || 720 || 721 || 722 || 723 || 724 || 725 || 726 || 727 |
| |- | | |- |
| | 5 || Управлять в соответствии с Mapping-матрицей, <br>через 20 минут повторно имитировать состояние ввода || с прошивки 1.9.0 | | | '''0''' || 728 || 729 || 730 || 731 || 732 || 733 || 734 || 735 |
| |} | | |} |
|
| |
|
| Настройка управления режима отдельных входов возможно, только если в holding-регистре 5 записано значение 0. В последних прошивках в заводской поставке все регистры режима входов содержат 0, кроме регистра 16 — в нем записано значение 2, что обеспечивает работу входа 0 как "аварийного" — при нажатии на кнопку без фиксации, подсоединенную к этому входу, все реле выключатся. Повторное нажатие оставит все реле выключенными.
| | {| class="wikitable" |
| | ! Регистры !! !! colspan="8"| Выходы '''MR2''' |
| | |- |
| | ! |
| | | || '''1''' || '''2''' |
| | |- |
| | !rowspan="8" |Входы |
| | | '''1''' || 672 || 673 |
| | |- |
| | | '''2''' || 674 || 675 |
| | |- |
| | |} |
|
| |
|
| Повторная имитация состояния ввода через 20 минут (режим 5) означает, что каждые 20 минут над выходом будет выполняться действие (согласно матрице), как будто вход только что изменил состояние: если вход замкнут, то выполняется действие по переднему фронту. Если разомкнут — то по заднему. Такой режим обеспечивает дополнительную надежность при управлении реле датчиками протечки, подключенными ко входам. Отрабатывается следующий сценарий: при замыкании входа датчиком протечки шаровой кран перекрывает воду. В какой-то момент поступает команда на открытие крана (например, по Modbus). Но, если протечка все еще фиксируется датчиком, через 20 минут кран снова будет перекрыт.
| | ===Mapping-матрица сначала коротких, потом длинных нажатий=== |
|
| |
|
| == Примеры программирования взаимодействия входов и выходов == | | {| class="wikitable" |
| | ! Регистры !! !! colspan="8"| Выходы '''MR3-6''' |
| | |- |
| | ! |
| | | || '''1''' || '''2''' || '''3''' || '''4''' || '''5''' || '''6''' || '''7''' || '''8''' |
| | |- |
| | !rowspan="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 |
| | |} |
|
| |
|
| Рассмотрим несколько примеров программирования программирования взаимодействия входов и выходов на примере релейного модуля WB-MR6C с прошивкой 1.9.4. Модуль имеет 7 входов типа "сухой контакт" и 6 релейных выходов. Вход 0 по умолчанию используется для отключения всех реле модулей, а кнопки 1 — 6 для управления модулями реле.
| | {| class="wikitable" |
| | ! Регистры !! !! colspan="8"| Выходы '''MR2''' |
| | |- |
| | ! |
| | | || '''1''' || '''2''' |
| | |- |
| | !rowspan="8" |Входы |
| | | '''1''' || 736 || 737 |
| | |- |
| | | '''2''' || 738 || 739 |
| | |- |
| | |} |
|
| |
|
| В примерах ориентируемся на заводские настройки параметров коммуникации модуля, Modbus-адрес — 1. Модуль подключен к первому порту контроллера Wiren Board 6.
| | ===Mapping-матрица для заднего фронта сигнала=== |
|
| |
|
| | {| 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 |
| | |} |
|
| |
|
| '''Все примеры выполняются при остановленном драйвере wb-mqtt-serial:''' | | {| class="wikitable" |
| <syntaxhighlight lang="bash">service wb-mqtt-serial stop</syntaxhighlight>
| | ! Регистры !! !! colspan="8"| Выходы '''MR2''' |
| | |- |
| | ! |
| | | || '''1''' || '''2''' |
| | |- |
| | !rowspan="8" |Входы |
| | | '''1''' || 800 || 801 |
| | |- |
| | | '''2''' || 802 || 803 |
| | |- |
| | |} |
|
| |
|
| === Выключатели с фиксацией === | | ===Mapping-матрица для переднего фронта сигнала=== |
|
| |
|
| Запишем в регистр 5 значение 1:
| | {| class="wikitable" |
| <syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x06 -r5 1</syntaxhighlight>
| | ! Регистры !! !! 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" |
| Недостаток: Вход 0 перестает функционировать.
| | ! Регистры !! !! colspan="8"| Выходы '''MR2''' |
| | |- |
| | ! |
| | | || '''1''' || '''2''' |
| | |- |
| | !rowspan="8" |Входы |
| | | '''1''' || 864 || 865 |
| | |- |
| | | '''2''' || 866 || 867 |
| | |- |
| | |} |
|
| |
|
| | ===Mapping-матрица для переднего фронта сигнала датчика протечки WB-MWAC v.2=== |
|
| |
|
| Чтобы сохранить "аварийный" режим входа 0 вернем в регистр 5 значение 0, а в регистры 9, 10, 11, 12, 13, 14 запишем 1:
| | {| class="wikitable" |
| <syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x06 -r5 0</syntaxhighlight>
| | ! Регистры !! !! colspan="8"| Выходы '''MWAC v.2''' |
| <syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x10 -r9 1 1 1 1 1 1</syntaxhighlight>
| | |- |
| | ! |
| | | || '''1''' || '''2''' || '''3''' || '''4''' || '''5''' || '''6''' || '''7''' || '''8''' |
| | |- |
| | !rowspan="8" |Входы |
| | | '''1''' || 8260 || 8261 || 8262 || 8263 || 8264 || 8265 || 8266 || 8267 |
| | |- |
| | | '''2''' || 8268 || 8269 || 8270 || 8271 || 8272 || 8273 || 8274 || 8275 |
| | |- |
| | | '''3''' || 8276 || 8277 || 8278 || 8279 || 8280 || 8281 || 8282 || 8283 |
| | |- |
| | | '''4''' || 8284 || 8285 || 8286 || 8287 || 8288 || 8289 || 8290 || 8291 |
| | |- |
| | | '''5''' || 8292 || 8293 || 8294 || 8295 || 8296 || 8297 || 8298 || 8299 |
| | |- |
| | | '''6''' || 8300 || 8301 || 8302 || 8303 || 8304 || 8305 || 8306 || 8307 |
| | |- |
| | | '''7''' || 8308 || 8309 || 8310 || 8311 || 8312 || 8313 || 8314 || 8315 |
| | |- |
| | | '''0''' || 8316 || 8317 || 8318 || 8319 || 8320 || 8321 || 8322 || 8323 |
| | |} |
|
| |
|
| Теперь все входы функционируют в режиме выключателей с фиксацией, а кратковременное нажатие на кнопку, подключенную ко входу 0, выключит все реле.
| | == Маппинг-матрица для управления шторами == |
|
| |
|
| === Отключить взаимодействие входов и реле ===
| | Настройка действий штор для разных типов нажатий выполняется аналогичным образом, как и настройка действий для выходов. |
|
| |
|
| Для отключения взаимодействия входов и реле (например, если мы хотим управлять реле только через движок правил контроллера) запишем в регистр 5 значение 0, а в регистры 9, 10, 11, 12, 13, 14 запишем значение 3:
| | Значение регистра маппинг-матрицы для штор может быть следующим: |
|
| |
|
| <syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x06 -r5 0</syntaxhighlight>
| | *0 — ничего не делать; |
| <syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x10 -r9 3 3 3 3 3 3</syntaxhighlight>
| | *1 — открыть; |
| | *2 — закрыть; |
| | *3 — открыть/закрыть; |
| | *4 — остановить; |
| | *5 — открывать, пока кнопка удерживается нажатой; |
| | *6 — закрывать, пока кнопка удерживается нажатой; |
| | *7 — открывать/закрывать, пока кнопка удерживается нажатой; |
|
| |
|
| Теперь нажатия на кнопки или переключение выключателей не будет изменять состояние реле: ими можно управлять только программно, по Modbus.
| | Действия 5, 6, 7 применимы только для продолжительных нажатий: длинного и короткого, а затем длинного. |
| При этом функция аварийного входа 0 сохраняется: кратковременное нажатие на кнопку, подключенную ко входу 0, выключит все реле.
| |
|
| |
|
| Если мы хотим отключить и вход 0, то запишем значение 3 в регистр 16:
| | Размер маппинг-матрицы для штор - 8x4 для всех реле, в том числе для MRM2mini. |
| <syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x06 -r16 3</syntaxhighlight>
| |
|
| |
|
| | ===Mapping-матрица штор для коротких нажатий=== |
|
| |
|
| === Использование Mapping-матрицы === | | {| class="wikitable" |
| Более сложные сценарии взаимодействия входов с реле можно реализовать с помощью Mapping-матрицы.
| | ! Регистры !! !! colspan="4"| Шторы '''MR2-6''' |
| Для использования Mapping-матрицы запишем в holding-регистр 5 значение 0:
| | |- |
| <syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x06 -r5 4 </syntaxhighlight>
| | ! |
| А в регистры настройки взаимодействия входов/выходов — значение 4:
| | | || '''1''' || '''2''' || '''3''' || '''4''' |
| <syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x10 -r 9 4 4 4 4 4 4 </syntaxhighlight>
| | |- |
| <syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x06 -r16 4</syntaxhighlight>
| | !rowspan="8" |Входы |
| | | '''1''' || 1400 || 1401 || 1402 || 1403 |
| | |- |
| | | '''2''' || 1404 || 1405 || 1406 || 1407 |
| | |- |
| | | '''3''' || 1408 || 1409 || 1410 || 1411 |
| | |- |
| | | '''4''' || 1412 || 1413 || 1414 || 1415 |
| | |- |
| | | '''5''' || 1416 || 1417 || 1418 || 1419 |
| | |- |
| | | '''6''' || 1420 || 1421 || 1422 || 1423 |
| | |- |
| | | '''7''' || 1424 || 1425 || 1426 || 1427 |
| | |- |
| | | '''0''' || 1428 || 1429 || 1430 || 1431 |
| | |- |
| | |} |
|
| |
|
| В заводской поставке Mapping-матрица заполнена нулями. Если вы не уверены в этом и хотите стереть всю матрицу, запишите 0 в каждый из 64 holding-регистров, начиная с 384:
| | ===Mapping-матрица штор для длинных нажатий=== |
| <syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x10 -r384 $(printf ' 0%.0s' {1..64})</syntaxhighlight>
| |
|
| |
|
| ==== Вход 0 включает и выключает все реле ==== | | {| class="wikitable" |
| | ! Регистры !! !! colspan="4"| Шторы '''MR2-6''' |
| | |- |
| | ! |
| | | || '''1''' || '''2''' || '''3''' || '''4''' |
| | |- |
| | !rowspan="8" |Входы |
| | | '''1''' || 1432 || 1433 || 1434 || 1435 |
| | |- |
| | | '''2''' || 1436 || 1437 || 1438 || 1439 |
| | |- |
| | | '''3''' || 1440 || 1441 || 1442 || 1443 |
| | |- |
| | | '''4''' || 1444 || 1445 || 1446 || 1447 |
| | |- |
| | | '''5''' || 1448 || 1449 || 1450 || 1451 |
| | |- |
| | | '''6''' || 1452 || 1453 || 1454 || 1455 |
| | |- |
| | | '''7''' || 1456 || 1457 || 1458 || 1459 |
| | |- |
| | | '''0''' || 1460 || 1461 || 1462 || 1463 |
| | |- |
| | |} |
|
| |
|
| Запрограммируем матрицу таким образом, чтобы вход 0, работая в режиме кнопки (выключателя без фиксации) последовательно включал и отключал все реле модуля при замыкании.
| | ===Mapping-матрица штор для двойных нажатий=== |
|
| |
|
| Для этого обратимся к карте регистров mapping-матрицы и увидим, что входу 0 соответствуют регистры 440 — 447. Причем за взаимодействие со входами 1 — 6 отвечают регистры 440 — 445.
| | {| class="wikitable" |
| | ! Регистры !! !! colspan="4"| Шторы '''MR2-6''' |
| | |- |
| | ! |
| | | || '''1''' || '''2''' || '''3''' || '''4''' |
| | |- |
| | !rowspan="8" |Входы |
| | | '''1''' || 1464 || 1465 || 1466 || 1467 |
| | |- |
| | | '''2''' || 1468 || 1469 || 1470 || 1471 |
| | |- |
| | | '''3''' || 1472 || 1473 || 1474 || 1475 |
| | |- |
| | | '''4''' || 1476 || 1477 || 1478 || 1479 |
| | |- |
| | | '''5''' || 1480 || 1481 || 1482 || 1483 |
| | |- |
| | | '''6''' || 1484 || 1485 || 1486 || 1487 |
| | |- |
| | | '''7''' || 1488 || 1489 || 1490 || 1491 |
| | |- |
| | | '''0''' || 1492 || 1493 || 1494 || 1495 |
| | |- |
| | |} |
|
| |
|
| | ===Mapping-матрица штор для сначала коротких, потом длинных нажатий=== |
|
| |
|
| Мы хотим, чтобы вход работал, как выключатель без фиксации и срабатывал при нажатии (по переднему фронту), а при размыкании ничего бы не происходило. При каждом нажатии состояние всех реле должно инвертироваться. Это соответствует комбинации 11 00: (12, 0x0C) — Изменить состояние выхода при замыкании:
| | {| class="wikitable" |
| [[File:Mm_1100.png|frameless|270px]]<br>
| | ! Регистры !! !! colspan="4"| Шторы '''MR2-6''' |
| Запишем в регистры 440 — 445 значение 12:
| | |- |
| | | ! |
| <syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x10 -r440 12 12 12 12 12 12</syntaxhighlight>
| | | || '''1''' || '''2''' || '''3''' || '''4''' |
| | | |- |
| Проверим работу: при первом замыкании входа 0 все реле включаются, при втором — все реле выключаются.
| | !rowspan="8" |Входы |
| | | | '''1''' || 1496 || 1497 || 1498 || 1499 |
| | | |- |
| ==== Инвертированный выключатель с фиксацией ====
| | | '''2''' || 1500 || 1501 || 1502 || 1503 |
| Настроим входы таким образом, чтобы при замкнутых входах реле были бы выключены, а при разомкнутых -- включены.
| | |- |
| Для этого при замыкании входа (передний фронт) соответствующий выход должен выключаться (01), а при размыкании входа (задний фронт) — включаться (10). Это соответствует значению 6: [[File:Mm_0110.png|frameless|270px]]<br>
| | | '''3''' || 1504 || 1505 || 1506 || 1507 |
| В матрице нужные регистры взаимодействия вход 1 — выход 1, вход 2 — выход 2 и т.д. расположены по диагонали. Это регистры 384, 393, 402, 411, 420, 429. В них надо записать значение 6:
| | |- |
| <syntaxhighlight lang="bash">for i in 384 393 402 411 420 429; do modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x06 -r$i 6; done</syntaxhighlight>
| | | '''4''' || 1508 || 1509 || 1510 || 1511 |
| | | |- |
| Обратите внимание: изменение состояния реле происходят только при изменении состояния ввода.
| | | '''5''' || 1512 || 1513 || 1514 || 1515 |
| | | |- |
| ==== Датчик протечки ====
| | | '''6''' || 1516 || 1517 || 1518 || 1519 |
| | | |- |
| Пусть датчик протечки подключен ко '''входу 1''', а '''реле 1 и 2''' управляют приводами шаровых кранов. '''Реле 3''' управляет сигнальной лампой или зуммером. При смачивании датчика протечки '''реле 1 и реле 2''' замыкаются и приводы закрывают шаровые краны. '''Реле 3''' замыкается и включает зуммер. '''Вход 2''' запрограммируем для сброса тревоги и открытия шаровых кранов.
| | | '''7''' || 1520 || 1521 || 1522 || 1523 |
| | | |- |
| Очистим mapping-матрицу:
| | | '''0''' || 1524 || 1525 || 1526 || 1527 |
| <syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x10 -r384 $(printf ' 0%.0s' {1..64})</syntaxhighlight>
| | |- |
| | | |} |
| Применим в нашем случае режим, когда состояние входа повторяется каждые 20 минут, для этого запишем в регистр 9 значение 5 (управлять в соответствии с mapping-матрицей, через 20 минут повторно имитировать состояние ввода), а в остальные — значение 4 (управлять в соответствии с mapping-матрицей).
| |
| | |
| <syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x10 -r9 5 4 4 4 4 4</syntaxhighlight>
| |
| | |
| Для входа датчика протечки (вход 1) используем режим 1000 (8) — включать при замыкании. [[File:Mm_1000.png|frameless|270px]]<br> Для входа кнопки сброса (вход 2) используем режим 0100 (4) — выключить при замыкании. [[File:Mm_0100.png|frameless|270px]]<br>
| |
| | |
| По карте mapping-регистров определяем, что для входа 1 надо записать значение 8 в регистры 384, 385, 386, а для входа 2 — записать значение 4 в регистры 392, 393, 394:
| |
| | |
| <syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x10 -r384 8 8 8</syntaxhighlight>
| |
| <syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x10 -r392 4 4 4</syntaxhighlight>
| |
| | |
| | |
| Проверка: замкнем вход 1 и iGND и оставим его замкнутым. Должны включиться реле 1, 2 и 3. Затем замкнем и разомкнем вход 2 — все три реле реле выключились. Ждем 20 минут. Поскольку вход 1 остается замкнутым (протечка не устранена), через 20 минут реле 1, 2 и 3 снова включатся.
| |
| | |
| Оставляя вход 1 замкнутым, выключим и включим питание реле: через 20 минут реле 1, 2 и 3 снова включатся.
| |
| </translate>
| |