Страница 779 из 1041 ПерваяПервая ... 279679729769777778779780781789829879 ... ПоследняяПоследняя
Показано с 7,781 по 7,790 из 10404

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #7781

    По умолчанию

    Доброго времени!
    Можно ли общаться с ПЛК110 М02 по протоколу DF1?
    Что то не получается связаться с Allen Bradley(((
    Пытаюсь через стандартный 232.
    Честно говоря я пока и не понял что такое этот DF1
    Может кто подскажет где найти описание этого DF1?

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

    По умолчанию

    TV13M ну вы барин вааще офигели . на сайте Rocwell Automation можно найти описание протокола на английском, вот только прочитать его с ПЛК110 вам придется попотеть изрядно. С одной стороны протокол описан, с другой стороны очень многообразен и со своими фишками. Например контрольная сумма может быть 1-но байтовой BCC а может быть 2-х байтовой CRC. байт 0х10 (DLE) дублируется, если попадается в блоке данных, при этом не участвует в расчете BCC или CRC и т.д... хотя в общем-то вполне логичный протокол.

    1770-rm516_-en-p.pdf - ищите и обрящите данный файл.

    я драйвер для Scada делал и то, реализовал только по одной функции чтения и записи из протокола. ПЛК ML1400

  3. #7783

    По умолчанию

    Всем здравствуйте!
    Прошу сильно не кидать камнями.
    Опрашиваю модуль по rs-485, запрос делаю строкой и беру все регистры, в структуре "modul_1" прописываю порядок регистров в строке.
    Далее в программе в массив "MVA_1" передаю строку запроса "mva_1_string".
    В массив D1[1]:=MVA_2^.two_1; таким обзором можно занести нужные мне данные.
    Но у меня вопрос как можно реализовать проход по массиву "MVA_1" циклом и выбрать только нужные данные например "two_1, two_2, two_n"

    --------в структуре
    TYPE modul_1 :
    STRUCT
    one_1:INT;
    two_1:INT;
    three_1:INT;
    four_1:INT;
    five_1:REAL;
    (* 2 *)
    one_2:INT;
    two_2:INT;
    three_2:INT;
    four_2:INT;
    five_2:REAL;
    (* n *)
    one_n:INT;
    two_n:INT;
    three_n:INT;
    four_n:INT;
    five_n:REAL;
    END_STRUCT
    END_TYPE

    --------в программе
    VAR
    MVA_1: POINTER TO modul_1;
    D1: ARRAY [1..8] OF INT ;
    END_VAR
    --------
    MVA_1:=ADR(mva_1_string); (* mva_1_string запрос всех регистров по rs-485 с модуля *)
    D1[1]:=MVA_1^.two_1;

  4. #7784

    По умолчанию

    Всем Привет!
    Объясните пожалуйста.
    Произвожу опрос МВА8 4,5 регистра.
    Данные из 4,5 регистра измерений передаются в формате 1,878787е+009.
    В структуре ставил тип WORD и REAL не помогло.
    Пробовал все преобразования но не смог получить величину температуры.

  5. #7785

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    надо было не на word менять, а в real байты местами перетасовать
    Подскажите по подробней как это сделать?

  6. #7786

    По умолчанию

    Зависит от того, чем Вы опрашиваете. Укажите ПО.

  7. #7787
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от ZETs Посмотреть сообщение
    Подскажите по подробней как это сделать?
    что содержиться в 3 регистре? Боюсь проблема не в получении адекватного значения
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  8. #7788

    По умолчанию

    Цитата Сообщение от ASo Посмотреть сообщение
    Зависит от того, чем Вы опрашиваете. Укажите ПО.
    Опрашиваю контроллером плк110 модуль мва8 по протоколу модбас рту.
    4,5 регистр в инструкции указан тип FLOAT32.

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

    По умолчанию

    переставить слова местами, проверить адреса регистров.

  10. #7790

    По умолчанию

    Спасибо всем большое.
    Еще вопросик.
    Каждому элементу массива соответствует своё n№.
    Подскажите как сделать например чтоб при DAT[2] выводилось TRUE в n2, при DAT[3] выводилось TRUE в n3.
    Можно ли в кодесис вывести нужную переменную?
    Выбором CASE это я знаю что возможно, может есть вариант по проще. )))

    VAR
    DAT: ARRAY [1..8] OF INT;
    n1,n2,n3,n4: BOOL;
    i:INT;
    ----------------
    FOR i := 1 TO 4 DO
    IF DAT[i] <>0 THEN
    n(???):=TRUE; (поставить номер переменной )
    END_IF;

Страница 779 из 1041 ПерваяПервая ... 279679729769777778779780781789829879 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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