Страница 876 из 878 ПерваяПервая ... 376776826866874875876877878 ПоследняяПоследняя
Показано с 8,751 по 8,760 из 8778

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

  1. #8751
    Пользователь
    Регистрация
    23.05.2025
    Адрес
    Железка_есличо
    Сообщений
    137

    По умолчанию

    Цитата Сообщение от Sergey361 Посмотреть сообщение
    Исключение и место, где оно произошло. В журнале можно текст посмотреть еще
    а как понять из-за чего возникло это исключение?

  2. #8752
    Пользователь
    Регистрация
    23.05.2025
    Адрес
    Железка_есличо
    Сообщений
    137

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Исключение, у вас деление на 0 в строке.
    delta должна быть хоть 0,0001, но не 0.
    спасибо вам большое. Предыдущее моё сообщение не актуально

  3. #8753

    По умолчанию Рецепты.

    Здравствуйте коллеги!. С чем может быть связано такое непоследовательное размещение рецептов в памяти ПЛК?
    PPD_3
    PPD_2
    PPD_1
    PPD_6
    PPD_4
    PPD_5
    2026-04-03_15-15-26.png

  4. #8754

    По умолчанию

    Там много чего непоследовательно может быть и вообще в разных местах. Я столкнулся с этим когда написал процедуру которая по указателю на первую и последнюю переменные сохраняет настройки в файл и потом их восстанавливает когда необходимо. На небольших кусках памяти она отлично работает. А когда переменных и массивов становится много то оказывается они хранятся в памяти далеко не последовательно и вообще по разным секторам. И функция SysMemCopy становится бесполезной.

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

    По умолчанию

    Цитата Сообщение от Назаров Александр Посмотреть сообщение
    Здравствуйте коллеги!. С чем может быть связано такое непоследовательное размещение рецептов в памяти ПЛК?
    PPD_3
    PPD_2
    PPD_1
    PPD_6
    PPD_4
    PPD_5
    2026-04-03_15-15-26.png
    Добрый день.
    Если коротко - с тем, что так устроена реальная жизнь.

    Все операции с чтением содержимого директорий сводятся к вызову на нижнем уровне чего-то вроде readdir, для которой:

    The order in which filenames are read by successive calls to
    readdir() depends on the filesystem implementation; it is unlikely
    that the names will be sorted in any fashion
    .



    https://man7.org/linux/man-pages/man3/readdir.3.html

  6. #8756

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день.
    Если коротко - с тем, что так устроена реальная жизнь.

    Все операции с чтением содержимого директорий сводятся к вызову на нижнем уровне чего-то вроде readdir, для которой:

    The order in which filenames are read by successive calls to
    readdir() depends on the filesystem implementation; it is unlikely
    that the names will be sorted in any fashion
    .



    https://man7.org/linux/man-pages/man3/readdir.3.html
    Цитата Сообщение от RV9WFJ Посмотреть сообщение
    Там много чего непоследовательно может быть и вообще в разных местах. Я столкнулся с этим когда написал процедуру которая по указателю на первую и последнюю переменные сохраняет настройки в файл и потом их восстанавливает когда необходимо. На небольших кусках памяти она отлично работает. А когда переменных и массивов становится много то оказывается они хранятся в памяти далеко не последовательно и вообще по разным секторам. И функция SysMemCopy становится бесполезной.
    Спасибо, будем вживаться в реалии.

  7. #8757

    По умолчанию

    Цитата Сообщение от Назаров Александр Посмотреть сообщение
    Спасибо, будем вживаться в реалии.
    Не надо вживаться, достаточно в слейве выделить группу регистров (достаточного для всех рецептов) и положить туда массив структур рецептов.
    Всё будет по порядку и передаваться будет по порядку.
    Длину String надо тоже ограничить, местом достаточным для записи,
    вы например добавляете 5 символ в String(4), вот и съезжают структуры.
    Надо поставить String(5), если меньше 10 или String(6), если до 99 рецептов
    Последний раз редактировалось kondor3000; 03.04.2026 в 17:41.

  8. #8758

    По умолчанию OnValueChanged в таблице

    Нужно отслеживать момент изменения значения в ячейке таблицы. Нашел событие OnValueChanged. Попробовал его использовать. Событие не генерируется. Баг Codesysa? Вопрос, можно ли с этим бороться? Или как еще, в принципе, можно в коде отследить это событие?

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

    По умолчанию

    Цитата Сообщение от Назаров Александр Посмотреть сообщение
    Нужно отслеживать момент изменения значения в ячейке таблицы. Нашел событие OnValueChanged. Попробовал его использовать. Событие не генерируется. Баг Codesysa? Вопрос, можно ли с этим бороться? Или как еще, в принципе, можно в коде отследить это событие?
    Добрый день.
    Это действительно похоже на баг CODESYS.

    Если есть возможность организовать ввод через диалог NumpadOwen/KeypadOwen из библиотеки OwenVisuDialogs - то можно отследить закрытие диалога с помощью анализа полей структуры OVD.DialogsSettings.g_stClosedDialogInfo
    Поле wsDialogTitle позволит понять, что был закрыт именно диалог, открытый из таблицы (соответственно, в настройках открытия диалога ввода в таблице нужно указать ему уникальный заголовок).

    Но это не позволит отличить ввод нового значения от ввода того же значения, что и было.

    В принципе, можно в коде циклически проверять значение каждой ячейки - совпадает ли оно с тем, которое было при прошлой проверке.

  10. #8760

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день.
    Это действительно похоже на баг CODESYS.

    Если есть возможность организовать ввод через диалог NumpadOwen/KeypadOwen из библиотеки OwenVisuDialogs - то можно отследить закрытие диалога с помощью анализа полей структуры OVD.DialogsSettings.g_stClosedDialogInfo
    Поле wsDialogTitle позволит понять, что был закрыт именно диалог, открытый из таблицы (соответственно, в настройках открытия диалога ввода в таблице нужно указать ему уникальный заголовок).

    Но это не позволит отличить ввод нового значения от ввода того же значения, что и было.

    В принципе, можно в коде циклически проверять значение каждой ячейки - совпадает ли оно с тем, которое было при прошлой проверке.
    Спасибо, буду пробовать.
    Еще вопрос про библиотеки.
    1. Если библиотека установлена в разделе POU, то нужно ли ее устанавливать в разделе "Устройства", если Устройство не использует код из раздела "POU" ?
    2. Почему папки одной версии библиотеки OSCAT BASIC выглядят по разному в Менеджерах библиотек POU и Устройств?
    3. Что значит плейсхолдер POU не будет разрешен на устройстве и с чем связана ошибка ...Невозможно разрешить библиотеку плейсхолдера?
    ... небольшая каша в голове по этому вопросу, хотелось бы прояснить...
    Где Можно ли поподробнее поизучать этот момент, лучше на русском языке.2026-04-14_15-34-52.png2026-04-14_15-30-55.png2026-04-14_14-25-41.png2026-04-14_14-52-10.png

Страница 876 из 878 ПерваяПервая ... 376776826866874875876877878 ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 4183
    Последнее сообщение: 07.05.2026, 17:27
  2. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 863
    Последнее сообщение: 02.03.2026, 17:13
  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

Ваши права

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