Так прокатывает?
E0=enum1.element1
D4.0@E0
как перебирать биты?
Re: как перебирать биты?
Скажу банальность, но можно:
1. Создать булевый массив и работать с элементами массива:
b : ARRAY[0..15] OF BOOL;
b[7]:=TRUE; b[i+1]:=FALSE;
Для переводов из слова в булевый массив и обратно написать простенький ФБ WordToBits и BitsToWord.
2. Создать 16-битную переменную типа WORD и обращаться напрямую к ее битам:
VarTest.0:=TRUE;
VarTest.12:=FALSE;
К сожалению в вложенных структурах подобное обращение к биту в слове невозможно. Почему? Для ST это необходимость.
Заменить на массив:
TYPE stBit :
STRUCT
b : ARRAY[0..15] OF BOOL;
END_STRUCT
END_TYPE
пример в конечной структуре:
TYPE stSys :
STRUCT
SubCount: INT;
CMD: stBit;
Sta: stBit;
SubSys: ARRAY[0..25] OF stSubSys;
AlarmOther: WORD;
END_STRUCT
END_TYPE
Для переводов из слова в булевый массив и обратно использовать ФБ WordToBits и BitsToWord.
1. Создать булевый массив и работать с элементами массива:
b : ARRAY[0..15] OF BOOL;
b[7]:=TRUE; b[i+1]:=FALSE;
Для переводов из слова в булевый массив и обратно написать простенький ФБ WordToBits и BitsToWord.
2. Создать 16-битную переменную типа WORD и обращаться напрямую к ее битам:
VarTest.0:=TRUE;
VarTest.12:=FALSE;
К сожалению в вложенных структурах подобное обращение к биту в слове невозможно. Почему? Для ST это необходимость.
Заменить на массив:
TYPE stBit :
STRUCT
b : ARRAY[0..15] OF BOOL;
END_STRUCT
END_TYPE
пример в конечной структуре:
TYPE stSys :
STRUCT
SubCount: INT;
CMD: stBit;
Sta: stBit;
SubSys: ARRAY[0..25] OF stSubSys;
AlarmOther: WORD;
END_STRUCT
END_TYPE
Для переводов из слова в булевый массив и обратно использовать ФБ WordToBits и BitsToWord.
Re: как перебирать биты?
нашел решение, возможно не самое изящное... но пока так
сздаем перечисление
TYPE motCtrl :
(
mstart :=0,
mstop,
......
);
END_TYPE
создаем структру
TYPE motor_t :
STRUCT
bits : ARRAY [0..15] OF BOOL;
END_STRUCT
END_TYPE
создаем переменную motor1 типа motor_t
обращаемся к битам
motor1.bits[motCtrl.mstart]
конечно громоздко но уже что-то.
будем копать дальше. жаль нельзя структуры как в С++
сздаем перечисление
TYPE motCtrl :
(
mstart :=0,
mstop,
......
);
END_TYPE
создаем структру
TYPE motor_t :
STRUCT
bits : ARRAY [0..15] OF BOOL;
END_STRUCT
END_TYPE
создаем переменную motor1 типа motor_t
обращаемся к битам
motor1.bits[motCtrl.mstart]
конечно громоздко но уже что-то.
будем копать дальше. жаль нельзя структуры как в С++
Re: как перебирать биты?
я сам только начал осваивать ст, а с си не знаком, но ас200/300 вообще-то поддерживают си. работайте там, если удобно
Re: как перебирать биты?
Можно таблицу символов экспортировать в csv, предварительно поменяв системный разделитель.
В экселе, используя его автозаполнение (т.е. набить кучу адресов вроде D4.0 можно одним движением мыши) и команду "СЦЕПИТЬ" наделать кучу нужных символов типа motor1_motCtrl_mstart
и сто раз скопипастить motor2_motCtrl_mstart, motor3_motCtrl_mstart, motor100500_motCtrl_mstart
И коммент к каждому символу прикрепить можно.
Потом из экселя импортировать в ISPSoft
Если все символы вначале создавать в экселе, группируя их на разных листах, по смыслу и своим "внутренним убеждениям" то потом, когда рисуешь прогу, найти нужный символ гораздо проще в экселе, что бы скопипастить его в прогу.
У Омрона, Сименса и Мицубиши копипастить символы в эксель и обратно можно, в ISPSoft только через экспорт-импорт, неудобно.
В экселе, используя его автозаполнение (т.е. набить кучу адресов вроде D4.0 можно одним движением мыши) и команду "СЦЕПИТЬ" наделать кучу нужных символов типа motor1_motCtrl_mstart
и сто раз скопипастить motor2_motCtrl_mstart, motor3_motCtrl_mstart, motor100500_motCtrl_mstart
И коммент к каждому символу прикрепить можно.
Потом из экселя импортировать в ISPSoft
Если все символы вначале создавать в экселе, группируя их на разных листах, по смыслу и своим "внутренним убеждениям" то потом, когда рисуешь прогу, найти нужный символ гораздо проще в экселе, что бы скопипастить его в прогу.
У Омрона, Сименса и Мицубиши копипастить символы в эксель и обратно можно, в ISPSoft только через экспорт-импорт, неудобно.
Re: как перебирать биты?
описанный мной метод
в принципе устраивает.
речь шла не об удобстве копипаста, а об избавлении от жестко привязанных цифр в индексах.
кстати в языке ST автодополнения ввода названия работает лучше. даже в скобках работает в LD так не хочет.
будем писать на ST
в принципе устраивает.
речь шла не об удобстве копипаста, а об избавлении от жестко привязанных цифр в индексах.
кстати в языке ST автодополнения ввода названия работает лучше. даже в скобках работает в LD так не хочет.
будем писать на ST