Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 37

Тема: Проблема опроса контроллером ПЛК110-М02 в режиме Master по протоколу Modbus RTU

  1. #21

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    "...то зачем ему делать таймаут 250мс ?" (C) Моя
    Валенок, без обид, но что-то Вы отклонились от дискуссии куда то не туда.
    Тролль-наседка, добрый, нежный и ласковый

  2. #22

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    в таком случае остаётся 2 варианта:
    1. Увеличивать таймаут до пропадания путаницы
    2. ввводить логический анализ - т.е. чередовать команды 3 и 4 в посылках. Большая часть slave трактуют 3 и 4 как обращение к одному и тому же значению, но мастер сможет определить, что в ответе неожидаемый номер команды и отбросить его.
    Чтобы чередовать - создавайте запросы с разными номерами команд. В конфигурации есть возможность, через библиотеки тем более
    Мое слейв-устройство поддерживает только две функции: 3-ю на чтение, 6-ую на запись. Как быть в данной ситуации?((((
    Не совсем понимаю, почему, например в ПЛК Сименс, я не чередую запросы, а просто прописываю функцию, которой считываю, 3-ю, начальный адрес и количество регистров, и там нет никаких проблем.... В чем разница ? объясните мне, бестолковой?((((

  3. #23

    По умолчанию

    С этим же устройством на тех же настройках? Обычно проблем подключить модуль через конфиурацию - 3 щелчка мыши.
    Проблемы начинатся с нестандартными slave.
    Тролль-наседка, добрый, нежный и ласковый

  4. #24

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Ожидаемо. А про "одновременно" не рассказали.
    Если проект не крепится, вы пряма сюды код запилите (только выкиньте все не про обмен)
    Библиотека одна, функции разные ))) пардон) если использую функцию библиотечную на чтение, то все работает, если в этот же проект добавляю функцию на запись, то начинается "сдвиг данных". так и в конфигураторе не работает даже считывание и запись по одному регистру(регистры,естественно разные, но одно устройство), там разные функции используются 3-я и 6-я.

  5. #25

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    С этим же устройством на тех же настройках? Обычно проблем подключить модуль через конфиурацию - 3 щелчка мыши.
    Проблемы начинатся с нестандартными slave.
    я Сименсом подключаюсь к этому же слейв-устройству (те же настройки), спокойно считываю и записываю данные - проблем нет. Овеном не получается(((

  6. #26

    По умолчанию

    вот "кусок" программы с функциями библиотечными:
    (*Номер последнего запроса-вычисляется только при вхождении в границы действующего количества слэйвов*)
    IF SlaveNumber<=KolSlave THEN
    StopNumber[PN][SlaveNumber]:=StartNumber[PN][SlaveNumber];
    ELSE
    StartNumber[PN][SlaveNumber]:=0;
    StopNumber[PN][SlaveNumber]:=0;
    END_IF

    (*Опрос устройства*)
    IF Number[PN]>=StartNumber[PN][SlaveNumber] AND Number[PN]<=StopNumber[PN][SlaveNumber] THEN
    IF FirstScan=0 THEN
    FirstScan:= 1;
    END_IF
    SN:=Number[PN]-StartNumber[PN][SlaveNumber]+1;

    (*Формирование послок*)
    FOR i:=1 TO 1 DO
    (*МADIO*)
    MB_SLAVE_SETTING[PN][i+(StartNumber[PN][SlaveNumber]-1)].DevAddr:=Address;
    MB_SLAVE_SETTING[PN][i+(StartNumber[PN][SlaveNumber]-1)].FirstAddr:=0;
    MB_SLAVE_SETTING[PN][i+(StartNumber[PN][SlaveNumber]-1)].Quantity:=3;
    END_FOR

    (*МADIO*)
    MB_RD_HOLD_REGS[PN](
    Enable:=TRUE ,
    Mode:=MB_RTU ,
    DevAddr:=MB_SLAVE_SETTING[PN][Number[PN]].DevAddr ,
    FirstAddr:=MB_SLAVE_SETTING[PN][Number[PN]].FirstAddr ,
    Quantity:=MB_SLAVE_SETTING[PN][Number[PN]].Quantity ,
    ComHandle:=PN ,
    TimeOut:=t#1000ms ,
    Buffer:=Buffer[PN] ,
    Complete=>MB_SLAVE_SETTING[PN][Number[PN]].Complete ,
    Exception=>MB_SLAVE_SETTING[PN][Number[PN]].Exception ,
    ByteCnt=>MB_SLAVE_SETTING[PN][Number[PN]].ByteCnt );
    (*Перевод Byte в Word, переход на следующий Number[PN]*)
    IF MB_SLAVE_SETTING[PN][Number[PN]].ByteCnt=MB_RD_HOLD_REGS[PN].Quantity*2 THEN
    FOR i:=1 TO MB_SLAVE_SETTING[PN][Number[PN]].Quantity DO
    ByteToWord(Byte01:=Buffer[PN][(i-1)*2+1] , Byte02:=Buffer[PN][(i-1)*2] , Word01=>Data_MADIO[i] );
    END_FOR
    END_IF
    (***Преобразование в BOOL***)
    FOR i:=1 TO 3 DO
    WordToBool(
    Word01:=Data_MADIO[i],
    BoolArray=>Data_MADIO_BOOL_temp);
    FOR j:=1 TO 16 DO
    Data_MADIO_BOOL[j+(i-1)*16]:=Data_MADIO_BOOL_temp[j];
    END_FOR
    END_FOR
    END_IF
    (*запись*)
    IF write_modbus_singl.Complete THEN
    value[1]:=DataMADIOWrite[1];
    END_IF

    write_modbus_singl(
    Enable:=TRUE ,
    Mode:=MB_RTU ,
    DevAddr:=100 ,
    RegAddr:=5 ,
    ComHandle:=2 ,
    TimeOut:=t#100ms ,
    Value:= value[1],
    Complete=>COMPL ,
    Exception=>EXCEP);

    (*1 группа выходов*)
    DataMADIOWrite[1].0:=0;
    DataMADIOWrite[1].1:=0;
    DataMADIOWrite[1].2:=0;
    DataMADIOWrite[1].3:=0;
    DataMADIOWrite[1].4:=0;
    DataMADIOWrite[1].5:=0;
    DataMADIOWrite[1].6:=0;
    DataMADIOWrite[1].7:=0;
    DataMADIOWrite[1].8:=MADIO_DO[1];
    DataMADIOWrite[1].9:=MADIO_DO[2];
    DataMADIOWrite[1].10:=MADIO_DO[3];
    DataMADIOWrite[1].11:=MADIO_DO[4];
    DataMADIOWrite[1].12:=MADIO_DO[5];
    DataMADIOWrite[1].13:=MADIO_DO[6];
    DataMADIOWrite[1].14:=MADIO_DO[7];
    DataMADIOWrite[1].15:=MADIO_DO[8];

  7. #27

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Сколько портов заюзано и кто на каком ?
    Запись ничем не отличается от чтения с точки зрения хождения пакетов.
    Порт - туалет. Все кто туда - стоят в одной очереди и ждут пока там - complete
    все порты используются, это в проекте с библиотеками, в данной части программы 2-й порт.
    Я сейчас создала новый проект, без использования библиотек и других портов, чисто на считывание 1-го регистра и запись одного регистра (пятого). Записывает без проблем, считать не могу, происходит "сдвиг данных". что он там сдвигает, если я считываю один регистр? таймаут опроса 500 мс. я уже не понимаю как настраивать ПЛК 110((((

  8. #28
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    Очень странный мастер, если за время таймаута не пришел ответ, то нечего его больше ждать, переходим к следующему запросу хоть того же слейва хоть следующего.

  9. #29

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    singl функции лучше не использовать, групповые функции вполне себе работают и с одним регистром
    я так понимаю singl функция - это как раз 6-я функция записи. если я возьму групповую. то там функция записи уже другая, разве нет? мое слейв-устройство поддерживает только 6-ую функцию для записи...

  10. #30

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Порт - он последовательный. И опрос нужно делать так же. У Вас - блок записи никак не связан с чтением.
    Грубый пример :

    Код:
    case step of
      0:
        читаем(...);
        if читаем.complete then
          ...
          step := 1;
        end_if
    
      1:
        пишем(...);
        if пишем.complete then
          ...
          step := 0;
        end_if
    end_case
    PS
    А сингл или еще чего - побоку

    PS
    И чего вообще опрашиваете и чего хотите записывать ?
    я использовала функцию "case", но все равно не работало( понимая, что могу что-то не так написать в программе, создала именно пустой проект и пытаюсь считать с регистр №1 данные и записать данные в регистр №5 слейв-устройства с адресом 100 через конфигуратор ПЛК, уже без библиотек. Не получается: только чтение 1-го регистра или только запись одного регистра работают. Складывается такое ощущение, что в один слейв я не могу и считать и записать данные в режиме Master, или я что-то делаю не так(
    Слейв устройство: модули ввода-вывода Мадио.

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Похожие темы

  1. Ответов: 10
    Последнее сообщение: 17.08.2017, 05:49
  2. Ответов: 15
    Последнее сообщение: 13.10.2016, 16:27
  3. Ответов: 4
    Последнее сообщение: 10.02.2015, 16:12
  4. ПЧВ3 проблема при опросе по протоколу ModBus RTU
    от Денис_NTS в разделе Эксплуатация
    Ответов: 12
    Последнее сообщение: 16.12.2014, 14:06
  5. Ответов: 3
    Последнее сообщение: 27.04.2014, 18:28

Ваши права

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