PDA

Просмотр полной версии : Как обновить списки текстов в прошитом СПК107!?



Andreismith
26.05.2016, 09:40
Доброго времени суток!
Подскажите каким образом обновить списки текстов в прошитом СПК107!?

Ситуация следующая:
1. Задача в процессе измерений сохранять в архив помимо данных Название детали и Ф.И.О. исполнителя.
Списки загружаются из файлов списков текстов (которые время от времени должны редактироваться на обычном компе.). НО! После загрузки (компиляции) проекта на CD карту контроллера (при установке её в ноутбук ) на ней не видно вообще ни каких файлов!?
2. Как программно (какой командой, методом, свойством) обновлять список текстов
3. Какой путь к файлу по умолчанию?

Евгений Кислов
26.05.2016, 10:26
Доброго времени суток!
Подскажите каким образом обновить списки текстов в прошитом СПК107!?

Ситуация следующая:
1. Задача в процессе измерений сохранять в архив помимо данных Название детали и Ф.И.О. исполнителя.
Списки загружаются из файлов списков текстов (которые время от времени должны редактироваться на обычном компе.). НО! После загрузки (компиляции) проекта на CD карту контроллера (при установке её в ноутбук ) на ней не видно вообще ни каких файлов!?
2. Как программно (какой командой, методом, свойством) обновлять список текстов
3. Какой путь к файлу по умолчанию?

1,3. SD-карта - это внешний носитель, т.е. хоть какие-то файлы на ней появятся только в том случае, если вы будете создавать их из программы контроллера. ОС, рантайм и файлы проекта хранятся во встроенной flash памяти контроллера. Работать с файловой системой контроллера можно через WinSCP - см. п. 14.10 в документе СПК. FAQ. Файлы списков текстов хранятся в /mnt/ufs/root/CoDeSysSP_wrk/visu.
2. Посмотрите библиотеку СmpDynamicText. Там есть подходящая по названию функция - возможно, она вам поможет.

Andreismith
26.05.2016, 13:13
А есть возможность загружать списки текстов из текстовых файлов на внешнем носителе?

Евгений Кислов
26.05.2016, 13:38
А есть возможность загружать списки текстов из текстовых файлов на внешнем носителе?

В принципе, можно. Нужно в терминале выполнить команду типа

cp /mnt/ufs/media/sda1/my_test_list.txt /mnt/ufs/root/CoDeSysSP_wrk/visu/

В данном случае будет скопирован список текстов с названием my_test_list.txt , расположенный в корне USB flash (sda1). Для SD путь к девайсу будет /mnt/ufs/media/mmcblk0p1

Соответственно, послать команду в терминал через CODESYS (например, по нажатию кнопки в визуализации) можно с помощью библиотеки CmpSysExec:
http://www.owen.ru/catalog/codesys_v3/80224381

Andreismith
26.05.2016, 14:05
Спасибо!
Буду пробовать.

Andreismith
13.06.2016, 09:53
Евгений, можете привести подробный пример!?
Создал Кнопку, в событие OnMousClick вставил cp /mnt/ufs/media/sda1/Detallist.txt /mnt/ufs/root/CoDeSysSP_wrk/visu/
Данной комманды он не понимает!
Еще вопрос: в свойствах кнопки есть комманда загрузить списки текстов у нее 2 параметра.
Где найти описание синтаксиса, примеров поэтой комманде!?

Евгений Кислов
13.06.2016, 11:42
Евгений, можете привести подробный пример!?
Создал Кнопку, в событие OnMousClick вставил cp /mnt/ufs/media/sda1/Detallist.txt /mnt/ufs/root/CoDeSysSP_wrk/visu/
Данной комманды он не понимает!

1. Устанавливаете библиотеку CmpSysExec. Ссылку я давал выше. Эта библиотека включает функцию SysExecute, которая позволяет отправлять команды в терминал Linux. Соответственно, если обновленный список текстов у вас находится на USB, то надо выполнить код:

SysExecute('cp /mnt/ufs/media/sda1/Detallist.txt /mnt/ufs/root/CoDeSysSP_wrk/visu/');

а если на SD-карте:

SysExecute('cp /mnt/ufs/media/mmcblk0p1/Detallist.txt /mnt/ufs/root/CoDeSysSP_wrk/visu/');

2. После этого в программе подгружаете новый список текстов (должна быть добавлена библиотека CmpDynamicText):

DynamicTextReloadTexts();




Еще вопрос: в свойствах кнопки есть комманда загрузить списки текстов у нее 2 параметра.
Где найти описание синтаксиса, примеров поэтой комманде!?

Эти команды не имеют отношения к спискам текстов. В данном случае слово "список" надо читать как "рецепт" - погрешности перевода. Почитать про них можно в документе СПК. Визуализация, в примере про Менеджер рецептов.

Andreismith
15.06.2016, 09:43
Спасибо Евгений!
Всё получилось!
Еще вопрос из этой же области:
С помощью этих библиотек можно присвоить значение переменной из строк внешнего файла!?

(Скажу сразу, что пробовал уже обращаться к выбранному значению выпадающих списков для архива, но максимум что смог получить это номер строки выбранного списка текстов.В принципе устроило, просто при анализе архива пришлось написать код для сопоставления значения надписи индексу.)

capzap
15.06.2016, 09:50
С помощью этих библиотек можно присвоить значение переменной из строк внешнего файлавряд ли получится, не придумано базовых линуксовых команд, которые будут править текстовый файл.
Но можно поступить оригинально если конечно есть поддержка, командами отредактировать БД, затем базу выгрузить в файл, а его уже применить в качестве списка. Ну и обычные библиотеки для работы с файлами тоже могут пригодиться

Евгений Кислов
15.06.2016, 09:58
Спасибо Евгений!
Всё получилось!
Еще вопрос из этой же области:
С помощью этих библиотек можно присвоить значение переменной из строк внешнего файла!?

(Скажу сразу, что пробовал уже обращаться к выбранному значению выпадающих списков для архива, но максимум что смог получить это номер строки выбранного списка текстов.В принципе устроило, просто при анализе архива пришлось написать код для сопоставления значения надписи индексу.)

С помощью этой библиотеки - нет. Как правильно заметил Capzap, можно воспользоваться одной из библиотек для работы с файлами (например, CAA File), но мне кажется, это будет излишне сложным в данном случае.

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

Andreismith
15.06.2016, 11:28
Думаю это будет перебор!)
Не хочется усложнять проект.Но конечно, отсутствие таких казалось бы простых, по крайней мере в других языках функций усложняет задачи.
Спасибо за помощь!

capzap
15.06.2016, 12:02
отсутствие таких казалось бы простых, по крайней мере в других языках функций усложняет задачи
по подробнее можно о других языках, опишите процесс который Вы считаете простым и возможно появится предложение и для плк

Andreismith
15.06.2016, 12:55
К примеру на VB, Delphi можно просто обратиться к свойству text того же combobox и делать с ним всё, что угодно (сохранять, присваивать пременным и т. д.)!

capzap
15.06.2016, 13:59
какое отношение combobox имеет к файлам, ясно что к любому элементу визуализации загруженному в ОЗУ можно менять свойство текст, если оно есть. Вы же вроде хотели внести изменение в произвольной позиции файла изменив значение переменной

Andreismith
15.06.2016, 14:44
какое отношение combobox имеет к файлам, ясно что к любому элементу визуализации загруженному в ОЗУ можно менять свойство текст, если оно есть. Вы же вроде хотели внести изменение в произвольной позиции файла изменив значение переменной

Совсем нет!)
Изначально одной из задач было архивирование значений измерений с сохранением наименования детали и Ф.И.О. работника проводящего измерения выбранного в соответствующих элементах combobox.
Вот тут то и возникла первая загвоздка! Свойства текст у элементов не оказалось. И попытки решить это в текстовом формате не увенчались успехом!

Вторая задача: (решена сейчас другим образом) Удобно было бы считать значение из внешнего файла, к примеру того-же списка текстов и присвоить его переменной! Но тут я так понимаю, тоже всё ограничено!?

Andreismith
15.06.2016, 14:49
какое отношение combobox имеет к файлам, ясно что к любому элементу визуализации загруженному в ОЗУ можно менять свойство текст, если оно есть. Вы же вроде хотели внести изменение в произвольной позиции файла изменив значение переменной

Совсем нет!)
Изначально одной из задач было архивирование значений измерений с сохранением наименования детали и Ф.И.О. работника проводящего измерения выбранного в соответствующих элементах combobox.
Вот тут то и возникла первая загвоздка! Свойства текст у элементов не оказалось. И попытки решить это в текстовом формате не увенчались успехом!

Вторая задача: (решена сейчас другим образом) Удобно было бы считать значение из внешнего файла, к примеру того-же списка текстов и присвоить его переменной! Но тут я так понимаю, тоже всё ограничено!?

capzap
15.06.2016, 15:17
Но тут я так понимаю, тоже всё ограничено!?я не знаю в чем ограничение, у меня с этим вроде проблем нет http://www.owen.ru/forum/showthread.php?t=17003&p=141820&viewfull=1#post141820 или я всё же не понимаю в чем суть проблемы