Страница 5 из 7 ПерваяПервая ... 34567 ПоследняяПоследняя
Показано с 41 по 50 из 63

Тема: Библиотека UNM, отправка и получение запроса.

  1. #41
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    884

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение

    bytes[counter]:=^rb.data;
    counter +=1;

    А потом + нажимаете в массиве
    Компилятор усердно ругается на эту строчку
    bytes[counter]:=^rb.data;

    Сообщение 4268 Необходимо выражение.

    НО ведь у нас rb: pointer to RBDATA;
    А флаги и data могут же быть только если
    rb:rbdata;
    Так?

    Непонял строку -
    counter +=1;

    Я так понял - она просто указывает, какой байт нам нужно брать, так?

    И что значит нажимать + в массиве?



    Что-то вроде чувствуется что все оно рядом, но неполучается. Аж злость берет

  2. #42

    По умолчанию

    Очепяточка, привык к Си
    bytes[counter]:=rb^.data;

    counter:=counter+1;

  3. #43

    По умолчанию

    Цитата Сообщение от приборист Посмотреть сообщение
    И что значит нажимать + в массиве?

    Когда залогинетесь, рядом с определением массива появится плюсик...

  4. #44
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    884

    По умолчанию

    О чудо)
    Все работает)))
    Выводится то разное количество байт, но именно в виде, который мне нужен))

    Только вот байты передаются постоянно, и массив получается динамический.
    Нашел в каком байте у меня передается вес.
    Получилось что 8 по счету байт после команды 255 - и есть нужный вес.

    я попробовал вытащить его так:
    IF bytes[i]=255 THEN
    b:=bytes[i+8];
    END_IF;

    Что-то не получается.

  5. #45

    По умолчанию

    Вы мои предыдущие посты про машину состояний читали?

  6. #46
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    884

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Вы мои предыдущие посты про машину состояний читали?
    Я читал.

    Может быть звучит глупо, но мне кажется что проще было бы сделать так:

    Ищем символ начала ответа(в нашем случае) - 255
    Отсчитываем 8 принятый бит от него, который и будет его результатом.

    Соединение вроде устойчивое, 8 бит всегда остается на месте. И всегда показывает наш вес уже в нормальной форме.

    Не испытывал только при весе больше 100 кг. Но по идее то проблем не должно быть?

    Или я неправильно мыслю?

  7. #47

    По умолчанию

    Неправильно. Тут только одно решение надежно, и я его озвучил.
    Остальные гарантии не дают. Это сложно, муторно, но иначе надежную систему не сделать

  8. #48
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    884

    По умолчанию

    Кхм......Ясно.
    Ладно, тогда такой вопрос, получается создавая энту машину, мы перебираем каждый байт, переводим его в строку, сравниваем с оригиналом, если все сходится - кладем в общую строку, так?
    Потом из этой строки вытаскиваем опять таки нам нужную циферку.

    Полстроки я то знаю как расшифровать. А вот как остальную половину даже предположить не могу.
    Как с этим быть?

    И можно ли вообще работать с Byte в кодесис?
    Или надо обязательно переводить сначала в другое чтото?

    Так по хорошему если бы можно было работать с Byte из массива - было бы неочень сложно. А вот если все это переводить - вот это да...


    Вроде казалось все просто и близко, а оказалось все нетак((

  9. #49

    По умолчанию

    1. Прочитайте мурзилку на весы. Там каждый байт описан.
    2. А почему нельзя работать с Byte[]? Очень даже можно.

  10. #50
    Пользователь
    Регистрация
    30.07.2013
    Адрес
    Калининград
    Сообщений
    23

    По умолчанию

    Позанимаюсь некропостингом, потому что данная тема помогла некоторое время назад разобраться со связью с измерителем иммитанса, сейчас зашла речь подключить к плк100 блок управления коллекторными двигателями BMSD.
    Здесь исходя из мануала команда управления идет в 5 байт:
    байт1 - Е6 - заголовок (фиксированный)
    байт2 - 02 - в моем случае это адрес блока. Его я прописал, когда присоединил блок к ноутбуку и через утилиту сконфигурировал его.
    байт3 - Одна из 10 команд управления: задание скорости, ускорения\замедления двигателя, вкл.\выкл. двигатель и т.п.
    байт4 - Данные, относящиеся к конкретной команде
    байт5 - CRC по алгоритму CRC8
    В принципе, используя данные выше в теме рассуждения, удается принимать данные от устройства, однако, к примеру, исходя из нижеприведенного кода:
    state:=LockDevice(0);
    Setdata:=SetByte(0,'$E6$02$A5$01$00',5);
    GetData:=GetByte(0);
    WHILE getdata<>0 DO
    getdata:=GetByte(0);
    getdataarray[j]:=getdata^.data;
    j:=j+1;
    END_WHILE;
    j:=0;
    по такой команде устройство дает ответ, записываемый в массив, также из 5 байт. И на все команды ответ подается, кроме команд пуска и выключения движка. Их оператор SetByte отправляет, но в GetByte ничего не приходит, то есть команда теряется неизвестно где. Соответственно, программно запустить двигатель не удается. Когда он запущен вручную - регулировка скорости и параметров из программы работает.

    При аналогичных манипуляциях через преобразователь АС4 от ОВЕН, с пом. утилиты com port toolkit вбиваю те же команды в порт и получаю адекватные ответы, все пускается, работает, ускоряется\замедляется, выключается.
    Например на серию команд
    $E6$02$A5$01$00
    $E6$02$A6$0C$A8
    $E6$02$A7$01$91
    $E6$02$A3$08$36
    $E6$02$51$00$FC
    Происходит подготовка двигателя, задание начальных параметров работы и его пуск.
    Аналогичная серия команд в codesys приводит к тому, что обрабатываются первые 4 команды, все как положено, на пятой, т.е. при пуске двигателя по команде 51 в GetByte возвращается 0 и ничего не происходит.
    Последний раз редактировалось Сергей Сподрин; 19.09.2013 в 16:39.

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

Ваши права

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