Страница 394 из 402 ПерваяПервая ... 294344384392393394395396 ... ПоследняяПоследняя
Показано с 3,931 по 3,940 из 4012

Тема: Панели оператора СП3xx. Вопросы и ответы

  1. #3931

    По умолчанию

    Спасибо, видео видел, по нему когда-то делал,
    правда не в список, а выводил в таблицу, но не суть важно.
    Но тогда рецептов и их параметров было мало.

    Сейчас, вижу что стандартной области PFW будет недостаточно и группировка рецептов была бы весьма нелишней.
    При большом количестве рецептов будет затруднительно искать нужный и новые добавляться будут в конец списка.
    Как запасной вариант, держу в уме расширить область PFW и сделать как в вашем посте выше, но может есть другие пути.
    Для облегчения поиска, наверное можно сделать макрос сортировки по названиям, все же облегчит поиск.

    Надо покурить хелп кодесис и обдумать вариант МихаилГл .
    У ПЛК110 вроде заявлено 6Мбайт(или Мбит?) памяти на диске.
    В кодесисе нет возможности писать на внутренний диск ПЛК файлы с разными именами?
    Никогда не пользовался там записью файлов.
    Тогда можно было бы по модбас гонять индекс и название одного рецепта, плюс регистр команды (считать/записать новый),
    а на стороне ПЛК уже сохранять или читать файл.

    В мастер-скаде у меня было - один рецепт=один файл csv.
    Разложение их по разным папкам - давали структурирование.
    А вот как сейчас сделать - пока в раздумьях.

    Буду рад любым советам.

  2. #3932

    По умолчанию

    У меня примерно такая же задача.

    Цитата Сообщение от МихаилГл Посмотреть сообщение
    Вложение 86348
    все хранится в массиве (можно и до 1000 расширить, но надо тогда придумать навигацию по строкам массива). Передавать можно в регистрах модбас, например (тут плк 210, своя визуализация, поэтому механизм не разрабатывался, но концепция такая: активный рецепт вверху пишется, его можем редактировать, параметры подачи и участия компонентов задаем, если что поменяли, то активный рецепт можем сохранить. ну а если нас этот рецепт устраивает, жмякаем "загрузить рецепт", и он тупо копируется в задания для оборудования и алгоритма дозирования). И все это сводится к редактированию массива разных параметров например на 1000 элементов. Да, самый минус это навигация, а так что проще...?
    А сам массив где хранится ? В энергонезависимой памяти ПЛК ? Это FLash disk ПЛК ? Который 6 МВ ?

  3. #3933
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    4,108

    По умолчанию

    Цитата Сообщение от Sherverpupa Посмотреть сообщение
    Спасибо, видео видел, по нему когда-то делал,
    правда не в список, а выводил в таблицу, но не суть важно.
    Но тогда рецептов и их параметров было мало.

    Сейчас, вижу что стандартной области PFW будет недостаточно и группировка рецептов была бы весьма нелишней.
    При большом количестве рецептов будет затруднительно искать нужный и новые добавляться будут в конец списка.
    Как запасной вариант, держу в уме расширить область PFW и сделать как в вашем посте выше, но может есть другие пути.
    Для облегчения поиска, наверное можно сделать макрос сортировки по названиям, все же облегчит поиск.

    Надо покурить хелп кодесис и обдумать вариант МихаилГл .
    У ПЛК110 вроде заявлено 6Мбайт(или Мбит?) памяти на диске.
    В кодесисе нет возможности писать на внутренний диск ПЛК файлы с разными именами?
    Никогда не пользовался там записью файлов.
    Тогда можно было бы по модбас гонять индекс и название одного рецепта, плюс регистр команды (считать/записать новый),
    а на стороне ПЛК уже сохранять или читать файл.

    В мастер-скаде у меня было - один рецепт=один файл csv.
    Разложение их по разным папкам - давали структурирование.
    А вот как сейчас сделать - пока в раздумьях.

    Буду рад любым советам.
    Вот когда-то 2015 делал https://owen.ru/forum/showthread.php...l=1#post383715
    там рецепты хранятся в файле ПЛК
    Список рецептов - массиве структур, например
    Код:
    TYPE Reciple :
    STRUCT
    	Name:STRING(20);	(*Название рецепта*)
    	Param1:INT;
    	Param2:INT;
    	Param3:REAL;
    END_STRUCT
    END_TYPE
    Чтение и запись рецептов из/в файл после редактиорвания выполняет такой ФБ
    Код:
    FUNCTION_BLOCK FileReciple
    VAR_INPUT
    	FileName: STRING(15);	(*Имя файла с рецептами*)
    	pt:	POINTER	TO ARRAY [0..32000] OF Reciple;	(*Указатель на массив с рецептами*)
    	size:UINT;	(*Размер массива рецептов*)
    	Restore: BOOL;	(*Загрузить рецепты из файла*)
    	Save: BOOL;	(*Сохранить рецепты в файл*)
    END_VAR
    VAR
    	StatusOfFile: INT:=100;	(*Это значение нужно для правильной инициализации ФБ*)
    	f: DWORD;	(*Дескриптор файла*)
    	statusf: DWORD;
    	NULL:Reciple;	(*Пустая запись в массиве рецептов*)
    	i: INT;
    	R_TRIG1: R_TRIG;
    	R_TRIG2: R_TRIG;
    END_VAR
    Код:
    CASE StatusOfFile OF
    0:
    	R_TRIG1(CLK:=Restore);
    	R_TRIG2(CLK:=Save);
    	IF	R_TRIG1.Q	THEN
    		StatusOfFile:=100;	(*Восстановить рецепты из файла*)
    	END_IF
    	IF	R_TRIG2.Q	THEN
    		StatusOfFile:=10;	(*Записать рецепты в файл*)
    	END_IF
    10:	(*сохранить предыдущую версию файла*)
    	statusf:=SysFileCopy(CONCAT(FileName, '.bak'), FileName);StatusOfFile:=11;
    11:	(*открыть файл на запись*)
    	f:=SysFileOpen(FileName, 'w');StatusOfFile:=12;
    12:	(*записать буфер в файл*)
    	statusf:=SysFileWrite(f, pt, size);StatusOfFile:=102;
    
    (*Эта часть выполняется однократно после старта ПЛК*)
    100: (*Открыть файл на чтение*)
    	f:=SysFileOpen(FileName, 'r');
    	IF f=0 THEN
    		StatusOfFile:=200; (*Нет такого файла*)
    	ELSE
    		StatusOfFile:=101;	(*ОК, файл существует*)
    	END_IF
    101: (*Прочитать файл в буфер*)
    	statusf:=SysFileRead(f, pt, size);StatusOfFile:=102;
    102: (*Закрываем файл*)
    	SysFileClose(f);StatusOfFile:=103;
    103:	(*Конец инициализации после включения ПЛК*)
    		StatusOfFile:=0;
    200: (*Если файла нет, то попробовать его восстановить*)
    	statusf:=SysFileCopy(FileName, CONCAT(FileName, '.bak'));StatusOfFile:=201;
    201:
    	IF statusf=0 THEN (*старой версии файла нет, создать новый*)
    		FOR i:=0	TO size/SIZEOF(NULL)-1	DO
    			NULL.Name:=CONCAT('Набор_', INT_TO_STRING(i+1));
    			pt^[i]:=NULL;
    		END_FOR
    		StatusOfFile:=11; (*Записать новый файл*)
    	ELSE
    		StatusOfFile:=100;
    	END_IF
    END_CASE
    Имена файлом могут быть любыми

    Пример работы с ФБ
    Код:
    PROGRAM PLC_PRG
    VAR
    	Reciples:	ARRAY [0..9] OF	Reciple;	(*Собственно массив рецептов для программы*)
    	FileRec: FileReciple;	(*ФБ для записи/чтения файла с рецептами*)
    
    	n: UINT:=1;		(*Текущий номер рецепта*)
    	Dlina: INT;		(*Переменная для использования Param1 из текущего рецепта*)
    	Glubina: INT;		(*Переменная для использования Param2 из текущего рецепта*)
    	Temperatura: REAL;		(*Переменная для использования Param3 из текущего рецепта*)
    	selX:INT;	(*Используется в визуализации (в таблице)*)
    	selY:INT;	(*Используется в визуализации (в таблице)*)
    END_VAR
    Код:
    FileRec(FileName:='Rec_1.dat' , pt:=ADR(Reciples) , size:=SIZEOF(Reciples) );
    
    Dlina:=Reciples[n-1].Param1;
    Glubina:=Reciples[n-1].Param2;
    Temperatura:=Reciples[n-1].Param3;
    В примере по ссылке команды на чтение рецепта из файла, редактирование рецептов и сохранение результатов в файл реализовано в визуализации проекта кодесис
    Захват-11.png Захват-12.png
    Вложения Вложения
    Последний раз редактировалось petera; 24.10.2025 в 14:39.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  4. #3934

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Вот когда-то 2015 делал https://owen.ru/forum/showthread.php...l=1#post383715
    там рецепты хранятся в файле ПЛК
    Спасибо в очередной раз.

    Это в 2015 я просил совета, когда делал ту систему, которую сейчас на панель перевожу.
    Рекурсия, блин.
    Тогда я остановился на хранении рецептов в скаде и в контроллер углубляться не стал.
    Знал бы прикуп, жил бы в Сочи - сделал бы тогда хранение в ПЛК, сейчас бы не парился.
    К сожалению, там ссылка на пример из 2015 уже не доступна, надо у себя в архивах порыться
    Последний раз редактировалось Sherverpupa; 24.10.2025 в 14:24.

  5. #3935

    По умолчанию

    Цитата Сообщение от Sherverpupa Посмотреть сообщение
    Спасибо в очередной раз.

    Это в 2015 я просил совета, когда делал ту систему, которую сейчас на панель перевожу.
    Рекурсия, блин.
    Тогда я остановился на хранении рецептов в скаде и в контроллер углубляться не стал.
    Знал бы прикуп, жил бы в Сочи - сделал бы тогда хранение в ПЛК, сейчас бы не парился.
    К сожалению, там ссылка на пример из 2015 уже не доступна, надо у себя в архивах порыться
    Пример тут выложен https://owen.ru/forum/showthread.php...l=1#post383715

  6. #3936
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    4,108

    По умолчанию

    Проект из 2015г "PLCWinNT_1.pro" прикрепил в сообщение выше
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  7. #3937

    По умолчанию

    petera, kondor3000
    благодарю, буду разбираться.

  8. #3938

    По умолчанию

    Овен предложил библиотеку для асинхронного обмена с файлами OwenLibFileAsync.
    Она чуть сложнее при обращении к её функциям, но зато после обращения функцией к файлу - программа не ждёт результата "на месте" (подвисает), а продолжает работу, а функция когда-нибудь завершит выполнение через много-много машинных циклов.

    Лучше использовать OwenLibFileAsync

  9. #3939

    По умолчанию

    А может ли переключатель переключать не один бит, а два (синхронно)?

  10. #3940

    По умолчанию

    Цитата Сообщение от TonyMilkers Посмотреть сообщение
    А может ли переключатель переключать не один бит, а два (синхронно)?
    С помощью ФО (функц. области) можно и 2 бита и больше, включить, инвертировать или выключить.

Страница 394 из 402 ПерваяПервая ... 294344384392393394395396 ... ПоследняяПоследняя

Похожие темы

  1. Экспорт CSV в панели СП3xx и порядок квитирования событий
    от theoretician в разделе Панели оператора (HMI)
    Ответов: 30
    Последнее сообщение: 24.08.2021, 16:17
  2. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  3. Сенсорные панели оператора ОВЕН СП3ХХ
    от Боднар Олег Миколайович в разделе Подбор Оборудования
    Ответов: 7
    Последнее сообщение: 17.12.2015, 09:09
  4. СПК 107 в качестве панели оператора
    от Леонид в разделе СПК1xx (архив)
    Ответов: 15
    Последнее сообщение: 20.11.2015, 08:17

Ваши права

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