Просмотр полной версии : ПЛК210 Указание адресов регистро MBTCP_Slave с помощью "AT" для экземпляров структуры
Добрый день!
Пишу первую программу для ПЛК210. Планирую данные из экземпляров пользовательских структур (UDT) выдавать по MBTCP-Slave на панель СП310-Р
В сеть Ethernet добавил ModbusTCP_Slave_Device, указал 2000 Holding Registers, поставил галочку Writeable
на закладке Mapping появился массив %QW55 [0..1999] OF WORD - но сюда свои структуры я не привяжу
например, можно ли сделать так:
VAR_GLOBAL
uBreak_1 AT %MW10 : T_Break; // Тормоз №1
uBreak_2 AT %MW20 : T_Break; // Тормоз №2
END_VAR
где T_Break моя UDT структура (набор UINT и BIT в основном)
или нужно указывать адрес из диапазона %QW55-%QWxx55
или инструкция AT тут вообще не работает? не нашел в хэлпе и на форуме примеров с ней
живого ПЛК на руках нет, не могу проверить
kondor3000
20.05.2024, 14:05
Добрый день!
Пишу первую программу для ПЛК210. Планирую данные из экземпляров пользовательских структур (UDT) выдавать по MBTCP-Slave на панель СП310-Р
В сеть Ethernet добавил ModbusTCP_Slave_Device, указал 2000 Holding Registers, поставил галочку Writeable
на закладке Mapping появился массив %QW55 [0..1999] OF WORD - но сюда свои структуры я не привяжу
например, можно ли сделать так:
где T_Break моя UDT структура (набор UINT и BIT в основном)
или нужно указывать адрес из диапазона %QW55-%QWxx55
или инструкция AT тут вообще не работает? не нашел в хэлпе и на форуме примеров с ней
живого ПЛК на руках нет, не могу проверить
У вас структура занимает 2000 регистров? Биты пробовали упаковать в Маски WORD ?
Обычно делают так, выделяют массив равный размеру структуры и по его адресу кладут структуру. Проверить размер структуры
в байтах можно через SIZEOF.
Здесь скрин нескольких массивов, для чтения, записи в эмулятор панели (в панель) с использованием прямых адресов https://owen.ru/forum/showthread.php?t=39248&page=4#39
Пример кода, структура COMPRESSOR повторяется 7 раз
compressors AT%QW10 : ARRAY [1..7] OF COMPRESSOR;
Sergey666
20.05.2024, 14:37
или нужно указывать адрес из диапазона %QW55-%QWxx55
Да, таким образом вы размещаете свою структуру в области памяти модбас слэйва.
Аккуратно с выравниванием! Bool в виде отдельной сущности в CoDeSys занимает в памяти байт!
Так что зря вы не имея на руках ПЛК, да в первый раз начали с фигур высшего пилотажа, можно в штопор уйти.
У вас структура занимает 2000 регистров? Биты пробовали упаковать в Маски WORD ?
ну это я с запасом указал, по факту потом подрежу
у меня и так в структурах BIT а не BOOL, BIT как раз 1 бит занимает и в WORD складывается по 16 штук (был опыт CDS 3.5 на китайских ПЛК)
нашел на форуме, что в моем случае правильнее использовать OwenCommunication -> MB_TcpSlave, на pData задал ему ADR(%MW0), на szSize 4000 указал
теперь если объявить так:
VAR_GLOBAL
uBreak_1 AT %MW10 : T_Break; // Тормоз №1
uBreak_2 AT %MW20 : T_Break; // Тормоз №2
END_VAR
то как раз все данные структур попадают в область Holding Registers (в другие тоже зеркалятся, но не интересно)
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot