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

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

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

    По умолчанию

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

  2. #5042

    По умолчанию

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

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

    По умолчанию

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

  4. #5044

    По умолчанию

    Цитата Сообщение от 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

    По умолчанию

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

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

    По умолчанию

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

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

  9. #5049

    По умолчанию

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

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

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

    По умолчанию

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

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

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

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

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе СП3хх, СП270
    Ответов: 4209
    Последнее сообщение: 26.08.2026, 16:07
  2. Ответов: 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. Вопросы и ответы
    от Давидюк в разделе СП3хх, СП270
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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