Страница 605 из 737 ПерваяПервая ... 105505555595603604605606607615655705 ... ПоследняяПоследняя
Показано с 6,041 по 6,050 из 7362

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

  1. #6041

    По умолчанию

    Продолжим издеваться, не приходило в голову что два мастера в сети ( конфигуратор и библиотечный) быть не должно?
    В сети один мастер - ПЛК. А то что в программе при открытии порта "ручками" затыкается автоматический обмен это не значит что мастера в сети 2, а скорее всего что такое использование не предусмотрено, а как запустить автоматический обмен после того как он заткнулся - я не знать)
    Цитата Сообщение от Осинский Алексей Посмотреть сообщение
    Это не совсем верный подход.
    Какую задачу Вы решаете таким образом?
    Опишите, пожалуйста, подумаем как решить.
    В панели помимо переменных которые нужно считывать постоянно как это делает конфигуратор, есть еще большая таблица в ПЗУ(массив регистров PFW), которую нужно считывать очень редко (при загрузке, либо когда ее изменили в процессе работы). Даже один процесс задания переменных в количестве 50-100шт не очень прельщает. Может можно как то считать в массив в конфигураторе?
    Последний раз редактировалось Sheldon; 19.09.2017 в 10:32.

  2. #6042

    По умолчанию

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

  3. #6043

    По умолчанию

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

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

    Привяжите переменную, по изменению которой на 255 будет происходить опрос
    Image 3.png
    Последний раз редактировалось Осинский Алексей; 19.09.2017 в 12:17.

  4. #6044

    По умолчанию

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

  5. #6045

    По умолчанию

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

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

  6. #6046

    По умолчанию

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

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

  7. #6047

    По умолчанию

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

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

    По умолчанию

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

  9. #6049

    По умолчанию

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

  10. #6050

    По умолчанию

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

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

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

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

Страница 605 из 737 ПерваяПервая ... 105505555595603604605606607615655705 ... ПоследняяПоследняя

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

Ваши права

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