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

Тема: ПЛК 154 + ModBus проблема

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    У вас есть 32 БИТа (с 0 по 31), они занимают всего 2 регистра, адреса 0 и 1 (4 байта). Пишу уже второй раз сделайте в конфигурции, добавив 4 шт 8Bit Input для чтения
    и 4 шт 8Bit Output для записи. В разных UMD (Универсал модбас девайс). В UMD для записи поставьте настройку By Value Change. Функция чтения 0x01 выставляется в настройках блока 8 bit input.
    1 Чтение бит.jpg
    29 бит (Coil ) это регистр с адресом 1, бит 13.
    Если вы читаете биты используйте 01 функцию, если читаете регистры, то функция 03 - холдинг регистры, 04 - инпут регистры
    Биты это не регистры, функции 03, 04, 06 выкиньте вообще из программы. Проект выкладывайте полностью, а не кусками как вы.
    И скрины нужны работы программы, а не сервера.
    Последний раз редактировалось kondor3000; 06.10.2022 в 21:32.

  2. #2
    Пользователь Аватар для Пьер
    Регистрация
    26.01.2011
    Адрес
    Земля
    Сообщений
    519

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    У вас есть 32 БИТа (с 0 по 31), они занимают всего 2 регистра, адреса 0 и 1 (4 байта). Пишу уже второй раз сделайте в конфигурции, добавив 4 шт 8Bit Input для чтения
    и 4 шт 8Bit Output для записи. В разных UMD (Универсал модбас девайс). В UMD для записи поставьте настройку By Value Change. Функция чтения 0x01 выставляется в настройках блока 8 bit input.
    1 Чтение бит.jpg
    29 бит (Coil ) это регистр с адресом 1, бит 13.
    Если вы читаете биты используйте 01 функцию, если читаете регистры, то функция 03 - холдинг регистры, 04 - инпут регистры
    Биты это не регистры, функции 03, 04, 06 выкиньте вообще из программы. Проект выкладывайте полностью, а не кусками как вы.
    И скрины нужны работы программы, а не сервера.
    Вот ссылка на программу, всегда ошибка связи 81. Это если собирать по конфигуратору.

    Через библиотеку Modbus вот программа текст. При чтении coils по 01 ошибка тймаута 255. Изменял таймаут от 10 мс до 2 сек , все равно ошибка, и данные в буфер не падают. Но отправить данные могу.
    Скрытый текст:


    Settings.Port:=com_num;
    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 );
    port_opened:=2;
    END_IF

    IF port_opened=2 THEN
    RCoils(
    Enable:=enable6 ,
    Mode:=MB_RTU ,
    DevAddr:=1 ,
    FirstAddr:=rc1 ,
    Quantity:=rc2 ,
    ComHandle:=Settings.Port ,
    TimeOut:=TimeOut ,
    Buffer:=Buffer10 ,
    Complete=>cmpl1 ,
    Exception=>err1 ,
    ByteCnt=>DataSize );

    IF cmpl1 THEN
    t30:=RCoils.Exception;
    IF RCoils.Exception=0 THEN



    ptr_byte:=ADR(In_1);
    ptr_byte^:=buffer10[4];
    ptr_byte:=ptr_byte+1;
    ptr_byte^:=buffer10[5];
    (*ptr_byte:=ptr_byte+1;
    ptr_byte^:=buffer10[3];
    ptr_byte:=ptr_byte+1;
    ptr_byte^:=buffer10[2];*)

    enable6 := FALSE;

    ss:=FALSE;

    ELSE t14:=t14+1;
    ;
    END_IF
    END_IF

    END_IF
    Вложения Вложения
    • Тип файла: pro 123.pro (36.6 Кб, Просмотров: 4)
    Не зная броду, не суйся в воду. (Пословица.)
    Век живи, век учись(а умрешь дураком).
    Опыт растет прямо пропорционально выведенному из строя оборудованию.

  3. #3

    По умолчанию

    Цитата Сообщение от Пьер Посмотреть сообщение
    Вот ссылка на программу, всегда ошибка связи 81. Это если собирать по конфигуратору.

    Через библиотеку Modbus вот программа текст. При чтении coils по 01 ошибка тймаута 255. Изменял таймаут от 10 мс до 2 сек , все равно ошибка, и данные в буфер не падают. Но отправить данные могу.
    Вы даже по написанному не можете сделать или очень невнимательны.
    Написано поставить By Value Change для записи, вы её воткнули для чтения. На вашем скрине сервера 2 стоп бит, а в программе 1 стоп бит. Поэтому и ошибка.
    Написано для чтения в параметрах каждого модуля поставить функцию 01, у вас на первом модуле осталось 02.
    На 3 модуле вместо 1 регистра осталось 0.
    На скрине всё для вас подписал, где чтение, где запись и номера битов и регистров.

    В программе с библиотекой одни ошибки, не трогайте пока её. Вы вообще не понимаете, что делаете. (Вкратце нужно читать биты, а вы из байт пытаетесь собрать FLOAT, мало того из разных байт относящихся к разным FLOAT).
    Последний раз редактировалось kondor3000; 07.10.2022 в 00:39.

  4. #4
    Пользователь Аватар для Пьер
    Регистрация
    26.01.2011
    Адрес
    Земля
    Сообщений
    519

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Вы даже по написанному не можете сделать или очень невнимательны.
    Написано поставить By Value Change для записи, вы её воткнули для чтения. Поэтому и ошибка.
    Написано для чтения в параметрах каждого модуля поставить функцию 01, у вас на первом модуле осталось 02.
    На 3 модуле вместо 1 регистра осталось 0.
    На скрине всё для вас подписал, где чтение, где запись и номера битов и регистров.

    В программе с библиотекой одни ошибки, не трогайте пока её. Вы вообще не понимаете, что делаете. (Вкратце нужно читать биты, а вы из байт пытаетесь собрать FLOAT, мало того из разных байт относящихся к разным FLOAT).
    Программу переделал
    вот ссылка на орс сервер, там считывают 02 команда DisInputs
    вот на программу, вроде все правильно
    Вложения Вложения
    • Тип файла: pro 1234.pro (62.5 Кб, Просмотров: 4)
    Не зная броду, не суйся в воду. (Пословица.)
    Век живи, век учись(а умрешь дураком).
    Опыт растет прямо пропорционально выведенному из строя оборудованию.

Ваши права

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