Не соглашусь. На фоне этого "пустяка" потеряются остальные алгоритмы. :)
Да не вопрос. несколько строк в цикле и никаких нагромождений
Vladimir Voronenkov
"Первая Миля", Authorized ICONICS Systems Integrator
Посмотрим на современный процессор. Прост наружи, но если взглянуть на "транзисторную схему" начинки, то может вызвать только восхищение или шок. Так устроен мир.
Делаем один раз функциональный блок с двумя входами: стартовый адрес и количество слов.
И далее таскаем его по своим проектам. И не вспоминаем что там внутри, оно просто работает по умолчанию
Как вариант - каждый раз мудрим в скаде с регистрами.
Но это все лирика.
А если по факту.
Есть ModbusTCP регистр 40257 (скада не важна)
Есть 750-842 (841).
Хотим писать и читать. Как быть? Ваше предложение.
Vladimir Voronenkov
"Первая Миля", Authorized ICONICS Systems Integrator
Видимо, забираю я все свои слова обратно? :(
VAR varPLC_3 AT %IW256:INT; END_VAR;
А потом делать вместо varPLC_3:=varPLC_x, на что ругается компилятор, что-то типа %IW256:=PLC_x.
Как, интересно, это сам кодесус делает? Ведь у него все в ажуре. Если помостреть его .sym файл, то адреса внутренних вообще типа 48080дес, где-то в конце адресов ввода-вывода модбаса.
Ну а тэги лишние здесь совсем не помогут - они в разных ProccessImage.
Иногда полезно бывает почитать описание. Хотя бы до страницы 78, где приведена красивая табличка, откуда что можно читать по модбасу и куда что можно писать. Из чего следует:
PROGRAM PLC_PRG VAR WRITE: WORD; READ: WORD; END_VAR
Указанный HOLDING REGISTER 0x43000, разумеется, доступен как на запись, так и на чтение. Да ещё и сохраняет свое состояние при отключении питания.
Инженер-системотехник
+7 (916) 477 3925
Ну описание то читаем, иногда. С этими переменными(retain) проблем нет. Но что ж теперь определять все переменные нужные для скады в энергонезавимой области?
Возможно не понял пример, но можно наверно просто определить переменную как:
A AT %MW0: INT;
и работать с ней?
Просто проект уже есть и работает через OPC сервер. Захотелось перевести его на Модбас драйвер (желательно малой кровью). С модбасом столкнулся впервые отсюда и вопросы. Я так понимаю что все эти %IW256 и %Q256 считаются как бы удаленными входами\выходами контроллера?
Первоначально опубликовано Максим Ананских
Иногда полезно бывает почитать описание. Хотя бы до страницы 78, где приведена красивая табличка, откуда что можно читать по модбасу и куда что можно писать. Из чего следует:
PROGRAM PLC_PRG VAR WRITE: WORD; READ: WORD; END_VAR
Указанный HOLDING REGISTER 0x43000, разумеется, доступен как на запись, так и на чтение. Да ещё и сохраняет свое состояние при отключении питания.
Вариант. А с 750-842 что делать?
Vladimir Voronenkov
"Первая Миля", Authorized ICONICS Systems Integrator
спасибо всем за ответы, еще вопросик:
При передаче по модбасу строковой переменной :
Пример
A AT %MW0:STRING;
A:='TEST';
На выходе скады имеем 'ETTS', причем используя и драйвер и OPC сервер Modbus TCP.
Т.е Wago(или Сodesy) хранит строки в регистре не так как прописано для модбаса? Есть ли выход, кроме как самому преобразовывать?
Первоначально опубликовано Valerik
На выходе скады имеем 'ETTS', причем используя и драйвер и OPC сервер Modbus TCP.
Формат передачи строк протоколом Modbus не определен. Скорее всего, строка передается так, как располагается в памяти. Поэтому, уважающие себя OPC серверы умеют переставлять байты в слове.
Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме