Страница 505 из 856 ПерваяПервая ... 5405455495503504505506507515555605 ... ПоследняяПоследняя
Показано с 5,041 по 5,050 из 8553

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

  1. #5041
    Пользователь
    Регистрация
    08.02.2020
    Адрес
    Ставрополь
    Сообщений
    230

    По умолчанию

    День добрый.
    Подскажите пожалуйста, какой библиотекой из стандартных нужно пользоваться для работы с файлами из нескольких потоков (задач)?
    Сейчас использую SysFile, но несмотря на синхронизацию BOLT-ом периодически затирают друг друга записи в файле. Есть подозрение, что после завершения SysFileFlush ещё некоторое время производится запись файла.

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

    По умолчанию

    Цитата Сообщение от fatlortroll Посмотреть сообщение
    День добрый.
    Подскажите пожалуйста, какой библиотекой из стандартных нужно пользоваться для работы с файлами из нескольких потоков (задач)?
    Сейчас использую SysFile, но несмотря на синхронизацию BOLT-ом периодически затирают друг друга записи в файле. Есть подозрение, что после завершения SysFileFlush ещё некоторое время производится запись файла.
    Добрый день.
    Насколько я знаю - специальных библиотек для работы с файлами из нескольких потоков не существует.

  3. #5043
    Пользователь
    Регистрация
    08.02.2020
    Адрес
    Ставрополь
    Сообщений
    230

    По умолчанию

    Т.е. даже с учётом синхронизации -- будет затирание данных в файле?

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

    По умолчанию

    Цитата Сообщение от fatlortroll Посмотреть сообщение
    Т.е. даже с учётом синхронизации -- будет затирание данных в файле?
    Если синхронизация реализована корректно и в каждый момент времени файл используется только в одном месте - то "затираний", естественно, не будет.

  5. #5045
    Пользователь
    Регистрация
    08.02.2020
    Адрес
    Ставрополь
    Сообщений
    230

    По умолчанию

    Значит, у меня криво реализована синхронизация:

    // Mt_GVL
    VAR_GLOBAL
    DataDefender_ : CAA.BOLT; //
    END_VAR
    // Журнал сообщений
    FUNCTION_BLOCK FINAL LoggerActions
    VAR CONSTANT
    UnlockWaitTimeMax_ : TIME := T#20ms;
    END_VAR
    VAR
    FileHandle_ : SysTypes.RTS_IEC_HANDLE := SysTypes.RTS_INVALID_HANDLE;
    END_VAR
    // Добавить в лог сообщение об ошибке.
    METHOD MsgError : SysTypes.RTS_IEC_RESULT
    VAR
    CtValue : CAA.COUNT := 0;
    UnlockWaitTime : TIME := T#0ms;
    END_VAR

    UnlockWaitTime := TIME();
    WHILE ((UnlockWaitTime + UnlockWaitTimeMax_) > TIME()) AND_THEN
    (Mt_GVL.DataDefender_.Reserve(CtValue) = TRUE)
    DO
    // Здесь работа с файлом, запись в него форматированной строки и flush по завершении записи.
    CtValue := 0;
    UnlockWaitTime := T#0ms;
    Mt_GVL.DataDefender_.Free();
    END_WHILE
    Вот так сделано сейчас. Оставил только то, что относится к синхронизации. Если видны какие-либо ошибки -- покажите, пожалуйста.

  6. #5046
    Пользователь
    Регистрация
    08.02.2020
    Адрес
    Ставрополь
    Сообщений
    230

    По умолчанию

    Похоже, весь код -- одна большая ошибка.

    А как правильно сделать -- пока не пойму.

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

    По умолчанию

    Давайте лучше по нашему обычному сценарию?
    Какую практическую задачу из вашей предметной области вы пытаетесь сейчас решить? (без попытки пригвоздить себя к конкретной реализации)

  8. #5048
    Пользователь
    Регистрация
    08.02.2020
    Адрес
    Ставрополь
    Сообщений
    230

    По умолчанию

    > Какую практическую задачу из вашей предметной области вы пытаетесь сейчас решить?

    Запись в один файл из нескольких потоков. Журнал действий пользователей, и системы.

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

    По умолчанию

    Цитата Сообщение от fatlortroll Посмотреть сообщение
    > Какую практическую задачу из вашей предметной области вы пытаетесь сейчас решить?

    Запись в один файл из нескольких потоков. Журнал действий пользователей, и системы.
    Ну ок, пойдём длинным путём.
    C чем связано требование про потоки?

  10. #5050
    Пользователь
    Регистрация
    08.02.2020
    Адрес
    Ставрополь
    Сообщений
    230

    По умолчанию

    > Ну ок, пойдём длинным путём.

    :-D Ну не могу я выложить всё, не могу! :-D

    В одном потоке читаются по modbus входы/выходы, во втором -- логика приложения.

Страница 505 из 856 ПерваяПервая ... 5405455495503504505506507515555605 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 4011
    Последнее сообщение: Вчера, 16:11
  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

Ваши права

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