Показано с 1 по 10 из 126

Тема: Логика: Распознать отдельно короткое и отдельно длинное нажатия (CodeSys v3)

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Teemon Двумя вещами:
    а) SysCom
    б) Нормально написанным конечным автоматом для диммера.
    Ща портировал на CDS v3.5, и при опросе 9 модулей IO всё пашет. Пока ещё тестирую.
    Про планировщик, про прочее - позже будут посты. Сильно позже.
    Да, запросы составляю вручную. Код примерно такой злой:
    Код:
    IF (bPortR1Open = TRUE) THEN
    	CASE iMBReqStateR1 OF
    		iReqR1W2Msk:	//ОПРОС МОДУЛЯ W1 - Маска Входов
    			fbMbReqW2Msk(
    				bEnable:= TRUE, 
    				hPort:= hPortR1, 
    				pCmdBuffer:= ADR(pBuffReqReadDIMaskW2), 
    				pCmdBufferLen:= SIZEOF(pBuffReqReadDIMaskW2), 
    				pRcvBuffer:= ADR(bfRecieveBuffer), 
    				pRcvBytesNeed:= wBuffAnswReadDIMaskW2, 
    				bCheckCRC:= TRUE, 
    			);
    			IF (fbMbReqW2Msk.bComplete = TRUE) THEN	//Парсим данные в DWORD маски входов, если запрос завершился успешно
    				iMBReqStateR1 := iReqR1W2Cnt;	//Идём на следующий шаг
    				iomW2DIMask := BYTE_TO_DWORD(bfRecieveBuffer[6])				//Входы 1-8
    							OR SHL(BYTE_TO_DWORD(bfRecieveBuffer[5]), 8*1)		//Входы 9-16
    							OR SHL(BYTE_TO_DWORD(bfRecieveBuffer[4]), 8*2)		//Входы 17-24
    							OR SHL(BYTE_TO_DWORD(bfRecieveBuffer[3]), 8*3);		//Входы 25-32
    			END_IF
    
    ... ... ... ... ...
    
    IF (bPortR2Open = TRUE) THEN
    	CASE iMBReqStateR2 OF
    		iReqR2W5Out:	//ОПРОС МОДУЛЯ W5 - Маска выходов !!
    			bfSendBuffer[0]	:= 20;		//Адрес 
    			bfSendBuffer[1]	:= 16#10; 	//Команда
    			bfSendBuffer[2]	:= 16#00; 	//Старший (начальный адрес регистра)
    			bfSendBuffer[3]	:= 16#61; 	//Младший (начальный адрес регистра)
    			bfSendBuffer[4]	:= 16#00; 	//Старший (число регистров)
    			bfSendBuffer[5]	:= 16#02; 	//Младший (число регистров)
    			bfSendBuffer[6]	:= 4; 		//Число байт данных (далее)
    			bfSendBuffer[7]	:= DWORD_TO_BYTE(SHR(wBitMask32W5, 8*3)); //16#FF; 	//Выходы 25-32
    			bfSendBuffer[8]	:= DWORD_TO_BYTE(SHR(wBitMask32W5, 8*2)); //16#FF; 	//Выходы 17-24
    			bfSendBuffer[9]	:= DWORD_TO_BYTE(SHR(wBitMask32W5, 8*1));// 16#FF; 	//Выходы 9-16
    			bfSendBuffer[10]:= DWORD_TO_BYTE(SHR(wBitMask32W5, 8*0));// 16#FF;	//Выходы 1-8 
    
    			CSMBAddBuffCRC(ADR(bfSendBuffer), SIZEOF(bfSendBuffer), 11);
    
    			fbMbReqW5(
    				bEnable:= TRUE, 
    				hPort:= hPortR2, 
    				pCmdBuffer:= ADR(bfSendBuffer), 
    				pCmdBufferLen:= 13, 
    				pRcvBuffer:= ADR(bfRecieveBuffer), 
    				pRcvBytesNeed:= wBuffAnswWriteDOMaskW5, 
    				bCheckCRC:= TRUE, 
    			);
    
    			IF (fbMbReqW5.bComplete = TRUE) THEN
    				iMBReqStateR2 := iReqR2W6Out;
    			END_IF
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  2. #2

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Teemon Двумя вещами:
    О, ну по коду ничего страшного не вижу, на S7-1200 тоже так писал, всё "ручками". Зато работало как часы.
    ЦРЦ драйвер сам считает или нужно тоже руками считать?
    Кстати, в модбасе неизбжено (но тут уже что уж поделать) - если у меня будет ошибка опроса\таймаут - и в этот момент я жму кнопку - я потеряю её нажатие... Но по идее в шкафу ошибок должно быть очень, очень мало. Что говорит статистика?

    Как в итоге автомат работает, одиночное, длительное, двойное нажатие как разделяешь?
    Какой диммер?

Похожие темы

  1. отключение звука нажатия СП307
    от vendor в разделе Панели оператора (HMI)
    Ответов: 2
    Последнее сообщение: 25.01.2018, 10:12
  2. Ответов: 5
    Последнее сообщение: 24.07.2017, 12:08
  3. Ответов: 0
    Последнее сообщение: 31.05.2017, 19:40
  4. Подтверждение нажатия
    от Carter в разделе Master SCADA 3
    Ответов: 9
    Последнее сообщение: 14.11.2016, 17:32
  5. Нечеткая логика в CoDeSys
    от Fallensky в разделе ПЛК1хх
    Ответов: 38
    Последнее сообщение: 09.07.2011, 14:01

Ваши права

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