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

Тема: Как программировать вложенные SFC

  1. #11

    По умолчанию

    Начнем с конца.
    1.При работе в текстовом режиме архиватор считает размер файла не в байтах, а в записях, т.е. как Вы говорите 4600 строк - это 1/7 от заданного Вами же размера. Т.о. сдвиг просто еще не включался, рановато.

    2. Если Вы выставляете цикл ПЛК 1 мс, а реально Ваша программа настолько велика, что выполняется 4 мс, то происходит следующее - начинается цикл, он длится в 4 раза чем задано, после окончания цикла должны проходить операции обслуживания, в т.ч. и обмена с МВА и пр.
    Но, т.к. следующий цикл и так уже запоздал на 3 мс, ПЛК выделяет на обслуживание очень мало времени, несколько мкс, и за этот период операции обмена с входами/выходами, работа мастеров и пр. не успевает полностью произойти. Из-за этого и возникают проблемы с обменом.
    Придется либо оптимизировать программу, либо разбивать её на мелкие подпрограммы, к-е по отдельности выполняются меньше цикла ПЛК, либо увеличить цикл ПЛК, в Вашем случае рекомендую 6 мс, а лучше 10.

    3. Про память - 8МБайт, в которых расположен собственно код ядра, ОЗУ для внутренних переменных, кэш на чтение и запись, буфера для последовательных интерфейсов, Ethernet и сокетов, куча для модулей расширения и функций работы с памятью самого CoDesys, 2 Мбайта для кода проекта, 128 кБ для оперативной памяти проекта и много много чего другого. В результате остаётся не так уж и много...

    4. Про архивирование - чем больше файл, тем больше ресурсов времени он требует на обработку. Соответственно при каждой записи архиватор должен открыть файл, перейти в его конец, записать, синхронизировать кэш и пр. операции обслуживания. Время на эти операции растет пропорционально размеру файла. На некотором объеме это время становиться недопустимо большим. И размер файла был сознательно ограничен 32000 байт в бинарном режиме. В текстовом режиме такое ограничение наложить невозможно, т.к. размер записи может варьироваться в очень широких пределах.

    Та же проблема с большими файлами в архиваторе приводит к щелканию реле. В ПЛК есть защита от зависания центрального процессора и если в течении 250 мс процессор не подтвердит свою работоспособность, послав посылку в нижний микропроцессор, он переведёт выхода в безопасное состояние. При работе с большими файлами возможны такие задержки.
    Поэтому рекомендую уменьшить размеры архивов до 20-30 кБайт и проблемы исчезнут.

    P.S. При работе с файлами из самой среды СoDesys также следует за 1 цикл ПЛК не читать свыше 30-50 кБайт и не записывать свыше 20-30 кБайт.

    Проблемы с выводом в архив нулей мы проверим.

    P.S. также рекомендую увеличить время ожидания ответа от МВА до 50 мс
    Последний раз редактировалось Филоненко Владислав; 31.01.2008 в 20:52.

  2. #12

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Начнем с конца.

    2. Если Вы выставляете цикл ПЛК 1 мс, а реально Ваша программа настолько велика, что выполняется 4 мс, то происходит следующее - начинается цикл, он длится в 4 раза чем задано, после окончания цикла должны проходить операции обслуживания, в т.ч. и обмена с МВА и пр.
    Но, т.к. следующий цикл и так уже запоздал на 3 мс, ПЛК выделяет на обслуживание очень мало времени, несколько мкс, и за этот период операции обмена с входами/выходами, работа мастеров и пр. не успевает полностью произойти. Из-за этого и возникают проблемы с обменом.
    Придется либо оптимизировать программу, либо разбивать её на мелкие подпрограммы, к-е по отдельности выполняются меньше цикла ПЛК, либо увеличить цикл ПЛК, в Вашем случае рекомендую 6 мс, а лучше 10.
    Сделаю 10.
    Попробовал при 10 мс проект грузится 20 сек.
    При 0 мс грузится 13 сек.
    При 40 мс - 65 сек.
    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    4. Про архивирование - чем больше файл, тем больше ресурсов времени он требует на обработку. Соответственно при каждой записи архиватор должен открыть файл, перейти в его конец, записать, синхронизировать кэш и пр. операции обслуживания. Время на эти операции растет пропорционально размеру файла. На некотором объеме это время становиться недопустимо большим. И размер файла был сознательно ограничен 32000 байт в бинарном режиме. В текстовом режиме такое ограничение наложить невозможно, т.к. размер записи может варьироваться в очень широких пределах.
    А если ограничить макс время цикла в 10 сек? Или это не из-за этого?
    У меня был архив с shift mode 100 записей, но почему-то файл стирался и каждый раз писался заново.
    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Та же проблема с большими файлами в архиваторе приводит к щелканию реле. В ПЛК есть защита от зависания центрального процессора и если в течении 250 мс процессор не подтвердит свою работоспособность, послав посылку в нижний микропроцессор, он переведёт выхода в безопасное состояние. При работе с большими файлами возможны такие задержки.
    Но чем занят процессор 250 мс, если файл дописывается в конец?
    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Поэтому рекомендую уменьшить размеры архивов до 20-30 кБайт и проблемы исчезнут.
    500 строк по 60 символов - это мало (одна строка через 1мин - 8 часов).
    Даже если разбить: один архив - одна переменная (что не совсем удобно) получится 1500 строк по 20 символов - сутки.
    Нужно хотя бы 3 суток.

    А если стирать файл и писать с нуля? Будет работать 300-500 кб архив?
    Хотя у меня ведь файл не достиг своего максимума а глюки были
    Последний раз редактировалось Антон; 01.02.2008 в 08:38.

  3. #13

    По умолчанию

    Антон, у вас очень глобальная задача, под которую архиватор не затачивался, поэтому Вам лучше воспользоваться библиотекой SysLibFile и записывать информацию (а её много будет) самому из программы ПЛК.

  4. #14

    По умолчанию Ошибка при загрузке проекта

    Разбил один архив на несколько, теперь после загрузки проекта выдается сообщение об ошибке.
    Прилагаются вид экрана с ошибкой и проект.
    Вложения Вложения

  5. #15

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Антон, у вас очень глобальная задача, под которую архиватор не затачивался, поэтому Вам лучше воспользоваться библиотекой SysLibFile и записывать информацию (а её много будет) самому из программы ПЛК.
    Есть пример использования этой библиотеки для записи лог файлов?

  6. #16

    По умолчанию

    Цитата Сообщение от Антон Посмотреть сообщение
    Разбил один архив на несколько, теперь после загрузки проекта выдается сообщение об ошибке.
    Прилагаются вид экрана с ошибкой и проект.
    В ПЛК позволено создавать не более 3-х модулей архивации. Ресурсы не бесконечные

  7. #17

    По умолчанию Два вопроса

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    В ПЛК позволено создавать не более 3-х модулей архивации. Ресурсы не бесконечные
    1) Архиватор в режиме shift при переполнении стирает файл и пишет сначала, хотя должен сдвигать.
    2) Нужен пример записи лог файла с использованием библиотеки.

  8. #18

    По умолчанию

    Пример для лога не имею, но процедура следующая.
    Открыть файл на запись.
    Переместить указатель в конец файла.
    Начать записывать данные в требуемом Вам формате в файл.
    Когда процедура архивации закончена - закрыть файл.

    Если Вы открыли файл и держите его открытым, то повторные открытия его (из другого места программы, из среды разработки, из PLCBrowser (например стереть) - будут в режиме только для чтения.

  9. #19

    По умолчанию Еще замечание по архиватору

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

    P.S. Хочется чтобы все замечания по архиватору в новой версии прошивки были устранены, а то это не архиватор а "писалка в файл".

  10. #20

    По умолчанию

    Чтобы добавлялась дата каждые сутки просто сделайте время включения архивации 00:00:06, а выключения 00:00:01. Тогда в 6 секунд первого каждые сутки будет писаться заголовок.

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

Ваши права

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