Здравствуйте, форумчане. Возник вопрос, как это сделать, но пока не получается, точнее получилось, но не очень удобно. Есть массив
Код:
BoolArray:ARRAY[0..15] OF BOOL;
Пришлось каждый элемент массива прописывать в Modbus Slave во всех 16 битах (битовых каналах).
Хотелось получить доступ к битам через массив. Забиваю этот массив в Channel 0[0] (2-й элемент в иерархии) - выдает ошибку "Типы канала и соотнесённой переменной Application.PLC_PRG.BoolArray не совпадают", забиваю в Channel 0 - компилится, но происходит следующее:
bit1 меняю - не меняется, но устанавливается bit8 (256) и не сбрасывается, bit0 только меняется. Использую функцию Read Holding Registers (03) длина 1. Т.е. реально тип BOOL занимает 8 бит, а BIT - 1 бит, поэтому такое поведение. Массив из BIT объявить нельзя, как сказано в "Работа с памятью в CODESYS V3". Есть примеры как объединить BIT в WORD через структуру, а как это сделать в массив, чтобы программно можно было перебрать все биты через цикл и не прописывая каждый бит Modbus каналах?