PDA

Просмотр полной версии : CodeSys, Define



SergQ
29.10.2009, 12:17
Подскажите, pls, как в CodeSys сделать подобное (из С):


#define BUFFER_SIZE 3
byte data[BUFFER_SIZE] ;



чтобы по всему проекту не иправлять константу, а только в одном месте.
Спасибо.

Малышев Олег
29.10.2009, 12:28
var constant
BUFFER_SIZE:INT:=3;
end_var
var
data:array [1..BUFFER_SIZE] of byte;
end_var

SergQ
29.10.2009, 13:29
VAR CONSTANT <--Error 4024:Global_Variables(3): Expecting VAR_GLOBAL before 'VAR'
a:INT := 4;
b:INT := 2;
END_VAR

VAR_GLOBAL
Registers: ARRAY[1..a,1..b] OF WORD; (* Registers *)
END_VAR

Малышев Олег
29.10.2009, 13:39
Var_global Constant ?

SergQ
29.10.2009, 13:45
спасибо. то, что надо.

SergQ
29.10.2009, 14:44
FOR i:=1 TO 49 BY 1 DO

Analo_PT(
IN:= %IW8, (*далее %IW10,%IW12, %IW14 *)
K:= IW_K[i],
C:= IW_C[i],
OUT=> cur[i],
ERROR_LO=>Allocur[i].0 ,
ERROR_HI=> Alhi[i].0);
END_FOR;

lazy
13.08.2010, 09:26
Добрый день! Хочется уточнить по поводу констант. Интересно, но у меня локальные константы, почему-то обнуляются после сброса. Конечно глобальные константы выход, но еще свежи воспоминания об инкапсуляции и "высоком штиле" ;). Может, что-то делаю не так?

FUNCTION_BLOCK fb

VAR CONSTANT
CONST_1: INT := 512;
CONST_2: INT := 15;
CONST_3: INT := 31;
END_VAR

После сброса все константы равны нулю. Заранее благодарен! ))

Mimas
13.03.2025, 16:22
Доброго времени!
Возможно ли программировать в CodeSys, используя именованные биты, например, что-то вроде таких конструкций:
#define EP_ON DIM.0;
VAR
DIM:WORD;
EP_ON:BOOL;
END_VAR
//------------
EP_ON:=true;
(подразумевая, что значение true передастся в DIM.0 и что связка имён произойдёт на уровне компилятора?)
Основная идея - упаковать биты с человеческими названиями в биты внутри байта (слова).

Валенок
13.03.2025, 17:21
Доброго времени!
Возможно ли программировать в CodeSys, используя именованные биты, например, что-то вроде таких конструкций:
#define EP_ON DIM.0;
VAR
DIM:WORD;
EP_ON:BOOL;
END_VAR
//------------
EP_ON:=true;


Проект/Опции/Генератор кода/Замена констант +

CONST VAR
EP_ON : INT := ... //0..15й бит
END_VAR
---
DIM.EP_ON := true;

1exan
13.03.2025, 18:01
Можете ещё поискать в справке
"bitaccess"

Mimas
28.03.2025, 14:46
Спасибо, через задание констант получилось.