1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Unity Pro XL WRITE_VAR READ_WAR

Unity Pro (Control Expert), Quantum, Premium, M340, M580, Hybrid DCS, Process Expert, Zelio, Twido, M17*, M2**, SCADAPACK, SoMachine, MachineExpert, ZelioSoft, TwidoSoft, TwidoSuite, TelePace

Модераторы: Глоб.модераторы, Специалисты SE

Ответить
Аватара пользователя

Автор темы
kasper00761
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 11 апр 2018, 16:24
Имя: Александр
Страна: Россиия
город/регион: Москва
Благодарил (а): 2 раза

Unity Pro XL WRITE_VAR READ_WAR

Сообщение kasper00761 »

Всем привет. Вопрос такой, у меня есть блоки для чтения и записи по Modbus RS-485 и их очень много, и чтоб не засорять линию передачи данных надо выкупать бит типо запись прошла успешно или чтение прошло успешно. Потому что при формировании слова у меня встает запись в Set и после чего хочу сделать таким путем что, при успешной записи мне вернулся бит что запись закончена и ресетил бит записи.
Тут сетит
Сни1мок.PNG
Тут хочу включать ресет по биту успешной записи
Снимок.PNG
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя

Автор темы
kasper00761
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 11 апр 2018, 16:24
Имя: Александр
Страна: Россиия
город/регион: Москва
Благодарил (а): 2 раза

Unity Pro XL WRITE_VAR READ_WAR

Сообщение kasper00761 »

Ребят, нужна ваша помощь. Подскажите как реализовать опрос и запись 5 Modbus устройств, чтоб при этом не забивалась линия передачи т.к. "чтение" должно происходить каждую секунду 5 модбас устройств и запись 2-ух модбас устройств каждую секунду. Или же кто знает описание слова ячейки GEST по каждому биту :ges_help:

MaksimNT
освоился
освоился
Сообщения: 262
Зарегистрирован: 31 авг 2012, 06:30
Имя: Фоменко Максим Анатольевич
Страна: РФ
город/регион: гор. Нижнйи Тагил, Свердловской обл.
Благодарил (а): 3 раза
Поблагодарили: 76 раз

Unity Pro XL WRITE_VAR READ_WAR

Сообщение MaksimNT »

На ST в Unity Pro XL 12


(* если текущий шаг разрешен *)
IF Mod_Par_DD11_1[Mod_R_DD11_1.iStep].bEn = 1 THEN
IF Mod_R_DD11_1.bRead_CMD = 1 THEN
(* Присвоение параметров чтения *)
Mod_R_DD11_1.sADR := Mod_Par_DD11_1[Mod_R_DD11_1.iStep].sADR;
Mod_R_DD11_1.sOBJ := Mod_Par_DD11_1[Mod_R_DD11_1.iStep].sOBJ;
Mod_R_DD11_1.dNUM := Mod_Par_DD11_1[Mod_R_DD11_1.iStep].dNUM;
Mod_R_DD11_1.iNB := Mod_Par_DD11_1[Mod_R_DD11_1.iStep].iNB;

(* вызов функции чтения по команде в случае если обмен свободен *)
IF Mod_R_DD11_1.Rpara[0].0 = 0 THEN
(* очищаем область чтения *)
FOR iN_01 := 0 TO 15 BY 1 DO
Mod_R_DD11_1.Rdata[iN_01] := 0;
END_FOR;
(* системная функция чтения данных *)
READ_VAR (ADR := ADDM(IN := Mod_R_DD11_1.sADR),
OBJ := Mod_R_DD11_1.sOBJ,
NUM := Mod_R_DD11_1.dNUM,
NB := Mod_R_DD11_1.iNB,
GEST := Mod_R_DD11_1.Rpara,
RECP => Mod_R_DD11_1.Rdata);

(* флаги качества устанавливаем *)
Mod_R_DD11_1.bRead_OK := TRUE;
Mod_Par_DD11_1[Mod_R_DD11_1.iStep].bOK := TRUE;
(* флаг исполнения шага сбрасываем *)
Mod_R_DD11_1.bRead_CMD := False;
END_IF;
END_IF;
ELSE
(* переход к следующему шагу *)
Mod_R_DD11_1.iStep := Mod_R_DD11_1.iStep + 1;
END_IF;


(* в случае если обмен освободился и есть ошибка*)
IF Mod_R_DD11_1.Rpara[0].0 = 0 AND Mod_R_DD11_1.bRun = 1 AND Mod_R_DD11_1.Rpara[1] <> 0 THEN
(* сбрасываем флаг качества чтения *)
Mod_R_DD11_1.bRead_OK := FALSE;
Mod_Par_DD11_1[Mod_R_DD11_1.iStep].bOK := FALSE;
(* отчет обмена *)
Mod_Par_DD11_1[Mod_R_DD11_1.iStep].iErr := Mod_R_DD11_1.Rpara[1];
END_IF;

(* в случае если обмен освободился и прочитали новое значение *)
IF Mod_R_DD11_1.Rpara[0].0 = 0 AND Mod_R_DD11_1.iNumber <> Mod_R_DD11_1.iNumber_OLD THEN

(* то если достоверный запрос *)
IF ((Mod_R_DD11_1.sOBJ = '%IW' OR Mod_R_DD11_1.sOBJ = '%MW') AND Mod_R_DD11_1.Rpara[3] = (Mod_R_DD11_1.iNB * 2)) OR
((Mod_R_DD11_1.sOBJ = '%I' OR Mod_R_DD11_1.sOBJ = '%M') AND Mod_R_DD11_1.Rpara[3] = 1) THEN
CASE Mod_R_DD11_1.iStep OF

0: Modbus[0] := Mod_R_DD11_1.Rdata[0]; Modbus[1] := Mod_R_DD11_1.Rdata[1];
1: Modbus[2] := Mod_R_DD11_1.Rdata[0];
2: Modbus[3] := Mod_R_DD11_1.Rdata[0];
.......
END_CASE;
ELSE
Mod_Par_DD11_1[Mod_R_DD11_1.iStep].bOK := FALSE;
END_IF;

(* очищаем количество прочитанных регистров *)
Mod_R_DD11_1.Rpara[3] := 0;
(* переход к следующему шагу *)
Mod_R_DD11_1.iStep := Mod_R_DD11_1.iStep + 1;
(* Вызов функции чтения *)
Mod_R_DD11_1.bRead_CMD := TRUE;
(* сохранения значения текущего шага *)
Mod_R_DD11_1.iNumber_OLD := Mod_R_DD11_1.iNumber;

END_IF;

Отправлено спустя 6 минут 12 секунд:
kasper00761 писал(а): 22 мар 2019, 16:58 Или же кто знает описание слова ячейки GEST по каждому биту :ges_help:
В help Unity Pro XL 12

Отправлено спустя 3 минуты 45 секунд:
В help Unity Pro XL 12
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя

Автор темы
kasper00761
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 11 апр 2018, 16:24
Имя: Александр
Страна: Россиия
город/регион: Москва
Благодарил (а): 2 раза

Unity Pro XL WRITE_VAR READ_WAR

Сообщение kasper00761 »

Спасибо, но у меня все в FBD))

fanoffff
новенький
новенький
Сообщения: 1
Зарегистрирован: 07 авг 2019, 19:37
Имя: Дмитрий
Благодарил (а): 2 раза

Unity Pro XL WRITE_VAR READ_WAR

Сообщение fanoffff »

kasper00761, добрый день. У вас получилось реализовать в FBD?

leon78
эксперт
эксперт
Сообщения: 1146
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 49 раз
Поблагодарили: 134 раза

Unity Pro XL WRITE_VAR READ_WAR

Сообщение leon78 »

Дорабатываю старую программу на Unity, и уперся в следующий вопрос, а проверить негде (М340 нет).
В этой программе параллельно работают WRITE_VAR и READ_VAR на один физический порт RS485 одно устройство без всякого менеджмента.
Я раньше думал, что в таком случае ими надо управлять, чтобы они одновременно не работали, а работали по очереди.
Мне сейчас нужно добавить еще один запрос на чтение. Если я добавлю еще один блок READ_VAR, который обращается к тому же порту и так же постоянно работает, то будет ли работать обмен? Или надо все-таки реализовывать управление блоками, чтобы в один момент времени работал только один?
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
Аватара пользователя

hell_boy
почётный участник форума
почётный участник форума
Сообщения: 1746
Зарегистрирован: 18 янв 2009, 12:25
Имя: Дмитрий
Страна: Россия
город/регион: Москва
Благодарил (а): 6 раз
Поблагодарили: 143 раза

Unity Pro XL WRITE_VAR READ_WAR

Сообщение hell_boy »

leon78 писал(а): 19 сен 2019, 17:50 Я раньше думал, что в таком случае ими надо управлять, чтобы они одновременно не работали, а работали по очереди.
Мне сейчас нужно добавить еще один запрос на чтение. Если я добавлю еще один блок READ_VAR, который обращается к тому же порту и так же постоянно работает, то будет ли работать обмен? Или надо все-таки реализовывать управление блоками, чтобы в один момент времени работал только один?
В свое время проводил эксперименты с RS-485 на М340. В общем случае, менеджмент посылок нужен. Если использовать только READ_VAR без WRITE_VAR, то таймауты пойдут после добавления 6-го - 8-го блока. Причем никакой закономерности в этом нет, опрашиваемые устройства могут быть одного производителя, серийники отличаться на 1, а откликаться с разными таймутами.
"Умные люди обсуждают идеи, средние - события, а глупые - людей" Л.Н. Толстой

leon78
эксперт
эксперт
Сообщения: 1146
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 49 раз
Поблагодарили: 134 раза

Unity Pro XL WRITE_VAR READ_WAR

Сообщение leon78 »

hell_boy писал(а): 19 сен 2019, 22:24 Если использовать только READ_VAR без WRITE_VAR, то таймауты пойдут после добавления 6-го - 8-го блока.
Т.е. 2 READ_VAR и 1 WRITE_VAR можно смело использовать без менеджмента?
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.

swaips-87
здесь недавно
здесь недавно
Сообщения: 54
Зарегистрирован: 06 фев 2021, 02:47
Имя: Юрий
Страна: Россия
город/регион: Челябинская облость
Благодарил (а): 12 раз
Поблагодарили: 2 раза

Unity Pro XL WRITE_VAR READ_WAR

Сообщение swaips-87 »

hell_boy писал(а): 19 сен 2019, 22:24 В общем случае, менеджмент посылок нужен.
Поясните что это и с чем едят
Ответить

Вернуться в «ПЛК»