Страница 3 из 8 ПерваяПервая 12345 ... ПоследняяПоследняя
Показано с 21 по 30 из 72

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

  1. #21

    По умолчанию

    интересно, как вы собираетесь в ворд 32 бита записать?

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

    По умолчанию

    я менял тип на UDINT материтса меня беспокоит как мне засунь все 160 маршрутов переменная fan даже с типом UDINT это 32 бита
    Последний раз редактировалось alexval2006; 13.09.2011 в 14:49.

  3. #23

    По умолчанию

    как матерится? почему даже? переменная фан будет иметь в себе 32 бита только в 3х целочисленных случаях

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

    По умолчанию

    теперь компилируется теперь нужно только заставить работать как надо
    Код:
    FUNCTION_BLOCK set_cul_march_EL
    VAR_INPUT
    	in: DWORD;
    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
    	Stop1, Start1, Stop2, Start2, Stop3, Start3, Stop4, Start4, Stop5, Start5, Stop6, Start6,
           Stop7, Start7, Stop8, Start8, Stop9, Start9, Stop10, Start10, Stop11, Start11, Stop12,
           Start12, Stop13, Start13, Stop14, Start14, Stop15, Start15, Stop16, Start16, Stop17,
           Start17, Stop18, Start18, Stop19, Start19, Stop20, Start20, Stop21, Start21, Stop22,
           Start22, Stop23, Start23, Stop24, Start24, Stop25, Start25, Stop26, Start26, Stop27,
           Start27, Stop28, Start28, Stop29, Start29, Stop30, Start30, Stop31, Start31, Stop32,
           Start32, Stop33, Start33, Stop34, Start34, Stop35, Start35, Stop36, Start36, Stop37,
           Start37, Stop38, Start38, Stop39, Start39, Stop40, Start40, Stop41, Start41, Stop42,
           Start42, Stop43, Start43, Stop44, Start44, Stop45, Start45, Stop46, Start46, Stop47,
           Start47, Stop48, Start48, Stop49, Start49, Stop50, Start50:TP:= ( PT := T#5s);
           Stop51, Start51, Stop52, Start52, Stop53, Start53, Stop54, Start54, Stop55, Start55,
           Stop56, Start56, Stop57, Start57, Stop58, Start58, Stop59, Start59, Stop60, Start60,
           Stop61, Start61, Stop62, Start62, Stop63, Start63, Stop64, Start64, Stop65, Start65,
           Stop66, Start66, Stop67, Start67, Stop68, Start68, Stop69, Start69, Stop70, Start70,
           Stop71, Start71, Stop72, Start72, Stop73, Start73, Stop74, Start74, Stop75, Start75,
           Stop76, Start76, Stop77, Start77, Stop78, Start78, Stop79, Start79, Stop80, Start80,
           Stop81, Start81, Stop82, Start82, Stop83, Start83, Stop84, Start84, Stop85, Start85,
           Stop86, Start86, Stop87, Start87, Stop88, Start88, Stop89, Start89, Stop90, Start90,
           Stop91, Start91, Stop92, Start92, Stop93, Start93, Stop94, Start94, Stop95, Start95,
           Stop96, Start96, Stop97:TP:= ( PT := T#5s);
           Start97, Stop98, Start98, Stop99, Start99, Stop100, Start100, Stop101, Start101,
           Stop102, Start102, Stop103, Start103, Stop104, Start104, Stop105, Start105, Stop106,
           Start106, Stop107, Start107, Stop108, Start108, Stop109, Start109, Stop110, Start110,
           Stop111, Start111, Stop112, Start112, Stop113, Start113, Stop114, Start114, Stop115,
           Start115, Stop116, Start116, Stop117, Start117, Stop118, Start118, Stop119, Start119,
           Stop120, Start120, Stop121, Start121, Stop122, Start122, Stop123, Start123, Stop124,
           Start124, Stop125, Start125, Stop126, Start126, Stop127, Start127, Stop128, Start128
           :TP:= ( PT := T#5s);
           Stop129, Start129, Stop130, Start130, Stop131, Start131, Stop132, Start132, Stop133,
           Start133, Stop134, Start134, Stop135, Start135, Stop136, Start136, Stop137, Start137,
           Stop138, Start138, Stop139, Start139, Stop140, Start140, Stop141, Start141, Stop142,
           Start142, Stop143, Start143, Stop144, Start144, Stop145, Start145, Stop146, Start146,
           Stop147, Start147, Stop148, Start148, Stop149, Start149, Stop150, Start150, Stop151,
           Start151, Stop152, Start152, Stop153, Start153, Stop154, Start154, Stop155, Start155,
           Stop156, Start156, Stop157, Start157, Stop158, Start158, Stop159, Start159, Stop160,
           Start160:TP:= ( PT := T#5s);
    
    	fan: DWORD;(*32 bita*)
    	i: DWORD;(*32 bita*)
    
    	mech : ARRAY[1..160] OF BOOL;
    	setmech : ARRAY[1..160] OF BYTE :=
           (*В этом массиве хранитса состояние вентиляторов
           для каждого из 160 маршрутов норий №1-4*)
    (*16*)
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
               остальные одинаковы непоказаны
    (*160*)
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000;
    END_VAR
    (****************************************************)
    	fan:=0;
    FOR i :=1 TO 160 DO
    	fan:=SEL( mech[i], fan, fan OR setmech[i] );
    END_FOR
    
    mech[1]:=in.0;
    mech[2]:=in.1;
    mech[3]:=in.2;
    mech[4]:=in.3;
    
    	Start1(IN :=  fan.0 OR fan.2, Q =>Do1);
    	Stop1(IN :=  NOT fan.0 OR fan.2, Q => Do2);
    	Start2(IN :=  fan.1 OR fan.3, Q => Do3);
    	Stop2(IN :=  NOT fan.1 OR fan.3, Q => Do4);
    Вложения Вложения

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

    По умолчанию

    так не компилируется Do1..Do64 : BOOL; пришлось по старинке писать

    материтса на Fan:ARRAY[0..31] OF TFan:=(PT:=T#5s);
    неверное начальное значение и неизвестный тип массива
    ошибки 3760, 3740
    Код:
    FUNCTION_BLOCK TFans32
    VAR_INPUT
    (*Если на вход можно массив пихнуть, то даже проще.*)
    	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,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
    (*32*)
    ..................................................
    (*160*)
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000,
           2#00000000000000000000000000000000;
    
    	Fan:ARRAY[0..31] OF TFan:=(PT:=T#5s);
    i:INT;
    State: DWORD;
    	PDi, PStart, PStop:POINTER TO BOOL;
    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 в 09:00.

  6. #26

    По умолчанию

    Код:
    	Fan: ARRAY[0..31] OF TFan := (PT := T#5s);
    у меня тоже на это не матерится, может просто не сделали первый ФБ?

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

    По умолчанию

    изменил строку на Fan:ARRAY[0..31] OF TFan; осталась только одна ошибка неизвестный тип массива. еще скобка квадратная на одном массиве отсутствовала добавил а как сунуть это немного не понял
    Fan[i](
    PT := T#?, //при вызове пихнете PT
    ..
    );
    Код:
    FUNCTION_BLOCK TFans32
    VAR_INPUT
    (*Если на вход можно массив пихнуть, то даже проще.*)
    	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;
    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

  8. #28

    По умолчанию

    вы создали ФБ TFan?
    при вызове блока тфанс32 пропишете необходимое значение входа pt

  9. #29
    Пользователь
    Регистрация
    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 в 14:05.

  10. #30

    По умолчанию

    Цитата Сообщение от swerder Посмотреть сообщение
    вы создали ФБ TFan?
    Цитата Сообщение от alexval2006 Посмотреть сообщение
    да всё объявил вызвал
    в итоге имеем что имеем - никаких ФБ TFan не создано, но мы продолжаем утверждать что КДС виноват...

Страница 3 из 8 ПерваяПервая 12345 ... ПоследняяПоследняя

Ваши права

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