Просмотр полной версии : Адресация переменных Codesys
high_roll
29.08.2024, 12:14
Доброго времени суток всем!
хочу узнать про нумерацию регистров по Modbus в Codesys 2.3 для контроллера ПКЛ110-М02
у меня сейчас настроена сквозная нумерация регистров (т.е. при добавлении адресов в конфигурации ПЛК регистры начинаются с 0 адреса и дальше 1, 2, 3, 4, и т.д.)
можно ли для Вашего контроллера создать переменную уже с заданным адресом, например чтобы значение Float передавалось по регистру с адресом 350, а переменная Word - по адресу 400 ИЛИ мне в ручную нужно создать 349 пустых переменных, на 350 будет необходимый мне Float, затем ещё 40+ пустых переменных и по адресу 400 нужный мне Word?
вот конкретный пример того, что мне нужно: сейчас мне пришлось создать пустые переменные с 53 по 56, чтобы по 57 адресу отправить нужный мне бит
можно ли сразу создать переменную с нужным адресом, и не заниматься созданием пустых переменных?
я искал решение на форуме и смотрел библиотеки, но или не понял способ решения моей проблемы или не нашёл то, что мне нужно
kondor3000
29.08.2024, 12:37
Доброго времени суток всем!
хочу узнать про нумерацию регистров по Modbus в Codesys 2.3 для контроллера ПКЛ110-М02
вот конкретный пример того, что мне нужно: сейчас мне пришлось создать пустые переменные с 53 по 56, чтобы по 57 адресу отправить нужный мне бит
можно ли сразу создать переменную с нужным адресом, и не заниматься созданием пустых переменных?
я искал решение на форуме и смотрел библиотеки, но или не понял способ решения моей проблемы или не нашёл то, что мне нужно
В слейве нельзя задать адрес, зато адрес можно задать в мастере. Если вам нужен 57 регистр, кто мешает вам сделать в Мастере его 53 и не добавлять пустые в слейве?
Тем более с 350 и 400 регистром, проще в Мастере его сделать хоть 50, хоть 0.
Если у вас нет вариантов перепрограммировать Мастера, то можно добавить 300 (400) штук 2Byte или 150(200) штук 4Byte.
Читать вы будете не всё, а только 2 нужных регистра.
Тут биб-ки для Слейва и описание https://owen.ru/forum/showthread.php?t=28996
Через библиотеки вроде можно. Через Конфигурацию нет, к тому же там есть выравнивание.
high_roll
29.08.2024, 16:50
проблема в том, что мастер-устройство у заказчика
а они вообще не АЛЁ и не знают как да и что менять
ну вот вариант с библиотеками хороший
дайте совет пожалуйста какие есть, и есть ли к ним руководство?
А что вам дадут лежащие где-то здесь либы? Вам нужно 57 и 400. Ну поставите стартовый 57, и все равно будет структура в 343 регистра.
Местная либа (ниже привели) не работает с отдельными регистрами. Вы также определяете непрерывный блок памяти для слейва, только не в конфигурации. Разница - небольшая.
Лучше уточняйте у них (где мастер) макс номер регистра. Если из тыщи не вышли - наколотите "4 byte" сколько указали по максимуму/2 (идент узла в помощь) и пишите только что нужно как и делали.
А чтоб забыть про конфигурацию и не заниматься хренью с вычислениями адресов - можно типа так:
var
регистр_W : word := ..
регистр_X : word := ..
W : word;
X : real;
---------------------------
SysMemCpy(ADR(W), ADR(%QD6.1.0) + 2 * регистр_W, SIZEOF(W)); //взяли из слейва
.. поработали c W
X := .. посчитали чего-то
SysMemCpy(ADR(%QD6.1.0) + 2 * регистр_X, ADR(X), SIZEOF(X)); //и положили в слейв
И пофиг на выравнивание если вдруг невыравненые адреса у того мастера.
А для всяких булей проще через точку или промежуточные функции GET/SET_BIT написать с заданием абсолютного адреса бита. Погромист вы или кто? Пусть машина считает - она для того.
Да и для либы с этим же проще. Все равно блок слейва - единое пространство памяти
Ну или через syslibcom пакеты самому колбасить "на лету" без выделения памяти под слейв - это скучно хотя и возможно.
kondor3000
29.08.2024, 18:44
Тут биб-ки для Слейва и описание https://owen.ru/forum/showthread.php?t=28996
Но лучший вариант, скопировать 2Byte (4Byte) в конфигурации и зажать секунд на 5-7 Ctrl + V
high_roll
02.09.2024, 11:59
Но лучший вариант, скопировать 2Byte (4Byte) в конфигурации и зажать секунд на 5-7 Ctrl + V
понял, спасибо :D
high_roll
02.09.2024, 12:00
и благодарю за другие советы, буду смотреть, что лучше подойдёт
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot