На ПЛК создан ModbusSlave.
В слейве определены 24 переменные REAL. (4*24=96) byte
4 переменные DWORD - еще (4*4=16) байт
4 WORD - (4*2=8) байт
Кроме того предполагаю потребуется еще некоторое количество переменных. Вот и спросил про ограничения.
500 регистров -это 4 раза по 250 байт
Да, это я ошибся когда сообщение писал. Сначала написал про 250 регистров (500 байт) и 2 телеграммы, а затем написал про 500 регистров не исправив кол-во телеграмм.
Но если правильно понял, то беспокоится о количестве переменных не особенно стоит. Больше 500 байт я в любом случае не наберу.
_____________________________________________
Еще столкнулся с проблемой
В слейве определены 4 последовательных 8-ми битных регистра.
Присвоены имена ACode0, ACode1, ACode2, ACode3
Кроме того имеется массив с 32 строками из переменной типа структура. В структуре есть одно поле BOOL.
В соответствии с этим полем необходимо установить значение бит в битовых переменных слейва Acode0, ACode1, ACode2, ACode3
Массив обрабатывается в цикле (одна строка за один цикл вызова программы)
Чтобы можно было обратиться к 4-м указанным переменным, я определил указатель на первую переменную ACode0 и указал тип DWORD
Код:
var pt_ACode: POINTER TO DWORD;
var i: BYTE; (i меняется от 0 до 32 в программе)
CASE i OF
0:
Код:
pt_ACode := ADR(ACode0);
1..32:
Далее в цикле устанавливаю биты
IF (некоторое условие1) THEN pt_ACode^:= PUTBIT(pt_ACode^, i-1, TRUE); END_IF;
IF (некоторое условие2) THEN pt_ACode^:= PUTBIT(pt_ACode^, i-1, FALSE); END_IF;
i:= i+1;
ELSE
i := 0;
END_CASE;
При компиляции дает сообщение об ошибке, что не определена переменная PUTBIT.
Библиотека UTIL.LIB подключена.
Как заставить программу увидеть эту функцию?