2016-12-16 19 views
0

Я обманываю в TwinCAT3, пытаясь познакомиться с ST. Теперь у меня есть простой вопрос.Использование массивов или байтов для установки нескольких выходов в структурированном тексте

Скажем, у меня 8 светодиодов. Каждый назначается на выход 1-8. Теперь я хочу, чтобы иметь возможность отправлять в байт, выглядящий следующим образом: 10101010. Позволяет вызывать эту переменную для хранения этого байта setOUTPUTS. Могу ли я активировать setOUTPUTS следующим образом?

bsetOUTPUTS := BYTE; 

После того как я инициализировать эту переменную, как я мог цикл через него, чтобы установить каждый светодиод соответствующего бита?

Например: setOUTPUTS = 10001000, как бы я прошел через переменную setOUTPUTS, чтобы установить светодиод 8 и светодиод 4 ON, оставив остальные выключенными.

ЕСЛИ это невозможно, что альтернативный способ использования массивов?

Спасибо!

+0

вы программирование в CoDeSys? – mrsargent

+0

Нет в среде TwinCAT – youngEngineer

ответ

0

Для инициализации байт вы бы

setOUTPUTS : BYTE:=86; (* equiavlent to 01010101 *) 

вы можете установить выходы на основе бита следующим

out1 := setOUTPUTS.0; (* bit 0 of byte *) 
out2:=setOUTPUTS.1; (* bit 1 of byte *) 

вы могли бы подумать, что вы могли бы сделать что-то вроде Переберите битов байт

FOR i:=0 TO 8 BY 1 DO 
(* out is an array of outputs *) 
out[i] := setOUTPUTS.i; 
END_FOR 

, но, к сожалению, вы не можете этого сделать. Насколько я знаю, их индивидуальная настройка - единственный способ добиться этого.

1

Вы можете сравнить каждый бит ваших setOutputs переменных с битом, который смещается по длине setOutputs:

FOR i := 0 TO 7 DO 
    out[i] := setOutputs AND SHL(1, i); 
END_FOR; 
+0

Хороший ответ. Я об этом не думал. +1 для вас. – mrsargent

+0

Вышел бы [i] массив/перечисление 8 светодиодов? и означает ли SHL сдвиг-левый на 1? Благодаря! – youngEngineer

+0

out [i] - массив, который может быть отображен на 8 отдельных светодиодов. SHL (n, i) сдвинет число n, 'i' раз влево. – pboedker

 Смежные вопросы

  • Нет связанных вопросов^_^