Страница 4 из 7 ПерваяПервая ... 23456 ... ПоследняяПоследняя
Показано с 31 по 40 из 76

Тема: ПЛК110-30-М02 нестандартный проткол к весам ВСП4

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    20.05.2021
    Адрес
    г.Челябинск
    Сообщений
    36

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Так вы не написали, если подключиться к линии при помощи ПК, то какие наборы байт вы видите в посылках ?
    Например:в десятичном коде 119,119,152,152,76,76,38,38,90,157,53,10,119,119,1 52,152,76,76,38,38,9,90,157,53,10,119,119,152

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

    По умолчанию

    И опять спрошу, не проще читать буфером в 1 байт ловя 0x0A и потом читать буфер в 14 байт с полноценным ответом и далее его разбирать, проверив и первый и второй и последние байты в уверенности целостности пакета ? Или потом читать уже постоянно по 14 байт, а в случае нарушения пакета переходить к поиску нужного байта ?

  3. #3
    Пользователь
    Регистрация
    20.05.2021
    Адрес
    г.Челябинск
    Сообщений
    36

    По умолчанию

    Написал новый код.
    PROGRAM PLC_PRG
    VAR
    portReady:BOOL;
    port:COMSETTINGS:=(Port:=COM1,dwBaudRate:=9600,byS topBits:=0,byParity:=1,dwBufferSize:=28);
    buf:ARRAY[0..27]OF BYTE;(*данные из весов через RS232*)
    bufCopy:ARRAY[0..27]OF BYTE;
    buf1:ARRAY[0..7]OF BYTE;(*массив веса*)
    bufzero:ARRAY[0..27]OF BYTE:=28(0);
    i:INT:=0;
    i1:INT:=0;
    i3:INT:=0;
    dIWWORD:=0;
    END_VAR
    WHILE dIW<>5000000 DO
    dIW:=dIW+1;
    END_WHILE
    dIW2:=dIW2+1;
    IF portReady=FALSE THEN(* Сразу открываем и настраиваем порт *)
    portReady:=TRUE;
    SysComOpen(port.Port);
    SysComSetSettings(port.Port,ADR(port));
    SysComRead(port.Port, ADR(buf),28,0);
    ELSE(* Работаем с открытым портом *)
    SysComRead(port.Port, ADR(buf),28,0);
    END_IF
    bufCopy:=buf;
    WHILE (i<=27)AND(i3=0)DO
    IF bufCopy[i]=119 THEN
    i3:=1;
    FOR i1:=0 TO 7 DO
    buf1[i1]:=bufCopy[i+i1+2];
    END_FOR
    END_IF
    i:=i+1;
    END_WHILE
    i:=0;
    i3:=0;
    buf:=bufzero;
    dIW:=0;
    В нем я изменил скорость обмена на 9600, добавил обнуление буфера перед чтением данных.
    Сразу принимаю 28 байт, делаю его копию и ищу код 119, затем сохраняю в массив buf1 чисто данные веса.
    Еще добавил выдержку времени ( простой счетчик через WHILE, через таймер TON у меня не получилось).
    Данные идут, но логики в них нет.

  4. #4
    Пользователь
    Регистрация
    20.05.2021
    Адрес
    г.Челябинск
    Сообщений
    36

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Порно осталось.
    А что это за процедура "SysComRead" ?


    ps
    процедура == program (местный) == void == ...
    Это из библиотеки SysLibCom функция чтения из порта.

  5. #5
    Пользователь
    Регистрация
    20.05.2021
    Адрес
    г.Челябинск
    Сообщений
    36

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Функция ? Ничего себе. А вызываете как процедуру. Ничего не забыли ?


    ps
    Про чутьвышесказанное Sergey666 кстати да.
    Выкладывайте сам проект а не левые кусочки.
    А почему я не могу просто вызвать функцию? Если мне не нужно возвращаемое значение .
    Хотя в описании библиотеки SysLibCom написано, что это функция, скорее это функциональный блок.

  6. #6
    Пользователь
    Регистрация
    20.05.2021
    Адрес
    г.Челябинск
    Сообщений
    36

    По умолчанию

    Вложение 57186
    Вот скриншот с плк.

  7. #7
    Пользователь
    Регистрация
    20.05.2021
    Адрес
    г.Челябинск
    Сообщений
    36

    По умолчанию

    Вообще, я заметил, что если гонять программу по шагам, то буфер buf заполняется полностью (хотя также хаотично). Если программу запускать без остановок, то в буфер записывается только 8 байт, остальные остаются нулевыми. Выдержка времени увеличивает буфер, но все равно на сами данные это не влияет.

  8. #8
    Пользователь
    Регистрация
    20.05.2021
    Адрес
    г.Челябинск
    Сообщений
    36

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Порно осталось.
    А что это за процедура "SysComRead" ?


    ps
    процедура == program (местный) == void == ...
    Это из библиотеки SysLibCom функция чтения из порта.

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

    По умолчанию

    почему у вас дважды идут одни и те же байты? в документации вроде такого нет ? первые 0x77 0x6E то есть 119 110 а у вас 4 раза подряд повторы
    В конце 53 10 есть а должно быть 13 10 (0x0D 0x0A)

    похоже что-то со скоростями не складуха или еще с чем-то. У вас там контроль четности не включен случайно ?
    хотя контроль четности должен только старший бит менять, а у вас лажа какая-то
    Последний раз редактировалось melky; 28.09.2021 в 09:33.

  10. #10
    Пользователь
    Регистрация
    20.05.2021
    Адрес
    г.Челябинск
    Сообщений
    36

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    почему у вас дважды идут одни и те же байты? в документации вроде такого нет ? первые 0x77 0x6E то есть 119 110 а у вас 4 раза подряд повторы
    В конце 53 10 есть а должно быть 13 10 (0x0D 0x0A)

    похоже что-то со скоростями не складуха или еще с чем-то. У вас там контроль четности не включен случайно ?
    хотя контроль четности должен только старший бит менять, а у вас лажа какая-то
    В том то и дело,что таких данных не должно быть.
    В конфигурации ПЛК в параметрах порта Parity стоит ODD ( нечет).
    Последний раз редактировалось павелсиражев; 28.09.2021 в 09:49.

Страница 4 из 7 ПерваяПервая ... 23456 ... ПоследняяПоследняя

Похожие темы

  1. Нестандартный отчет
    от Terminat в разделе Master SCADA 3
    Ответов: 3
    Последнее сообщение: 27.10.2017, 10:23
  2. Нестандартный протокол
    от SVVSVA в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 08.09.2011, 14:18
  3. нестандартный протокол
    от niklud19511 в разделе Сетевые технологии
    Ответов: 1
    Последнее сообщение: 05.05.2011, 14:02
  4. Нестандартный протокол
    от Евгений Владимирович в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 28.02.2010, 23:22
  5. Нестандартный протокол
    от Klik в разделе ПЛК1хх
    Ответов: 36
    Последнее сообщение: 03.03.2008, 13:49

Ваши права

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