Страница 340 из 711 ПерваяПервая ... 240290330338339340341342350390440 ... ПоследняяПоследняя
Показано с 3,391 по 3,400 из 7101

Тема: CODESYS V3.5. Вопросы и ответы

  1. #3391

    По умолчанию

    Всем привет!
    В общем вот код:
    Код:
    CASE eState OF
    	
    	0:	// шаг открытия файла
    	
    		IF xWFile AND xOpenF	//Запись файла
    			THEN
    			fbFileOpen(xExecute:=TRUE, sFileName:=sVisuFileName, eFileMode:=FILE.MODE.MAPPD);	
    
    			// если файл, в который производится запись, не существует, то создадим его и запишем в него заголовок архива
    			IF fbFileOpen.eError=FILE.ERROR.NOT_EXIST 
    				THEN
    				fbFileOpen(xExecute:=FALSE);
    				eState:=1;	// шаг создания файла	
    				xTitle	:=	TRUE;
    			END_IF
    			
    			// если файл существует и был успешно открыт, то переходим к шагу записи файла
    			IF	fbFileOpen.xDone AND xWFile
    				THEN
    				hFile:=fbFileOpen.hFile;
    				fbFileOpen(xExecute:=FALSE);
    				eState:=2;	// шаг записи в буфер
    			END_IF
    
    			ELSE IF xRFile AND xOpenF	//Чтение файла
    			THEN
    			fbFileOpen(xExecute:=TRUE, sFileName:=sVisuFileName, eFileMode:=FILE.MODE.MREAD);
    			
    			// если файл существует и был успешно открыт, то переходим к шагу чтения файла
    				IF	fbFileOpen.xDone AND xRFile
    				THEN
    				hFile:=fbFileOpen.hFile;
    				fbFileOpen(xExecute:=FALSE);
    				eState:=6;	// шаг установки позиции для чтения из файла
    				END_IF
    		END_IF
    		END_IF
    		
    	1:	// шаг создания файла	
    			// в созданном файле еще нет записей
    			uiArchEntry:=0;
    	
    			fbFileOpen(xExecute:=TRUE, sFileName:=sVisuFileName, eFileMode:=FILE.MODE.MWRITE);
    	
    			IF fbFileOpen.xDone THEN
    				hFile	:=	fbFileOpen.hFile;
    				fbFileOpen(xExecute:=FALSE);
    				
    				// после создания файла можно перейти к шагу записи данных
    				eState:=2;
    			END_IF	
    			
    			IF fbFileOpen.xError THEN
    				// обработка ошибок
    			END_IF
    	
    	
    	2:	// шаг записи в буфер
    			
    			// если это первая запись в файле - то перед ней запишем заголовок
    			IF uiArchEntry=0	
    				THEN
    				// запись строки архива в буфер
    				fbFileWrite(xExecute:=TRUE, hFile:=hFile, pBuffer:=ADR(c_sTitle), szSize:=1978);
    				ELSE
    				//Записываемая строка
    				sArchEntry	:=	WstWstVLWst.sVeryLongWStr;
    				// запись строки архива в буфер
    				fbFileWrite(xExecute:=TRUE, hFile:=hFile, pBuffer:=ADR(sArchEntry), szSize:=1978); //1978 Байт строка
    			END_IF	
    			
    			IF fbFileWrite.xDone THEN
    				fbFileWrite(xExecute:=FALSE);
    		
    				// после записи число строк в архиве увеличилось на одну
    				uiArchEntry:=uiArchEntry+1;
    				
    				// теперь можно перейти к шагу сброса буфера в файл
    				eState:=3;	// шаг сброса буфера в файл
    			END_IF
    			
    			IF fbFileWrite.xError THEN
    				// обработка ошибок
    			END_IF
    
    			
    	3: // шаг сброса буфера в файл
    			fbFileFlush(xExecute:=TRUE, hFile:=hFile);
    	
    			IF fbFileFlush.xDone THEN
    				fbFileFlush(xExecute:=FALSE);
    				
    				// теперь можно перейти к шагу закрытия файла
    				eState:=4;	// шаг закрытия файла
    			END_IF
    			
    			IF fbFileFlush.xError THEN
    				// обработка ошибок
    			END_IF
    
    	
    	4:	// шаг закрытия файла
    	
    			fbFileClose(xExecute:=TRUE, hFile:=hFile);
    	
    			IF fbFileClose.xDone THEN
    				fbFileClose(xExecute:=FALSE);
    				xOpenF	:=	FALSE;
    			
    				// теперь можно перейти к шагу определения размера файла
    				eState:=5;	// шаг определения размера файла
    			END_IF
    			
    			
    	5:	// шаг определения размера файла
    	
    			fbFileGetSize(xExecute:=TRUE, sFileName:=sVisuFileName);
    				
    				// определяем размер файла
    				IF fbFileGetSize.xDone THEN
    					udiArchSize:=fbFileGetSize.szSize;
    					fbFileGetSize(xExecute:=FALSE);
    					
    					// вернемся на шаг открытия файла для ожидания следующего управляющего сигнала	
    					eState:=0;	// шаг открытия файла
    				END_IF
    				
    			// размер несуществующего файла...	
    			IF fbFileGetSize.eError=FILE.ERROR.NOT_EXIST THEN
    				
    				// очевидно, можно интерпретировать как ноль
    				udiArchSize:=0;
    				fbFileGetSize(xExecute:=FALSE);
    				
    				// вернемся на шаг открытия файла для ожидания следующего управляющего сигнала
    				eState:=0;
    			ELSIF  fbFileGetSize.xError THEN
    				fbFileGetSize(xExecute:=FALSE);
    				eState:=0;	// шаг открытия файла
    			END_IF
    			
    	6:	// шаг установки позиции для чтения из файла
    			fbFileSetPos(xExecute:=TRUE, hFile:=hFile, udiPos:=SIZEOF((1976)*2));	//Выбор строки для чтения количество байт на 1 строку умножить на номер строки
    	
    			IF fbFileSetPos.xDone THEN
    				fbFileSetPos(xExecute:=FALSE);
    				
    				// позиция для чтения выбрана, теперь можно перейти к шагу чтения данных
    				eState	:=7;
    			END_IF
    	
    			IF fbFileSetPos.xError THEN
    				// обработка ошибок
    			END_IF		
    			
    	7:	// шаг чтения файла	
    	
    			fbFileRead(xExecute:=TRUE, hFile:=hFile, pBuffer:=ADR(stReadData), szBuffer:=SIZEOF(1976)); //Переменная для выгрузки и количество байт
    	
    			IF fbFileRead.xDone THEN
    				fbFileRead(xExecute:=FALSE);
    				
    				// теперь можно перейти к шагу закрытия файла
    				eState	:=4;
    			END_IF
    
    			IF fbFileRead.xError THEN
    				// обработка ошибок
    			END_IF
    				
    END_CASE
    Запись и прочие все работает отлично!! не могу прочитать фаил, где у меня ошибка?

  2. #3392
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    не могу прочитать фаил, где у меня ошибка?
    Код:
    szBuffer:=SIZEOF((1976)*2)

    Оператор SIZEOF возвращает размер своего аргумента в байтах.
    Размер литерала "1976*2" - это, вероятно, 2 байта (на некоторых платформах может быть 4).

    Вероятно, вы хотели в данном фрагменте кода выразить какую-то другую мысль.

  3. #3393

    По умолчанию

    Добрый день.
    codesys 3.5 modbus rtu.
    Настраивал опрос по команде, в том числе явно добавил iodrvmodbus 3.5.12.0.
    iodrvmodbus 3.5.5.0. вызывал конфликт, и был удален, но после автоматически был неявно добавлен плагином.
    Конфликт устранил выбором версии iodrvmodbus в меню свойств.
    Подскажите, пожалуйста, где почитать о неявной установке библиотек плагином?

  4. #3394
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Цитата Сообщение от enyuzer Посмотреть сообщение
    Добрый день.
    codesys 3.5 modbus rtu.
    Настраивал опрос по команде, в том числе явно добавил iodrvmodbus 3.5.12.0.
    iodrvmodbus 3.5.5.0. вызывал конфликт, и был удален, но после автоматически был неявно добавлен плагином.
    Конфликт устранил выбором версии iodrvmodbus в меню свойств.
    Подскажите, пожалуйста, где почитать о неявной установке библиотек плагином?
    Добрый день.
    Выложите проект, в котором наблюдается конфликт версий - я посмотрю, в чем может быть дело.

  5. #3395

    По умолчанию

    Да, конечно.
    Вложения Вложения
    Последний раз редактировалось enyuzer; 18.08.2021 в 15:09.

  6. #3396
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Цитата Сообщение от enyuzer Посмотреть сообщение
    Да, конечно.
    У меня с вашим проектом не возникает ни одной ошибки.
    Обеспечьте завтра удаленный доступ по TeamViewer или AnyDesk - посмотрим, в чем проблема на вашем ПК.

    Или я неправильно понял ваш пост? В чем конкретно у вас сейчас проблема?

  7. #3397

    По умолчанию

    Сейчас с проектом проблем нет.
    Я не смог разобраться что за плагин автоматически добавляет iodrvmodbus 3.5.5.0., как автоматически добавляются библиотеки вообще и какими настройками это вызвано.
    Где об этом можно почитать?

  8. #3398
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Цитата Сообщение от enyuzer Посмотреть сообщение
    Сейчас с проектом проблем нет.
    Я не смог разобраться что за плагин автоматически добавляет iodrvmodbus 3.5.5.0., как автоматически добавляются библиотеки вообще и какими настройками это вызвано.
    Где об этом можно почитать?
    Эта библиотека добавляется компонентом Modbus_Master_COM_Port из дерева проекта.

  9. #3399

    По умолчанию

    Спасибо. Это я запутался в версиях Modbus_Master_COM_Port и полез "в дебри".

  10. #3400

    По умолчанию

    Всем привет, вылезла проблемка одна

    неработает код.
    Код:
    		I10:=0;
    		FOR I10 := 0 TO 30 BY 1 DO
    		Trend1[I10]:=WSTRING_TO_BYTE(StructuraTestGS[1].Temperatura[I10]);
    		Trend2[I10]:=WSTRING_TO_BYTE(StructuraTestGS[1].Vibraciy1[I10]);
    		Trend3[I10]:=WSTRING_TO_BYTE(StructuraTestGS[1].Vibraciy2[I10]);
    		Trend4[I10]:=WSTRING_TO_BYTE(StructuraTestGS[1].Vibraciy3[I10]);
    		Trend5[I10]:=WSTRING_TO_BYTE(StructuraTestGS[1].Vibraciy4[I10]);
    		END_FOR
    причину в принципе понимаю, то что в правой стороне цыфры у меня с пробелами, как убрать пробелы или как сделать чтобы работало? те строка 3 символа, "11П" 11цифра и П пробел или "1ПП"

Страница 340 из 711 ПерваяПервая ... 240290330338339340341342350390440 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 3197
    Последнее сообщение: 23.04.2024, 13:45
  2. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 822
    Последнее сообщение: 20.11.2023, 17:48
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 245
    Последнее сообщение: 02.10.2022, 11:34
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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