Объявление

Свернуть
Пока нет объявлений.

Обращение к флэш-карте.

Свернуть
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • #16
    Сообщение от Никита Посмотреть сообщение
    Я адаптировал Ваш пример под свою ситуацию, но возникли вопросы.

    Правильно ли я объявил эти переменные?:


    Код:
    taskSaveTrendsToUSB: bool;
    MessageInfo: WSTRING;

    И уже - в свою очередь - совсем непонятно, как объявить эти.
    И вообще как их использовать.


    Код:
    Dialogs.ShowDialog
    umount();
    startPrg
    (CLK:=taskSaveTrendsToUSB) [COLOR=#FFA500]// CLK - это, видимо, вход startPrg?[/COLOR]
    Ваш пример подразумевается использовать, как program?
    Да, это программа, которая запускается по событию "taskSaveTrendsToUSB" после завершения копирования работа программы прекращается.


    MessageInfo - это глобальная переменная(wstring) - для передачи сообщения в диалоговое окно.(использовать не обязательно, можно исключить)
    Dialogs.ShowDialog('MsgSussSaveTrend',0,0); - это фб для вызова диалогового окна из кода(использовать не обязательно, можно исключить)
    umount(); - функция размонтирования USB после завершения копирования.

    реализация функции umount();

    _____________________________

    FUNCTION umount : RTS_IEC_RESULT

    var
    sCommandUmountDev :string := 'umount /dev/sda1 ';
    end_var

    ____________________________


    // Размонтирования накопителя
    SysProcessExecuteCommand(pszComand := sCommandUmountDev, pResult := ADR(umount));







    Комментарий


    • #17
      Я нахожусь в онлайн режиме.

      Соответственно, флешка не подключена.
      И при запуске программы должно записаться значение true в filecp.xError.

      Но как видите, ничего не произошло.

      Нажмите на изображение для увеличения.   Название:	1.png  Просмотров:	0  Размер:	23.6 Кб  ID:	522


      Всё таки придётся добавляться шаг с чтением файла?

      Я для программы по сохранению создал отдельную задачу с типом по событию:

      Нажмите на изображение для увеличения. 

Название:	2.png 
Просмотров:	48 
Размер:	23.2 Кб 
ID:	524

      И событие активируется по нажатию кнопки на визуализации (там я просто выполняю ST код по нажатию, записываю в taskSaveTrendsToUSB значение true).

      Может здесь есть какой-то нюанс?
      Последний раз редактировалось Никита; 10-04-2020, 08:49 AM.

      Комментарий


      • #18
        Сообщение от Никита Посмотреть сообщение
        Я нахожусь в онлайн режиме.

        Соответственно, флешка не подключена.
        И при запуске программы должно записаться значение true в filecp.xError.

        Но как видите, ничего не произошло.

        Нажмите на изображение для увеличения.   Название:	1.png  Просмотров:	0  Размер:	23.6 Кб  ID:	522


        Всё таки придётся добавляться шаг с чтением файла?
        Перед копированием на USB карту, необходимо убедиться в ее наличии, монтировании. Это можно определить наличием каталога sda1 по пути /run/media

        в саа file есть фб DirInfo он позволят получить информацию о содержимом определенного каталога, например нужно сканировать /run/media на наличие, каталога sda1

        если каталог найден, выводим сообщение что USB найдена, далее производим копирование.

        Комментарий


        • #19
          Сообщение от Пушкарев Андрей Посмотреть сообщение

          в саа file есть фб DirInfo он позволят получить информацию о содержимом определенного каталога, например нужно сканировать /run/media на наличие, каталога sda1

          Нажмите на изображение для увеличения. 

Название:	3.png 
Просмотров:	51 
Размер:	35.6 Кб 
ID:	526

          А точно в CAA File?

          Что-то не могу найти.

          Комментарий


          • #20
            Сообщение от Никита Посмотреть сообщение


            Нажмите на изображение для увеличения. 

Название:	3.png 
Просмотров:	51 
Размер:	35.6 Кб 
ID:	526

            А точно в CAA File?

            Что-то не могу найти.
            DirList - это оно.

            Комментарий


            • #21
              Разобрался с DirList.
              Всё работает.

              Но тут такой нюанс есть.

              У меня в 5 шаге не записываются глобальные переменные.

              Нажмите на изображение для увеличения.   Название:	4.png  Просмотров:	0  Размер:	23.9 Кб  ID:	529

              Собственно на 5 шаге и тормозиться.

              Тут нюанс в глобальных переменных?

              Или проблема в том, что некорректно задачу установил?

              Нажмите на изображение для увеличения. 

Название:	2.png 
Просмотров:	49 
Размер:	23.2 Кб 
ID:	530
              Последний раз редактировалось Никита; 10-04-2020, 11:58 AM.

              Комментарий


              • #22
                Сообщение от Никита Посмотреть сообщение
                Разобрался с DirList.
                Всё работает.

                Но тут такой нюанс есть.

                У меня в 5 шаге не записываются глобальные переменные.

                Нажмите на изображение для увеличения.  Название:	4.png  Просмотров:	0  Размер:	23.9 Кб  ID:	529

                Собственно на 5 шаге и тормозиться.

                Тут нюанс в глобальных переменных?

                Или проблема в том, что некорректно задачу установил?

                Нажмите на изображение для увеличения.   Название:	2.png  Просмотров:	0  Размер:	23.2 Кб  ID:	530
                тип задачи попробуйте поставить "Статус", у Вас стоит "Событие"

                в отладке пробовали по шагам пройти и посмотреть есть ли фактически запись в этом шаге в глобальную переменную?

                Проверьте все переходы по шагам, убедитесь что все ссылки на следующие шаги действительны и указывают на правильные шаги.
                Последний раз редактировалось Пушкарев Андрей; 10-04-2020, 02:14 PM.

                Комментарий


                • #23
                  Сообщение от Пушкарев Андрей Посмотреть сообщение

                  тип задачи попробуйте поставить "Статус", у Вас стоит "Событие"
                  Если поставить тип задачи "Статус", то программа перестаёт запускаться. То есть не происходит запись true в переменную taskSaveTrendsToUSB.

                  Сообщение от Пушкарев Андрей Посмотреть сообщение

                  в отладке пробовали по шагам пройти и посмотреть есть ли фактически запись в этом шаге в глобальную переменную?
                  Проверьте все переходы по шагам, убедитесь что все ссылки на следующие шаги действительны и указывают на правильные шаги.
                  Шаги выставлены верно.

                  Если проходить по шагам, то всё происходит корректно.
                  Но программа останавливается на 5 шаге, так как не происходит запись в глобальные переменные.
                  И не происходит запись в iState следующего 6 шага.

                  Я пробовал в этом случае сымитировать значение iState (номер шага в CASE) - и выставить последний шаг 6.
                  В iState записывается значение 6, но в CASE переход по шагам не происходит.

                  Что же останавливает ход программы?
                  Что делать в этом случае?

                  Комментарий


                  • #24
                    Сообщение от Никита Посмотреть сообщение

                    Если поставить тип задачи "Статус", то программа перестаёт запускаться. То есть не происходит запись true в переменную taskSaveTrendsToUSB.



                    Шаги выставлены верно.

                    Если проходить по шагам, то всё происходит корректно.
                    Но программа останавливается на 5 шаге, так как не происходит запись в глобальные переменные.
                    И не происходит запись в iState следующего 6 шага.

                    Я пробовал в этом случае сымитировать значение iState (номер шага в CASE) - и выставить последний шаг 6.
                    В iState записывается значение 6, но в CASE переход по шагам не происходит.

                    Что же останавливает ход программы?
                    Что делать в этом случае?

                    "Если поставить тип задачи "Статус", то программа перестаёт запускаться. То есть не происходит запись true в переменную taskSaveTrendsToUSB."

                    программа и не должна запускаться, предполагается запуск программы по событию подали сигнал, по событию кнопки, taskSaveTrendsToUSB := true;

                    Далее начинаются циклы программы копирования, по case, откажитесь от глобальных переменных для это случая, объявите и в программе, сделайте методы доступа к этим переменным.

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

                    Комментарий


                    • #25
                      Я попробовал ещё поналаживать и выяснил, что почему-то не открывается директория.

                      То есть переменная xDone в file.DirOpen не записывается в true. Стало быть директория не открывается.
                      Причём я пробовал и с директорией флешки (/run/media/sda1) и уже существующую на ПЛК (/run/media/mmcblk1p1).
                      Но всё равно не открывает.

                      Нажмите на изображение для увеличения. 

Название:	наладка 2.1.png 
Просмотров:	38 
Размер:	17.6 Кб 
ID:	535

                      Нажмите на изображение для увеличения. 

Название:	наладка 2.2.png 
Просмотров:	38 
Размер:	40.3 Кб 
ID:	536

                      Комментарий


                      • #26
                        Почему функциональный блок DirOpen вообще не реагирует хотя я вызываю его на исполнение?

                        P.S.:
                        Я скачал пример из Codesys Store.
                        И там сделано также.

                        Но у меня почему-то не работает ни DirOpen, ни File.copy.

                        Почему?
                        Последний раз редактировалось Никита; 13-04-2020, 06:07 PM.

                        Комментарий


                        • #27
                          Сообщение от Никита Посмотреть сообщение
                          Почему функциональный блок DirOpen вообще не реагирует хотя я вызываю его на исполнение?

                          P.S.:
                          Я скачал пример из Codesys Store.
                          И там сделано также.

                          Но у меня почему-то не работает ни DirOpen, ни File.copy.

                          Почему?
                          Пример из Store работает ? по поводу библиотеки CAA Flile если рассматривать фб DirCopy данный фб не работает, так как он появился в новых версиях библиотек CAA File, в версии runtime 3.5.10.0(плк-40) данный функционал не поддерживается, но это касается только DirCopy, остальной функционал поддерживается.

                          В отладке по точкам останова смотрели что выдает блок? Скорей всего где - то допускаете ошибку.

                          Посмотрите тут: https://forge.codesys.com/forge/talk...ad/fa3528985a/

                          Комментарий


                          • #28
                            Сообщение от Пушкарев Андрей Посмотреть сообщение

                            Пример из Store работает ? по поводу библиотеки CAA Flile если рассматривать фб DirCopy данный фб не работает, так как он появился в новых версиях библиотек CAA File, в версии runtime 3.5.10.0(плк-40) данный функционал не поддерживается, но это касается только DirCopy, остальной функционал поддерживается.

                            В отладке по точкам останова смотрели что выдает блок? Скорей всего где - то допускаете ошибку.

                            Посмотрите тут: https://forge.codesys.com/forge/talk...ad/fa3528985a/
                            программа просто останавливается на этом шаге, где функциональный блок DirCopy.

                            программа просто доходит до него,
                            отправляет на исполнение и ни xDone, ни xError - не срабатывают.
                            и программа улетает в конец.

                            причём переменная того, что FB активен - xBusy - true;

                            Нажмите на изображение для увеличения. 

Название:	photo_2020-04-17_15-53-22.jpg 
Просмотров:	31 
Размер:	21.3 Кб 
ID:	541


                            У меня тип задачи "По событию" - может из-за этого?
                            Ведь функциональный блок ведь надо постоянно вызывать.

                            Мне кажется, надо задачу в циклический тип поместить.

                            Комментарий


                            • #29
                              Удалось настроить копирование файла на флеш-карту.
                              Но это происходит не на любую флеш-карту.

                              Брал две разных флешки с FAT32.
                              На одну копирует, на другую нет.


                              От чего это зависит?

                              P.S.: но даже та флешка, на которую успешно происходит копирование при подключении к ПК - возникает сообщение, что этот накопитель нужно проверить.

                              Почему так может происходить?

                              Комментарий


                              • #30
                                Сообщение от Никита Посмотреть сообщение
                                Удалось настроить копирование файла на флеш-карту.
                                Но это происходит не на любую флеш-карту.

                                Брал две разных флешки с FAT32.
                                На одну копирует, на другую нет.


                                От чего это зависит?

                                P.S.: но даже та флешка, на которую успешно происходит копирование при подключении к ПК - возникает сообщение, что этот накопитель нужно проверить.

                                Почему так может происходить?
                                Дело в файловой системе SD карты: http://forum.kb-agava.ru/forum/contr...кции-sync

                                Комментарий

                                Обработка...
                                X