Страница 2 из 6 ПерваяПервая 1234 ... ПоследняяПоследняя
Показано с 11 по 20 из 51

Тема: ПЛК73 и RS-485

  1. #11

    По умолчанию

    Увеличил таймаут(до 500мс), вроде как получилось прочитать данные. Но какая-то ерунда.
    Значение буфера разное, в зависимости от состояния read1modbus.Complete

    Когда тру:
    true.jpg

    И когда фальш, к сожалению картинка пропала. Но в буфере появляется Buffer[0]=10, которое в х не записывается, так как read1modbus.Complete=false

    Я читал регистр с адресом 0(модель преобразователя).
    model.jpg

    И на самом деле, модель моего преобразователя соответствует значению регистра 0: А в hex, то есть 10 в dec.
    Почему так происходит не пойму...
    Изображения Изображения
    • Тип файла: jpg false.jpg (220.9 Кб, Просмотров: 26)

  2. #12
    Пользователь
    Регистрация
    03.03.2008
    Адрес
    Новосибирск
    Сообщений
    238

    По умолчанию

    До того момента, как ФБ закончит работу, в буфере данные запроса, а не ответа. В модбасе первый байт - это адрес устройства. В данном случае как раз 10.
    Что можно сделать? Попробовать считать другой регистр. Если те же яйца, То можно попробовать подслушать "переговоры". Нужен будет преобразователь RS485 на USB или RS232. Ну а программ для прослушки полно.

  3. #13

    По умолчанию

    К сожалению, ничего прочитать правильно не удается(. Результат не совпадает с заявленным в документации. Может я неправильные блоки чтения использую или неправильно задаю количество ячеек?

    Можно подробнее про подслушку. Какое оборудование использовать, что можно этим добиться?

  4. #14
    Пользователь
    Регистрация
    03.03.2008
    Адрес
    Новосибирск
    Сообщений
    238

    По умолчанию

    Цикл контроллера чему равен?

  5. #15

    По умолчанию

    Цитата Сообщение от kgsh82 Посмотреть сообщение
    Цикл контроллера чему равен?
    Цикл 10 мс

  6. #16

    По умолчанию

    Смотрите, мне кажеться в ячейке с адресом 0х006 храниться так называемое командное слово, которое состоит из 12 бит.
    123.jpg

    Для того чтобы их считать, использовал фб MB_RD_INP_REGS. Какое значение в Quantity мне нужно подставить, чтобы считать эти 12бит?

    Я ставил 2, и вот что получилось:
    true1.jpg

    Из первого изображения следует, что привод должен вращаться в прямом направлении (БИТ2=1), но он не вращается...

  7. #17

    По умолчанию

    Есть небольшие продвижения. В преобразователе есть 8 адресов для чтения и 8 для записи, через которые можно получить доступ ко всем параметрам.
    Но теперь при попытке что нибудь считать Exception =2

    Где можно расшифровать, что это за ошибка?

  8. #18

    По умолчанию

    Сегодня столкнулся точно с такой-же проблемой, при чтении регистров по модбас из сигнализатора загазованности СТМ-30М получаю в буфере хаотичные значения.


    Код:
    	get1_modbus: MB_RD_HOLD_REGS; 
    
    	Buffer: ARRAY[0..255] OF BYTE; 
    	cmpl: BOOL;
    	port_opened: BYTE := 0;
    	Init: BOOL; 
    	Settings:COMSETTINGS;
    
    	enabl: BOOL; 
    	err: INT; 
    	TimeOut: TIME:=T#50ms;
    	Exception: BYTE;
    	DataSize: WORD;
    	master1: BYTE:= 0;
    	x1: WORD; 
    	x2: WORD; 
    	x3: WORD; 
    	x4: WORD;
    	x5: WORD; 
    	COM_SERVICE1: COM_SERVICE;
    Код:
    IF port_opened=0 THEN
    Settings.Port:=0; 
    Settings.dwBaudRate:=9600; 
    Settings.byParity:=0;
    Settings.dwTimeout:=0;
    Settings.byStopBits:=0;
    Settings.dwBufferSize:=0;
    Settings.dwScan:=0;
    END_IF
    
    COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );
    
    
    IF COM_SERVICE1.ready THEN port_opened:=2; END_IF
    
    IF port_opened=2 THEN 
    CASE master1 OF
    
    0: (* читаем из прибора с адресом 4 начиная с регистра 0 по протоколу MB-RTU*)
    get1_modbus(
    Enable:=enabl , 
    Mode:=MB_RTU , 
    DevAddr:=4 , 
    FirstAddr:=0 , 
    Quantity:=2, 
    ComHandle:=Settings.Port ,
    TimeOut:=TimeOut , 
    Buffer:=Buffer , 
    Complete=>cmpl , 
    Exception=>err , 
    ByteCnt=>DataSize ); 
    
    
    
    IF cmpl THEN
    	IF err=0 THEN 
    	x1:=BYTE_TO_WORD(BUFFER[1]) OR SHL(BYTE_TO_WORD(BUFFER[0]),8);
    	x2:=BYTE_TO_WORD(BUFFER[3]) OR SHL(BYTE_TO_WORD(BUFFER[2]),8);
        IF ((x1)AND(4096))=4096 THEN AVARIA_DVK_RESERV:=TRUE; END_IF;
    	END_IF
    
    	master1:=0; 
    END_IF
    
    END_CASE
    
    IF enabl = FALSE THEN enabl := TRUE; END_IF
    IF err <> 0 THEN enabl := FALSE; END_IF
    
    END_IF
    Как только cmpl становится TRUE - err равен 255, т.о. в x1 никогда не записывает значения из буфера. Что только не пробовал уже.

  9. #19
    Пользователь
    Регистрация
    03.03.2008
    Адрес
    Новосибирск
    Сообщений
    238

    По умолчанию

    Цитата Сообщение от Денис_Гуливатенко Посмотреть сообщение
    Есть небольшие продвижения. В преобразователе есть 8 адресов для чтения и 8 для записи, через которые можно получить доступ ко всем параметрам.
    Но теперь при попытке что нибудь считать Exception =2

    Где можно расшифровать, что это за ошибка?
    Полагаю в документации на Modbus. Гугл, яндекс - в помощь.

    Я бы вот что сделал:
    Установил бы OPC-сервер Лектус (или аналог). Собрал бы конфигурацию, согласно описанию на частотник и на сервер. Изучая лог работы, проще понять, что куда записывается и что откуда считывается. Потом бы перенес полученные знания на ПЛК.
    Дополнительно почитайте описание протокола Modbus

  10. #20
    Пользователь
    Регистрация
    03.03.2008
    Адрес
    Новосибирск
    Сообщений
    238

    По умолчанию

    Цитата Сообщение от AlexCrane Посмотреть сообщение
    Сегодня столкнулся точно с такой-же проблемой, при чтении регистров по модбас из сигнализатора загазованности СТМ-30М получаю в буфере хаотичные значения.


    Код:
        get1_modbus: MB_RD_HOLD_REGS; 
    
        Buffer: ARRAY[0..255] OF BYTE; 
        cmpl: BOOL;
        port_opened: BYTE := 0;
        Init: BOOL; 
        Settings:COMSETTINGS;
    
        enabl: BOOL; 
        err: INT; 
        TimeOut: TIME:=T#50ms;
        Exception: BYTE;
        DataSize: WORD;
        master1: BYTE:= 0;
        x1: WORD; 
        x2: WORD; 
        x3: WORD; 
        x4: WORD;
        x5: WORD; 
        COM_SERVICE1: COM_SERVICE;
    Код:
    IF port_opened=0 THEN
    Settings.Port:=0; 
    Settings.dwBaudRate:=9600; 
    Settings.byParity:=0;
    Settings.dwTimeout:=0;
    Settings.byStopBits:=0;
    Settings.dwBufferSize:=0;
    Settings.dwScan:=0;
    END_IF
    
    COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );
    
    
    IF COM_SERVICE1.ready THEN port_opened:=2; END_IF
    
    IF port_opened=2 THEN 
    CASE master1 OF
    
    0: (* читаем из прибора с адресом 4 начиная с регистра 0 по протоколу MB-RTU*)
    get1_modbus(
    Enable:=enabl , 
    Mode:=MB_RTU , 
    DevAddr:=4 , 
    FirstAddr:=0 , 
    Quantity:=2, 
    ComHandle:=Settings.Port ,
    TimeOut:=TimeOut , 
    Buffer:=Buffer , 
    Complete=>cmpl , 
    Exception=>err , 
    ByteCnt=>DataSize ); 
    
    
    
    IF cmpl THEN
        IF err=0 THEN 
        x1:=BYTE_TO_WORD(BUFFER[1]) OR SHL(BYTE_TO_WORD(BUFFER[0]),8);
        x2:=BYTE_TO_WORD(BUFFER[3]) OR SHL(BYTE_TO_WORD(BUFFER[2]),8);
        IF ((x1)AND(4096))=4096 THEN AVARIA_DVK_RESERV:=TRUE; END_IF;
        END_IF
    
        master1:=0; 
    END_IF
    
    END_CASE
    
    IF enabl = FALSE THEN enabl := TRUE; END_IF
    IF err <> 0 THEN enabl := FALSE; END_IF
    
    END_IF
    Как только cmpl становится TRUE - err равен 255, т.о. в x1 никогда не записывает значения из буфера. Что только не пробовал уже.
    255 - таймаут.

    Попробуйте увеличить время ожидания, ну и....электрическое соединение проверить. Про настройки не пишу - очевидно.
    Контроллер какой? ПЛК73? Минимальное время цикла сколько?

Страница 2 из 6 ПерваяПервая 1234 ... ПоследняяПоследняя

Похожие темы

  1. Золотые правила организации сети RS-485. Управление трмами по RS-485.
    от МихаилЯр в разделе Сетевые технологии
    Ответов: 80
    Последнее сообщение: 05.03.2024, 11:39
  2. Преобразователь (RS-232 to RS-422/485 ) Transio A52/53 и МУ110-8Р
    от Doomnik в разделе Эксплуатация
    Ответов: 5
    Последнее сообщение: 14.06.2012, 12:30
  3. Преобразование RS-232 в RS-485
    от dikens3 в разделе Подбор Оборудования
    Ответов: 4
    Последнее сообщение: 09.04.2012, 18:19
  4. Master Scada и счетчики с интерфесом RS-485 (RS-232)
    от Дениc в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 02.05.2009, 15:09

Ваши права

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