Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 30

Тема: Modbus опрос ПЛК

  1. #11

    По умолчанию Как записать/прочитатьword

    Подскажите пожалуйста как записать/прочитать bit в word. Получается только через byte %QB8.1.0 --> %QX8.1.0.0. С word такая фишка не прокатывает(%QW8.1.0 --> %QX8.1.0.0, x:=temp.0;temp.0:=x не вариант( ), как быть?

  2. #12

    По умолчанию

    Есть библиотека Util.lib посмотрите.
    byte в ворд переводится либо оператором byte_to_word либо складыванием двух байтов (старший перед этим умножаем на 255)

  3. #13

    По умолчанию

    Нужно производить запись/чтение бита, а носителем информации о бите должно быть слово.Не получается присвоение %QX8.1.0.0, если в конфигурации modbus tcp массив из word.

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

    По умолчанию

    Цитата Сообщение от sink3d Посмотреть сообщение
    Подскажите пожалуйста как записать/прочитать bit в word. Получается только через byte %QB8.1.0 --> %QX8.1.0.0. С word такая фишка не прокатывает(%QW8.1.0 --> %QX8.1.0.0, x:=temp.0;temp.0:=x не вариант( ), как быть?
    Во первых переходите на именование канала, чтоб обращаться к нормальной переменной а не через процент, далее делаете такую запись foo:= (SHR(bar,13) & 0x01)>0
    Так Вы узнаете состояние тринадцатого бита переменной бар

  5. #15

    По умолчанию

    Это все понятно. Проблема в другом, как одновременно читать и писать в переменную.Пример:
    var
    Value1:bool;
    end_var;
    ------------------------
    Value AT %QW8.1.0:word;
    Value1:=Value.0; \\Все прекрасно работает, теперь как записать значение из переменной Value1 в Value.0?
    Если сюда же вписать:
    Value.0:=Value1; // Тоже все ок.А вот если бы переменная Value1 имела бы общую память с Value.0 проблемы бы не было.

    Но не одновременно:
    Value1:=Value.0;
    Value.0:=Value1;
    // Здесь ерунда получается.А вот если бы переменная Value1 имела бы общую память с Value.0 проблемы бы не было.
    Проблема в записи чтении одной и той же переменной через другую.

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

    По умолчанию

    я честно от Вашей логики в шоке, Вы слышали что нибудь о таких логических функциях как AND и OR, ищите библиотеку на oscat.de, в ней функцию BIT_LOAD_BYTE и будет Вам счастье

  7. #17

    По умолчанию

    Вы меня не поняли.Ну ладно, я пошел по другому пути.Я пишу в байты, а читаю OPC сервером Word.Спасибо.

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

    По умолчанию

    я про байты начал, потому что указатели обращаются к байтам, а с ними (указателями) Вам еще придется столкнуться в свое время. А если бы не поленились и заглянули в указанную бибку то нашли бы там рядом такие функции, как BIT_LOAD_B2, BIT_LOAD_W, BIT_LOAD_W2, BIT_LOAD_DW и BIT_LOAD_DW2, а так же всевозможные обратные преобразования

  9. #19

    По умолчанию

    Спасибо за библиотеку, довольно полезная штука. Я теперь понял ход ваших мыслей, я почти об этом и спрашивал. Но без использования операций над битами, думал в codesys есть возможность просто обращаться к битам типо есть %DW8.1.0 ,а что бы к биту обратиться %DX8.1.0.0 но увы я так понял что нельзя, 500 переменных через функции это " некрасиво" получается.Все всем спасибо, буду дальше работать.

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

    По умолчанию

    Цитата Сообщение от sink3d Посмотреть сообщение
    думал в codesys есть возможность просто обращаться к битам типо есть %DW8.1.0
    и это тоже возможно, то о чем я написал в первую очередь, ну раз это прпустили повторю подробнее, открываем документ http://www.kipshop.ru/CoDeSys/steps/...figuration.pdf, последний абзац на 13 странице и рисунок 1.6 на 14 странице, канал станет с обычным названием переменной, к котрой можно обращаться через точку чтоб считать или записать разряд

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

Ваши права

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