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

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

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

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    У вас есть 32 БИТа (с 0 по 31), они занимают всего 2 регистра, адреса 0 и 1 (4 байта). Пишу уже второй раз сделайте в конфигурции, добавив 4 шт 8Bit Input для чтения
    и 4 шт 8Bit Output для записи. В разных UMD (Универсал модбас девайс). В UMD для записи поставьте настройку By Value Change. Функция чтения 0x01 выставляется в настройках блока 8 bit input.
    Вложение 63005
    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 Кб, Просмотров: 3)
    Не зная броду, не суйся в воду. (Пословица.)
    Век живи, век учись(а умрешь дураком).
    Опыт растет прямо пропорционально выведенному из строя оборудованию.

  2. #12

    По умолчанию

    Цитата Сообщение от Пьер Посмотреть сообщение
    Вот ссылка на программу, всегда ошибка связи 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.

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

    По умолчанию

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

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

  4. #14

    По умолчанию

    Почти правильно, осталось поменять в RS485, 1 стоп бит на 2 стоп бит. Выше дописал уже.

    Ещё увидел в верхнем UMD, зачем Polling 1000 поставили, верните на 100.

    Сначала надо исправлять серьёзные ошибки вроде стоп битов (адрес слейва, скорость, чётность, стоп биты), а функцию вы всегда изменить сможете на 02, если 01 не работает.
    Последний раз редактировалось kondor3000; 07.10.2022 в 01:13.

  5. #15
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,271

    По умолчанию

    А какой тайный смысл во вставлянии одного и того же по 2 раза в umd ?

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

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Почти правильно, осталось поменять в RS485, 1 стоп бит на 2 стоп бит. Выше дописал уже.

    Ещё увидел в верхнем UMD, зачем Polling 1000 поставили, верните на 100.

    Сначала надо исправлять серьёзные ошибки вроде стоп битов (адрес слейва, скорость, чётность, стоп биты), а функцию вы всегда изменить сможете на 02, если 01 не работает.
    Не знаю, функцию на 8 bit input module менял на 01 и на 02, poling time на 100 поменял. И 2 стоп бита поставил. Посылки от меня принимает, Но не считывает ничего.
    Не зная броду, не суйся в воду. (Пословица.)
    Век живи, век учись(а умрешь дураком).
    Опыт растет прямо пропорционально выведенному из строя оборудованию.

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

    По умолчанию

    Цитата Сообщение от Пьер Посмотреть сообщение
    Не знаю, функцию на 8 bit input module менял на 01 и на 02, poling time на 100 поменял. И 2 стоп бита поставил. Посылки от меня принимает, Но не считывает ничего.
    На картинках адрес х03 или х300 , dec 3 и 768. Мне надо считать биты статуса, и информационные,
    не могу понять, запись идет, а считать никак не получается.
    Изображения Изображения
    Не зная броду, не суйся в воду. (Пословица.)
    Век живи, век учись(а умрешь дураком).
    Опыт растет прямо пропорционально выведенному из строя оборудованию.

  8. #18

    По умолчанию

    Цитата Сообщение от Пьер Посмотреть сообщение
    Не знаю, функцию на 8 bit input module менял на 01 и на 02, poling time на 100 поменял. И 2 стоп бита поставил. Посылки от меня принимает, Но не считывает ничего.
    Ошибки есть? Скрин конфигурации при работе выложите.

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

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Ошибки есть? Скрин конфигурации при работе выложите.
    Считывать пробовал и 01 и 02 функциями и регистры подставлял после битов и пробовал одни регистры считывать, как только не пробовал.
    Изображения Изображения
    Не зная броду, не суйся в воду. (Пословица.)
    Век живи, век учись(а умрешь дураком).
    Опыт растет прямо пропорционально выведенному из строя оборудованию.

  10. #20

    По умолчанию

    Цитата Сообщение от Пьер Посмотреть сообщение
    На картинках адрес х03 или х300 , dec 3 и 768. Мне надо считать биты статуса, и информационные,
    не могу понять, запись идет, а считать никак не получается.
    03 это 3 адрес бита. Никак не пойму как этой китайской хренью управлять, опыта не было.
    Запрос на чтение функция 01, биты 0 и 3. Ответ функция 01, бит 13.

    Зачем вы мне не работающую программу выкладываете по 5 штук? Мне в работе надо и ошибку посмотреть.
    Опять чтение с записью местами поменяли, зачем вы программу крутите всё время?
    Выкладываете одну, скрины присылаете другие, и всё не то что надо.
    Последний раз редактировалось kondor3000; 07.10.2022 в 21:13.

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

Ваши права

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