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

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

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    Пользователь Аватар для Пьер
    Регистрация
    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)
    Не зная броду, не суйся в воду. (Пословица.)
    Век живи, век учись(а умрешь дураком).
    Опыт растет прямо пропорционально выведенному из строя оборудованию.

Ваши права

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