Страница 665 из 859 ПерваяПервая ... 165565615655663664665666667675715765 ... ПоследняяПоследняя
Показано с 6,641 по 6,650 из 8582

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

  1. #6641
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,643

    По умолчанию

    Цитата Сообщение от Спорягин Кирилл Посмотреть сообщение
    Да, снял. После чего пересохранил проект.

    Делал еще "Очистить все".

    Но пока соединение сохраняется.
    Попробуйте сами пока что перенести проект на другой ПК и проверить. Или закрыть и открыть CODESYS заново.
    Я думаю, у вас на ПК информация о соединении просто прокэшировалась.

  2. #6642

    По умолчанию

    Прошу помощи по рефакторингу. Задача есть мотор асинхронный кнопка ПУСК без фиксации кнопка СТОП с фиксацией и контроль за АВАРИЯМИ по току и температуре.
    Код:
    //интерфейс аварий
    INTERFACE IAlarm
    // Метод выключения Аварии
    METHOD AlarmOff : BOOL
    VAR_INPUT
    END_VAR
    // Метод включения Аварии
    METHOD AlarmOn : BOOL
    VAR_INPUT
    END_VAR
    
    // Интерфей Моторов
    INTERFACE IMotor
    // выключить мотор
    METHOD MotorOff : BOOL
    VAR_INPUT
    END_VAR
    // включить Мотор
    METHOD MotorOn : BOOL
    VAR_INPUT
    END_VAR
    
    ---------------------------------------------
    // класс мотор с отслеживанием аварии
    FUNCTION_BLOCK classMotor IMPLEMENTS IMotor, IAlarm
    VAR_INPUT
    	onMotor: BOOL;// запуск мотора
    	offMotor: BOOL;// выключение мотора
    	alarmKz: BOOL; //авария короткого замыкания
    	alarmTemp: BOOL;//авария по температуре
    END_VAR
    VAR_OUTPUT
    	motorOut: BOOL;//выход мотора
    	motorAlarmOut: BOOL;// выход аварии мотора
    END_VAR
    VAR
    	// Логика работы
    	motorTrigRs: Standard.RS;
    	statusMotor: BOOL;
    	statusAlarm: BOOL;
    END_VAR
    // запуск мотора
    motorTrigRs(SET:= onMotor, RESET1:= offMotor OR motorAlarmOut);
    IF motorTrigRs.Q1 THEN
    	MotorOn();
    ELSE
    	MotorOff();
    END_IF
    motorOut:= statusMotor;
    // отследить аварию мотора
    IF alarmKz OR alarmTemp THEN
    	AlarmOn();
    ELSE
    	AlarmOff();
    END_IF
    motorAlarmOut:= statusAlarm;
    
    (* Метод выключения Аварии*)
    METHOD AlarmOff : BOOL
    statusAlarm:= FALSE;
    (* Метод включения Аварии*)
    METHOD AlarmOn : BOOL
    statusAlarm:= TRUE;
    (* выключить мотор*)
    METHOD MotorOff : BOOL
    statusMotor:= FALSE;
    (* включить Мотор*)
    METHOD MotorOn : BOOL
    statusMotor:= TRUE;
    --------------------------------------------
    PROGRAM PLC_PRG
    VAR
    	// блок моторов
    	// входы 
    	InStartMotor_2:BOOL;// пуск мотора
    	InStopMotor_2: BOOL;// стоп мотора
    	// авария мотора
    	InAlarmKz_2,InAlarmTemp_2: BOOL;
    
    	// выходы мотора
    	Q_2Motor: BOOL;
    	Q_2Alarm: BOOL;
    
    	// объект мотор
    	objMotor_2: classMotor;
    END_VAR
    
    
    	objMotor_2(onMotor:= InStartMotor_2,offMotor:= InStopMotor_2,// включить мотор
    				alarmKz:= InAlarmKz_2,alarmTemp:= InAlarmTemp_2,// отслеживаем аварию
    				motorOut=> Q_2Motor,motorAlarmOut=> Q_2Alarm);// визуализация выходов мотора и аварии

  3. #6643

    По умолчанию

    Цитата Сообщение от bango Посмотреть сообщение
    Прошу помощи по рефакторингу. Задача есть мотор асинхронный кнопка ПУСК без фиксации кнопка СТОП с фиксацией и контроль за АВАРИЯМИ по току и температуре.
    Код:
    //интерфейс аварий
    INTERFACE IAlarm
    // Метод выключения Аварии
    METHOD AlarmOff : BOOL
    VAR_INPUT
    END_VAR
    // Метод включения Аварии
    METHOD AlarmOn : BOOL
    VAR_INPUT
    END_VAR
    
    // Интерфей Моторов
    INTERFACE IMotor
    // выключить мотор
    METHOD MotorOff : BOOL
    VAR_INPUT
    END_VAR
    // включить Мотор
    METHOD MotorOn : BOOL
    VAR_INPUT
    END_VAR
    
    ---------------------------------------------
    // класс мотор с отслеживанием аварии
    FUNCTION_BLOCK classMotor IMPLEMENTS IMotor, IAlarm
    VAR_INPUT
    	onMotor: BOOL;// запуск мотора
    	offMotor: BOOL;// выключение мотора
    	alarmKz: BOOL; //авария короткого замыкания
    	alarmTemp: BOOL;//авария по температуре
    END_VAR
    VAR_OUTPUT
    	motorOut: BOOL;//выход мотора
    	motorAlarmOut: BOOL;// выход аварии мотора
    END_VAR
    VAR
    	// Логика работы
    	motorTrigRs: Standard.RS;
    	statusMotor: BOOL;
    	statusAlarm: BOOL;
    END_VAR
    // запуск мотора
    motorTrigRs(SET:= onMotor, RESET1:= offMotor OR motorAlarmOut);
    IF motorTrigRs.Q1 THEN
    	MotorOn();
    ELSE
    	MotorOff();
    END_IF
    motorOut:= statusMotor;
    // отследить аварию мотора
    IF alarmKz OR alarmTemp THEN
    	AlarmOn();
    ELSE
    	AlarmOff();
    END_IF
    motorAlarmOut:= statusAlarm;
    
    (* Метод выключения Аварии*)
    METHOD AlarmOff : BOOL
    statusAlarm:= FALSE;
    (* Метод включения Аварии*)
    METHOD AlarmOn : BOOL
    statusAlarm:= TRUE;
    (* выключить мотор*)
    METHOD MotorOff : BOOL
    statusMotor:= FALSE;
    (* включить Мотор*)
    METHOD MotorOn : BOOL
    statusMotor:= TRUE;
    --------------------------------------------
    PROGRAM PLC_PRG
    VAR
    	// блок моторов
    	// входы 
    	InStartMotor_2:BOOL;// пуск мотора
    	InStopMotor_2: BOOL;// стоп мотора
    	// авария мотора
    	InAlarmKz_2,InAlarmTemp_2: BOOL;
    
    	// выходы мотора
    	Q_2Motor: BOOL;
    	Q_2Alarm: BOOL;
    
    	// объект мотор
    	objMotor_2: classMotor;
    END_VAR
    
    
    	objMotor_2(onMotor:= InStartMotor_2,offMotor:= InStopMotor_2,// включить мотор
    				alarmKz:= InAlarmKz_2,alarmTemp:= InAlarmTemp_2,// отслеживаем аварию
    				motorOut=> Q_2Motor,motorAlarmOut=> Q_2Alarm);// визуализация выходов мотора и аварии
    А что тут непонятного? В prg функциональному блоку передаются значения кнопок, в блоке тупо включить/выключить. Ну ещё парочка интерфейсов, в которых я не разбираюсь...

  4. #6644

    По умолчанию

    Здравствуйте коллеги, подскажите пожалуйста, как подключиться к симплскаде от ПЛК210? говорят, что можно как то через символьные переменные и по ОПС серверу(arOPC). Что нужно включить или настроить у ПЛК 210. чтоб подключиться?Снимок.PNG
    Последний раз редактировалось sssssaaaaabbbbb; 21.12.2023 в 14:54.

  5. #6645
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,643

    По умолчанию

    Цитата Сообщение от sssssaaaaabbbbb Посмотреть сообщение
    Здравствуйте коллеги, подскажите пожалуйста, как подключиться к симплскаде от ПЛК210? говорят, что можно как то через символьные переменные и по ОПС серверу(arOPC). Что нужно включить или настроить у ПЛК 210. чтоб подключиться?Снимок.PNG
    Добрый день.
    Посмотрите примеры в этом документе:
    https://ftp.owen.ru/CoDeSys3/11_Docu...5_OPC_v3.0.pdf

  6. #6646

    По умолчанию

    Как мне считать эти цифры? Снимок.PNG

  7. #6647

  8. #6648

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Выберите функцию 04.
    Снимок.PNG это я уже делал

  9. #6649
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,643

    По умолчанию

    Цитата Сообщение от sssssaaaaabbbbb Посмотреть сообщение
    Снимок.PNG это я уже делал
    Используйте вместо Modbus Poll другое ПО, в котором есть логи - например, Modbus Universal MasterOPC
    https://masteropc.ru/download

  10. #6650

    По умолчанию

    Добрый вечер.
    Подскажите пожалуйста, как правильно организовать задержку в цикле.
    Поскольку из-за того что в string можно затолкать всего 255 символов, курл со всеми токенами и ботАйДи занимает 164 символа UTF-8 оставляя на сообщение около 45 символов UTF16

    Оттого появилась задача - отправлять сообщения в телеграм с задержкой в 2 секунды в связи с ограничением API не более 30 сообщений в минуту и не более 1 в секунд.

    Хотел затолкать TON прямо в начало цикла, типа wait. но не понимаю как его правильно прикрутить.


    Код:
    IF eStatus <> Mx210Assistant.ANALOG_SENSOR_ERRORS.NO_ERROR 
    
    THEN	xSensorError	:=	TRUE;
    		wsErrorMessage	:=	ANALOG_SENSOR_ERROR_TO_WSTRING(eStatus);
    		wsMessage		:=	WCONCAT(wsSensorName,wsErrorMessage);
    		
    		sCommand := OSU.ReplaceAllSubstrings(c_sCommand,	'#TOKEN#',			sToken);
    		sCommand := OSU.ReplaceAllSubstrings(sCommand,		'#CHAT_ID#',		sChatId);
    		sCommand := OSU.ReplaceAllSubstrings(sCommand,		'#PARSE_MODE#',		sParseMode);
    		
    		STU.ConvertUTF16toUTF8(ADR(wsMessage), ADR(sUtf8Message), SIZEOF(sUtf8Message), FALSE);
    		
    		sCommand := OSU.ReplaceAllSubstrings(sCommand,		'#TEXT#',			sUtf8Message);
    		
    
    ELSIF	rValue > rHiSpDeviationLevel OR rValue < rLowSpDeviationLevel
    	THEN
    		rValueRound			:=	OSCAT_BASIC.ROUND(rValue,2);
    		wsValueText			:=	TO_WSTRING(rValueRound);
    		wsSetPointText		:=	TO_WSTRING(rSetPoint);
    		wsMaxDevPerc		:=	TO_WSTRING(iMaxDeviationPercent);
    								
    		awsMessage[1]		:=	wsSensorName;
    		awsMessage[2]		:=	OSU.WCONCAT8("Отклонился от уставки", wsSetPointText, " более чем на ", wsMaxDevPerc, "%");
    		awsMessage[3]		:= 	OSU.WCONCAT4("Текущее значение датчика", wsValueText, wsUnitsName, "");
    		
    		
    		FOR i := 1	TO 3 DO
    
    			sCommand := OSU.ReplaceAllSubstrings(c_sCommand,	'#TOKEN#',			sToken);
    			sCommand := OSU.ReplaceAllSubstrings(sCommand,		'#CHAT_ID#',		sChatId);
    			sCommand := OSU.ReplaceAllSubstrings(sCommand,		'#PARSE_MODE#',		sParseMode);
    			
    			STU.ConvertUTF16toUTF8(ADR(awsMessage[i]), ADR(sUtf8Message), SIZEOF(sUtf8Message), FALSE);
    			
    			sCommand := OSU.ReplaceAllSubstrings(sCommand,		'#TEXT#',			sUtf8Message);
    		END_FOR
    							
    						
    		
    ELSE
    	xSensorOK := TRUE;
    	
    END_IF

Страница 665 из 859 ПерваяПервая ... 165565615655663664665666667675715765 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 861
    Последнее сообщение: 31.12.2025, 23:19
  2. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 4058
    Последнее сообщение: 30.12.2025, 11:10
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 273
    Последнее сообщение: 08.09.2025, 13:21
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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