Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 25

Тема: Всё-таки как правильно работать с файлами?

  1. #11

    По умолчанию

    Цитата Сообщение от Scream Посмотреть сообщение
    Внесу свои пять копеек.
    Андрей Шатохин писал, Ритэйнов не мало, чуть меньше 512 байт. Сохраняю часто - по изменению, при активном использовании объекта периодичность - 2,5 сек.
    Весьма интересно, как писать "ритэйн" каждые 2,5 секунды? Как их вообще можно писать??

    Причем ПЛК из этого дохлого цикла перезагрузок не возвращается. И в ряде случаев пришлось прошивать сам ПЛК.
    Про заводской сброс не слышали?


    И зачем это одноразовая запись? Хранить позицию где то надо, чтобы дозаписать файл чтоли или сколько читать потом.

    Я хотел написать свой архиватор, потому что штатный убог, он только для иконки на сайте и для засерания менеджерами мозги покупателям, не более.
    Проштудировал форум, выписал все косяки, начал писать библиотеку, но всё в пустую.
    Если сегодня файл создался, записался, проситался и удалился, то завтра я не могу почему то использовать этоже имя, только хард резет.
    Нет абсолютно никакой уверенности что данные не пропадут.
    Если у кого то получился свой архиватор на 100й линейке плк, то буду благодарен за пример, но думаю таких людей нет.
    Штатный ритэйн я здесь даже не упоминал, под словом ритэйн я имею в виду свой набор переменных значения которых я хочу сохранить при отключении питания. Для меня критично сохранить самую актуальную инфу поэтому я их пишу сразу как только обнаруживаю изменения, изменения я ищу с периодичностью в 2,5 секунды - так надо. Переменные у меня сгруппированы в структуры и в принципе пишутся нормально и читаются нормально, глюки возникают периодически при неустановленных обстоятельствах и приводят они к исключениям и перезапуску контроллера. Последующая загрузка контроллера опять приводит к исключениям - получаю дохлый цикл. Глюки явно уровня прикладного приложения, и вызваны они моим незнанием каких-то процессов файловой системы ПЛК (я уже выяснил штуки 4 диких особенностей =)) ). Вот я и выясняю че да как. А заводской сброс тема отличная, это тот сброс что в кодесисе? Так при постоянном перезапуске контроллера никакой кодесис не может присоединиться к контроллеру - увы и ах. Есть конечно способ остановить прогу - зажать старт/стоп и держать пока контроллер загрузится без прикладного приложения, это работает, но не всегда, видимо что-то моя прога ломает и в файловой системе самой ОС. Кароче, тока теории. Работаю.

    Есть ещё наблюдения по особенностям работы ФС?

  2. #12
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Цитата Сообщение от Scream Посмотреть сообщение
    Если у кого то получился свой архиватор на 100й линейке плк, то буду благодарен за пример, но думаю таких людей нет.
    Есть такие люди. Вот ссылка на эту тему.

  3. #13

    По умолчанию

    Пока итог по особенностям ФС ПЛК ОВЕН такой:

    0. Файл открытый на запись (w) не перезаписывается, т.е. если файл новой записью не был перезаписан полностью, в нём останется инфа от предыдущих записей (если открыть файл размером 10 байт и записать в него 3 байта то первые 3 байта будут новыми остальные 7 останутся старыми).
    1. Файлы удалять нельзя (массово).
    2. Тщательно контролируем открытие файла, и не допускаем повторное закрытие файла, закрытие закрытого файла приводит к перезагрузке.
    3. Желательно один цикл "open-write-close" отделить по времени от следующего такого же - дать ФС доделать эту операцию.
    4. По некоторым данным лучше даже все операции с файлом разделить по времени - выполнять в разных циклах работы контроллера, а совсем если быть точным, то даже контролировать количество записанных и считанных байтов, сверяя их с запланированным к чтению или записи количеству байт. Т.е. даже сами операции записи и чтения выполнять в течении нескольких циклов (если это требуется, если объём инфы большой).

    Вот пункт 4 я че-то прям не очень хочу реализовывать, надеюсь для моих 512 байт в одном файле и 1024 байт в другом файле этого не потребуется.

    Что ещё добавим?

  4. #14
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    0. Файл открытый на запись (w) не перезаписывается, т.е. если файл новой записью не был перезаписан полностью, в нём останется инфа от предыдущих записей (если открыть файл размером 10 байт и записать в него 3 байта то первые 3 байта будут новыми остальные 7 останутся старыми).
    Я иного поведения и не встречал нигде.
    Вот пункт 4 я че-то прям не очень хочу реализовывать, надеюсь для моих 512 байт в одном файле и 1024 байт в другом файле этого не потребуется.
    Это несложно (п. 4, 2 абз).

  5. #15

    По умолчанию

    А раз пошла такая пьянка что это за файлы?

    INNER_RETAIN.1
    DOWNLOAD.SDB

  6. #16
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Чувствую, что как раз 4 пункт Вам придется реализовать, т.к. за один цикл такой объем не запишется, в первом блоке отправляется 448 байт, в остальных по 512 байт.
    Последний раз редактировалось amn; 13.02.2016 в 17:56.

  7. #17

    По умолчанию

    Если я на перле напишу:

    open($H, ">file.txt"); - открыл на запись

    то file.txt будет стёрт

    я как-то к этому привык и в других средах также вроде, это только на ПЛК такая штука меня подстерегла.

    Я как бы не жалуюсь, меня это даже позабавило.

    За ссылку спасибо!

  8. #18

    По умолчанию

    Цитата Сообщение от amn Посмотреть сообщение
    Чувствую, что как раз 4 пункт Вам придется реализовать, т.к. за один цикл такой объем не запишется, в первом блоке отправляется 448 байт, в остальных по 512 байт.
    А вот это очень и очень интересно! У меня сложилось аналогичное наблюдение при работе с сокетами (это ещё кроме отсечки на 1536).
    Откуда следует что 448 байт?
    А на чтение?

  9. #19
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Вот нашел ссылку, где это видел ссылка

  10. #20
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Если я на перле напишу:
    open($H, ">file.txt"); - открыл на запись
    то file.txt будет стёрт
    Вы же сами сказали:
    Файл открытый на запись (w)
    Следует различать открытие на запись и открытие на создание-запись (не в рамках ПЛК или Перла, а вообще). Открытие на запись, как правило, не приводит к стиранию файла.

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. ЕКОН-134 Подводный камень или решение все-таки есть?
    от EFrol в разделе Сетевые технологии
    Ответов: 1
    Последнее сообщение: 15.10.2015, 10:17
  2. Работа СПК с файлами на SD
    от GoodLuck в разделе СПК2хх
    Ответов: 2
    Последнее сообщение: 10.06.2014, 13:42
  3. Плк 100 работа с файлами
    от Scream в разделе Эксплуатация
    Ответов: 2
    Последнее сообщение: 12.02.2013, 14:07
  4. Работа ПЛК с внешними файлами
    от korzhyk в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 20.08.2008, 17:49

Ваши права

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