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

Тема: Управление работой вентиляторов

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    Пользователь
    Регистрация
    23.01.2008
    Адрес
    Белгородская область, Валуйки
    Сообщений
    274

    По умолчанию

    вы создали ФБ TFan?
    при вызове блока тфанс32 пропишете необходимое значение входа pt что то его невидно
    да всё объявил вызвал
    Почему у этого массива Fan:ARRAY[0..31] OF TFan; вместо базового типа написано TFan возможно в этом ошибка? может надо так Fan:ARRAY[0..31] OF INT; ? тогда ругаетса на это
    Fan[i](
    State:=EXTRACT(State,i),
    Start=> PStart^,
    Stop=>PStop^
    ); вызывать можно только экземпляр функционального блока
    Код:
    FUNCTION_BLOCK TFans32
    VAR_INPUT
    	PT:TIME;
    (*Если на вход можно массив пихнуть, то даже проще.*)
    	Di1, Di2, Di3, Di4, Di5, Di6, Di7, Di8, Di9, Di10, Di11, Di12, Di13, Di14,
           Di15, Di16, Di17, Di18, Di19, Di20, Di21, Di22, Di23, Di24, Di25, Di26,
           Di27, Di28, Di29, Di30, Di31, Di32, Di33, Di34, Di35, Di36, Di37, Di38,
           Di39, Di40, Di41, Di42, Di43, Di44, Di45, Di46, Di47, Di48, Di49, Di50,
           Di51, Di52, Di53, Di54, Di55, Di56, Di57, Di58, Di59, Di60, Di61, Di62,
           Di63, Di64: BOOL;
    
    	Di65, Di66, Di67, Di68, Di69, Di70, Di71, Di72, Di73, Di74, Di75, Di76,
           Di77, Di78, Di79, Di80, Di81, Di82, Di83, Di84, Di85, Di86, Di87, Di88,
           Di89, Di90, Di91, Di92, Di93, Di94, Di95, Di96, Di97, Di98, Di99, Di100,
           Di101, Di102, Di103, Di104, Di105, Di106, Di107, Di108, Di109, Di110,
           Di111, Di112, Di113, Di114, Di115, Di116, Di117, Di118, Di119, Di120,
           Di121, Di122, Di123, Di124, Di125, Di126, Di127, Di128: BOOL;
    	Di129, Di130, Di131, Di132, Di133, Di134, Di135, Di136, Di137, Di138,
           Di139, Di140, Di141, Di142, Di143, Di144, Di145, Di146, Di147, Di148,
           Di149, Di150, Di151, Di152, Di153, Di154, Di155, Di156, Di157, Di158,
           Di159, Di160: BOOL;
    END_VAR
    VAR_OUTPUT
    	Do1, Do2, Do3, Do4, Do5, Do6, Do7, Do8, Do9, Do10, Do11, Do12, Do13, Do14,
           Do15, Do16, Do17, Do18, Do19, Do20, Do21, Do22, Do23, Do24, Do25, Do26,
           Do27, Do28, Do29, Do30, Do31, Do32, Do33, Do34, Do35, Do36, Do37, Do38,
           Do39, Do40, Do41, Do42, Do43, Do44, Do45, Do46, Do47, Do48, Do49, Do50,
           Do51, Do52, Do53, Do54, Do55, Do56, Do57, Do58, Do59, Do60, Do61, Do62,
           Do63, Do64: BOOL;
    END_VAR
    VAR
    	Set:ARRAY[1..160] OF DWORD:=
          (*В этом массиве хранитса состояние вентиляторов
           для каждого из 160 маршрутов норий №1-4*)
    (*16*)
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
    .............................................................
           2#00000000000000000000000000000000;
    
    	Fan:ARRAY[0..31] OF TFan;
    	i:INT;
    	State: DWORD;
    	PDi, PStart, PStop:POINTER TO BOOL;
    	tStart, tStop:TP;
    END_VAR
    (*******************************************)
    State:=0;
    PDi:=ADR(Di1);
    FOR i:=1 TO 160 DO
    State:= SEL(PDi^,State,State OR Set[i]);
    PDi:=PDi+1;
    END_FOR
    
    PStart:=ADR(Do1);
    PStop:=ADR(Do2);
    FOR i:=0 TO 31 DO
    Fan[i](
    State:=EXTRACT(State,i),
    Start=> PStart^,
    Stop=>PStop^
    );
    PStart:=PStart+2;
    PStop:=PStop+2;
    END_FOR
    Вложения Вложения
    Последний раз редактировалось alexval2006; 14.09.2011 в 13:05.

Ваши права

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