Показано с 1 по 10 из 10

Тема: ПЛК73 + МК110-220.4К.4Р + МК110-224.8ДН.4Р опрос по ModBus

  1. #1

    По умолчанию ПЛК73 + МК110-220.4К.4Р + МК110-224.8ДН.4Р опрос по ModBus

    Здравствуйте.
    Имеем:
    ПЛК73 + ПИ73-2
    МК110-220.4К.4Р настроен скорость - 9600 адрес - 2 DIP3 включен
    МК110-224.8ДН.4Р настроен скорость - 9600 адрес - 3
    По примерам написал простенькую программу по чтению состоянию входов и записи состоянию выходов.
    Если ставлю адрес 3 то все замечательно читается и записывается.
    А если 2 то видно что модуль опрашивается но данных нет. Хотел уже на ОВЕНСКОМ протоколе опрашивать но в документации написано что выходами не смогу управлять.
    Сравнил документации 4К.4Р и 8ДН.4Р они практически одинаковы только по DIP отличаются.
    Подскажите что я делаю не так.
    Вложения Вложения
    • Тип файла: pro 01.pro (97.6 Кб, Просмотров: 68)

  2. #2

    По умолчанию

    Получается, что по адресу 3 вы управляете регистром 50 и считываете регистр 51 - опрос идет замечательно.
    Для модуля 8ДН.4Р регистр 50 - БМ выходов, регистр 51 - БМ входов. Это законно, что всё работает.
    Теперь вы меняете адрес опрашиваемого устройства на 2.
    Получается, что меняете только адрес устройства.
    Получается, что на 4К.4Р вы считываете тот же 50 регистр и тот же 51 регистр.
    Теперь сравниваем руководства на идентичность.
    для 4К.4Р
    БМ значений входов регистр 17
    БМ значений выходов регистр 18.
    т.е. с устройства 4К.4Р нужно считывать регистры 17 и 18, в то время как вы считываете регистры 50 и 51.
    Данные при этом не приходят.
    Это логично, так как считываете и пишете вы совсем не туда.
    Последний раз редактировалось Никита Сергеев; 13.12.2019 в 10:35.

  3. #3

    По умолчанию

    Дааааааааааауж.
    Пользовался официальной документацией для 4К.4Р отсюда скаченной
    и в ней написано регистры 50 и 51
    сейчас нашел брошюрку из коробочки и действительно нужно использовать регистры 17 18
    Спасибо.

  4. #4
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от AllXXX Посмотреть сообщение
    Дааааааааааауж..
    по подробней до абзаца на страницые можно, а то в таблице из этого документа все путем
    Изображения Изображения
    • Тип файла: png owen.png (93.2 Кб, Просмотров: 36)
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  5. #5

    По умолчанию

    8.3 Работа по протоколу ModBus

    Работа по протоколу ModBus может идти в режимах ASCII или RTU.
    По протоколу Modbus возможно считывание битовой маски состояния всех дискретных входов (регистрс номером 51 (0х33)).
    В регистре используются биты с 0 по 3, старший из них соответствует входу снаибольшим номером.

    омандой 16 (0x10) записью битовой маски в регистр с номером 50 (0x32)
    Последний раз редактировалось AllXXX; 13.12.2019 в 12:14.

  6. #6
    Пользователь Аватар для A.Simonov
    Регистрация
    11.07.2017
    Адрес
    Москва
    Сообщений
    623

    По умолчанию

    Цитата Сообщение от AllXXX Посмотреть сообщение
    8.3 Работа по протоколу ModBus

    Работа по протоколу ModBus может идти в режимах ASCII или RTU.
    По протоколу Modbus возможно считывание битовой маски состояния всех дискретных входов (регистрс номером 51 (0х33)).
    В регистре используются биты с 0 по 3, старший из них соответствует входу снаибольшим номером.

    омандой 16 (0x10) записью битовой маски в регистр с номером 50 (0x32)
    Добрый день.

    Спасибо.
    Поправим в руководстве.

    Александр Андреевич Симонов
    Инженер по продуктам «ПЛК, модули и OwenCloud»

    Не работаю в ОВЕН с 01.07.22
    По всем вопросам обращайтесь на почту: support@owen.ru

  7. #7

    По умолчанию

    Всегда пожалуйста.

  8. #8

    По умолчанию

    Здравствуйте.
    Написал программку опроса модулей, считывает битовую маску состояния дискретных входов без проблем а вот при записи битовой маски дискретных выходов вылетает ошибка по таймауту(см. рис. Ошибки 22 и 32) хотя данные в модуль записываются и выхода включаются согласно битовой маски.
    Подскажите в какую сторону рыть?01.png
    Вложения Вложения
    Я не волшебник, я только учусь...

  9. #9
    Пользователь Аватар для A.Simonov
    Регистрация
    11.07.2017
    Адрес
    Москва
    Сообщений
    623

    По умолчанию

    Не ясно о каком конкретно модуле и регистре речь, но предположу что регистр работает только на запись и не посылает ответы на запросы.

    Александр Андреевич Симонов
    Инженер по продуктам «ПЛК, модули и OwenCloud»

    Не работаю в ОВЕН с 01.07.22
    По всем вопросам обращайтесь на почту: support@owen.ru

  10. #10

    По умолчанию

    Нет ни какой разницы что при отправке в МК110-220.4К.4Р адрес - 2 DIP3 включен

    PHP код:
    set2set3MB_WR_REGS;         (* Функция записи значения регистров 16 (0x10Write Multiple Registers *)

    Buffer[0] := 0;
    Buffer[1] := 15;                    (* Битовая маска состояния дискретных выходов*)
    set2(
        
    Enable:= TRUE,                (* Разрешение работы блока *)
        
    Mode:=MB_RTU ,                (* Режим передачи ASCIIRTU *)
        
    DevAddr:=,                 (* Адрес ведомого устройства *)
        
    FirstAddr:= 18,                 (* Номер первого регистра для чтения *)
        
    Quantity:= 1,                   (* Количество записываемых регистров *)
        
    ComHandle:=Settings.Port ,        (* Номер COM-порта *)
        
    TimeOut:=TimeOut ,            (* Таймаут T#ХХХms *)
        
    Buffer:=Buffer ,                (* Буфер данных *)
        
    Complete=>cmpl ,            (* Скопировать признак завершения операции *)
        
    Exception=>Error);            (* Скопировать регистр ошибок *)
    IF 
    cmpl THEN                    (* Если завершено *)
        CASE 
    Error OF                (* Делаем проверку ошибок*)
            
    255:
                
    Save_error(Err:= 22);    (* Ошибка таймаута *)
            
    254:
                
    Save_error(Err:= 23);    (* Аппаратная ошибка ПЛК *)
        
    END_CASE
    set2
    (
        
    Enable:=FALSE ,                (* Завершаем работу блока *)
        
    Mode:=MB_RTU ,                (* Режим передачи ASCIIRTU *)
        
    DevAddr:=,                 (* Адрес ведомого устройства *)
        
    FirstAddr:= 18,                 (* Номер первого регистра для чтения *)
        
    Quantity:= 1,                   (* Количество записываемых регистров *)
        
    ComHandle:=Settings.Port ,        (* Номер COM-порта *)
        
    TimeOut:=TimeOut ,            (* Таймаут T#ХХХms *)
        
    Buffer:=Buffer);                (* Буфер данных *)
        
    master := 4;
    END_IF 
    МК110-224.8ДН.4Р адрес - 3

    PHP код:
    Buffer[0] := 0;
    Buffer[1] := 15;                    (* Записываем данные в буфер*)
    set3(
        
    Enable:= TRUE,                (* Разрешение работы блока *)
        
    Mode:=MB_RTU ,                (* Режим передачи ASCIIRTU *)
        
    DevAddr:=,                 (* Адрес ведомого устройства *)
        
    FirstAddr:= 50,                (* Номер первого регистра для чтения *)
        
    Quantity:= 1,                   (* Количество записываемых регистров *)
        
    ComHandle:=Settings.Port ,        (* Номер COM-порта *)
        
    TimeOut:=TimeOut ,            (* Таймаут T#ХХХms *)
        
    Buffer:=Buffer ,                (* Буфер данных *)
        
    Complete=>cmpl ,            (* Скопировать признак завершения операции *)
        
    Exception=>Error);            (* Скопировать регистр ошибок *)
    IF 
    cmpl THEN                    (* Если завершено *)
        CASE 
    Error OF                (* Делаем проверку ошибок*)
            
    255:
                
    Save_error(Err:= 32);    (* Ошибка таймаута *)
            
    254:
                
    Save_error(Err:= 33);    (* Аппаратная ошибка ПЛК *)
        
    END_CASE
    set3
    (
        
    Enable:= FALSE ,                (* Завершаем работу блока *)
        
    Mode:=MB_RTU ,                (* Режим передачи ASCIIRTU *)
        
    DevAddr:=,                 (* Адрес ведомого устройства *)
        
    FirstAddr:= 50,                (* Номер первого регистра для чтения *)
        
    Quantity:= 1,                   (* Количество записываемых регистров *)
        
    ComHandle:=Settings.Port ,        (* Номер COM-порта *)
        
    TimeOut:=TimeOut ,            (* Таймаут T#ХХХms *)
        
    Buffer:=Buffer);                (* Буфер данных *)
        
    master := 1;
    END_IF 
    причем, признак завершения операции cmpl появляется одновременно с ошибкой = 255.
    выхода на модулях включаются.
    Я не волшебник, я только учусь...

Похожие темы

  1. ПЛК63 + МК110 по modbus помогите.
    от trollik3 в разделе ПЛК63/73
    Ответов: 9
    Последнее сообщение: 14.08.2019, 15:04
  2. ПЛК63 + МВ110-8АС + МУ110-8И + МК110-8ДН-4Р опрос по modbus
    от Егор_Егор в разделе ПЛК63/73
    Ответов: 20
    Последнее сообщение: 03.08.2018, 10:03
  3. Опрос входов МК110-224.8ДН.4Р
    от Netmas в разделе Мх110
    Ответов: 21
    Последнее сообщение: 03.04.2017, 22:53
  4. Ответов: 7
    Последнее сообщение: 01.08.2016, 10:53
  5. Ответов: 16
    Последнее сообщение: 23.04.2010, 15:33

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •