Страница 603 из 1190 ПерваяПервая ... 1035035535936016026036046056136537031103 ... ПоследняяПоследняя
Показано с 6,021 по 6,030 из 11900

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

  1. #6021

    По умолчанию

    Перевод всего опроса на Modbus.lib решит ваши проблемы.

  2. #6022

    По умолчанию

    Цитата Сообщение от Sheldon Посмотреть сообщение
    Может можно как то считать в массив в конфигураторе?
    Можно:
    Добавьте в конфигурацию "String input modul".
    В его настройках укажите сколько байт необходимо считать.

    Чтобы не считывать данные циклически: добавьте еще один Universal Modbus device.
    В настройках укажите
    Work mode: by command;
    Вложение 33207

    Привяжите переменную, по изменению которой на 255 будет происходить опрос
    Вложение 33208

  3. #6023

    По умолчанию

    Цитата Сообщение от Осинский Алексей Посмотреть сообщение
    Можно:
    Добавьте в конфигурацию "String input modul".
    В его настройках укажите сколько байт необходимо считать.
    Спасибо! Пошли конструктивные советы.
    Пробовал раньше так, но почему-то оно в строку не считывает фиксированное количество байт, а каждый раз разное. Видимо если переменная имеет код спецсимвола, а не букву, то прием прерывается

  4. #6024

    По умолчанию

    Цитата Сообщение от Sheldon Посмотреть сообщение
    Спасибо! Пошли конструктивные советы.
    Пробовал раньше так, но почему-то оно в строку не считывает фиксированное количество байт, а каждый раз разное. Видимо если переменная имеет код спецсимвола, а не букву, то прием прерывается
    Строки в CODESYS нуль-терминированная.
    Это значит, что если в считанном массиве будет байт равный 16#0, то дальнейшие байты не будут отображаться и функциями для работы со строками их невозможно будет получить.
    Варианты
    1) читать данные в переменную типа ARRAY [0..к-во байт] OF BYTE
    2) читать данные в STRING, но разбирать через библиотеку для работы с памятью SysMem и указатели.

    1й проще и предпочтительнее.

  5. #6025

    По умолчанию

    Цитата Сообщение от Осинский Алексей Посмотреть сообщение
    Строки в CODESYS нуль-терминированная.
    Это значит, что если в считанном массиве будет байт равный 16#0, то дальнейшие байты не будут отображаться и функциями для работы со строками их невозможно будет получить.
    Варианты
    1) читать данные в переменную типа ARRAY [0..к-во байт] OF BYTE
    2) читать данные в STRING, но разбирать через библиотеку для работы с памятью SysMem и указатели.

    1й проще и предпочтительнее.
    А как конфигуратору указать что бы он читал в мой массив ARRAY [0..к-во байт] OF BYTE? Ему же просто задаешь имя переменной в которую он читает строку и она строкового типа...
    Если объявляю массив с таким же именем, то ругается при компиляции.
    Вложение 33211

  6. #6026

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Мастер - это не железо, а действие.
    В данном случае проблема вероятнее всего не в том, кто мастер, а в том, что COM-порт занимает библиотека и конфигурация его открыть не может.

  7. #6027
    Banned
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,664

    По умолчанию

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

  8. #6028

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    мне тоже кажется странным, что вместо того чтоб объяснить человеку, что надо поднимать свой уровень подготовки,модератор начинает критиковать правильно ли я использую термины
    Общаясь на форуме Sheldon и повышает свой уровень знаний.
    Отвечая на такие вопросы мы поднимаем не только его уровень знаний, но и другим, которые придут с подобными вопросами.

  9. #6029

    По умолчанию

    Цитата Сообщение от Sheldon Посмотреть сообщение
    А как конфигуратору указать что бы он читал в мой массив ARRAY [0..к-во байт] OF BYTE? Ему же просто задаешь имя переменной в которую он читает строку и она строкового типа...
    Если объявляю массив с таким же именем, то ругается при компиляции.
    Вложение 33211
    Вариант 1:

    Объявить переменную, указав где в памяти расположены ее данные:
    Вложение 33231

    Вариант 2:
    Привязать переменную в конфигурации и работать с данными по указателю на нее:
    Вложение 33230

    Хочу обратить внимание, что некорректная работа с указателями (вариант 2) может привести к тяжело отслеживаемым проблемам.
    Поэтому:
    1) Перед обращением к указателю удостоверьтесь, что он инициализирован (не равен 0);
    2) Удостоверьтесь, что не выходите за границы выделенной памяти (индекс массива в данном случае не должен быть выше выделенной области памяти).

  10. #6030

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    мне тоже кажется странным, что вместо того чтоб объяснить человеку, что надо поднимать свой уровень подготовки,модератор начинает критиковать правильно ли я использую термины
    Я сюда и пришел что бы его поднять при помощи людей которые профессионалы в этой области, а Ваши уважаемый товарищ capzap ответы в стиле "машина не едет потому что колеса не крутятся" только эфир засоряют и не приближают к решению проблемы.
    Осинский Алексей большое спасибо!!! Узнаю от Вас много полезного, побольше бы таких людей! Попробую с указателями, если что-то не пойдет, буду писать вручную весь опрос по старинке.

Страница 603 из 1190 ПерваяПервая ... 1035035535936016026036046056136537031103 ... ПоследняяПоследняя

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

Ваши права

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