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

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

  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
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,243

    По умолчанию

    мне тоже кажется странным, что вместо того чтоб объяснить человеку, что надо поднимать свой уровень подготовки,модератор начинает критиковать правильно ли я использую термины
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  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 из 1042 ПерваяПервая ... 103503553593601602603604605613653703 ... ПоследняяПоследняя

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

Ваши права

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