Страница 687 из 857 ПерваяПервая ... 187587637677685686687688689697737787 ... ПоследняяПоследняя
Показано с 6,861 по 6,870 из 8567

Тема: CODESYS V3.5. Вопросы и ответы

  1. #6861
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,635

    По умолчанию

    Цитата Сообщение от Андрей999 Посмотреть сообщение
    Здравствуйте еще раз! Пытался настроить слежение. Выдает ошибку. Не понимаю почему он ругается, ведь адрес буфера присутствует.
    Вложение 74167
    Добрый день.
    На входы pData и szSize требуется передать указатель на буфер самого слэйва и его (буфера) размер в байтах соответственно.

  2. #6862

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Там прям на скриншоте виден код ошибки: INVALID_DATA_POINTER.
    Да, но ведь я подал адрес на pSpyData. Получается надо одинаковый адрес и размер буфера подавать на szSize, pData и pSpyData, szSpyData? Но ведь первая пара используется для чистого Slave, а вторая для "прослушки"? Или я что-то не понял?

  3. #6863
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,635

    По умолчанию

    Цитата Сообщение от Андрей999 Посмотреть сообщение
    Да, но ведь я подал адрес на pSpyData. Получается надо одинаковый адрес и размер буфера подавать на szSize, pData и pSpyData, szSpyData? Но ведь первая пара используется для чистого Slave, а вторая для "прослушки"? Или я что-то не понял?
    Не одинаковые, а разные. Это два разных буфера.

  4. #6864

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Не одинаковые, а разные. Это два разных буфера.
    Да, кажется понял. То есть по сути блок копирует данные из запросов к определенному регистру, поэтому этот регистр надо указывать? Я так понял функция определяется автоматически. А что делать, если адрес данных - 0х0000 [0], а блок ругается на нулевой адрес ?

  5. #6865
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,635

    По умолчанию

    Цитата Сообщение от Андрей999 Посмотреть сообщение
    Да, кажется понял. То есть по сути блок копирует данные из запросов к определенному регистру, поэтому этот регистр надо указывать? Я так понял функция определяется автоматически. А что делать, если адрес данных - 0х0000 [0], а блок ругается на нулевой адрес ?
    Никаких регистров указывать не надо.
    Если блог "ругается на нулевой адрес" - значит, вы что-то делаете не так.
    Продемонстрируйте эту ошибку скриншотом.

  6. #6866

    По умолчанию

    Добрый день. Подскажите такой момент. При создании экземпляра структуры с помощью оператора __NEW по условию, возможно ли обращение к предыдущему экземпляру, если условия срабатывает повторно? Нужно ли для этого создавать отдельную переменную или массив? Что происходит с зарезервированной для экземпляра памятью, если я создаю ещё один экземпляр, но не сохраняю адрес предыдущего в отдельный указатель?

  7. #6867
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,635

    По умолчанию

    Цитата Сообщение от alixx Посмотреть сообщение
    Добрый день. Подскажите такой момент. При создании экземпляра структуры с помощью оператора __NEW по условию, возможно ли обращение к предыдущему экземпляру, если условия срабатывает повторно? Нужно ли для этого создавать отдельную переменную или массив? Что происходит с зарезервированной для экземпляра памятью, если я создаю ещё один экземпляр, но не сохраняю адрес предыдущего в отдельный указатель?
    Добрый день.

    1. Да.
    2. Нужно сохранить указатель, полученный при вызове __NEW.
    3. Ничего.

  8. #6868

    По умолчанию

    alixx Попробую ответить схематически (не до конца уверен в точности ответов).
    Если тут всё работает так же, как в СИ-подобных языках, то __NEW просто всегда выделяет новую память. Старая остаётся выделенной до тех пор, пока программа не закончит работу (то есть, ПЛК не выключат). Это будет приводить к утечкам памяти. Например, через какое-то время свободная память кончится - и программа в ПЛК даст сбой.
    Поэтому так обычно не делают. Обычно, если надо просто указать какой-то адрес чего-то для буфера - то этот буфер объявляют как переменную и потом при помощи оператора ADR() указывают её адрес (для приёма данных, например).
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  9. #6869

    По умолчанию

    То есть если использовать только один указатель, непосредственно для сохранения адреса, то при повторном срабатывании условия он перепишется и его значение будет утеряно навсегда...А не будет ли ошибкой создать в самой структуре переменную типа DWORD и сохранять адрес в ней же?

  10. #6870
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,635

    По умолчанию

    Цитата Сообщение от alixx Посмотреть сообщение
    То есть если использовать только один указатель, непосредственно для сохранения адреса, то при повторном срабатывании условия он перепишется и его значение будет утеряно навсегда...А не будет ли ошибкой создать в самой структуре переменную типа DWORD и сохранять адрес в ней же?
    Скорее всего, это закончится исключением.
    См. также XY problem в подписи.

Страница 687 из 857 ПерваяПервая ... 187587637677685686687688689697737787 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 4044
    Последнее сообщение: 17.12.2025, 10:15
  2. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 849
    Последнее сообщение: 16.11.2025, 08:58
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 273
    Последнее сообщение: 08.09.2025, 13:21
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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