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

UNITY PRO

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

Модератор: Специалисты SE

Ответить

Автор темы
Lowkee
здесь недавно
здесь недавно
Сообщения: 65
Зарегистрирован: 27 июл 2010, 14:13
Имя: Стахин Е.В
Страна: Россия
город/регион: Москва

Re: UNITY PRO

Сообщение Lowkee »

Вопрос появился?

Подскажите,с помощью каких моделей или с помощью какиъх средств осуществить упаковку данных? то есть чтобы биты %M101 106 111 упаковывались в слова

Подскажите пож-та?

Автор темы
Lowkee
здесь недавно
здесь недавно
Сообщения: 65
Зарегистрирован: 27 июл 2010, 14:13
Имя: Стахин Е.В
Страна: Россия
город/регион: Москва

Re: UNITY PRO

Сообщение Lowkee »

подскажите пож-та выдает следующие ошибки

{Derived Variables} : The topological type is incompatible. : Massive2_36

Хотя область памяти выделена...

Автор темы
Lowkee
здесь недавно
здесь недавно
Сообщения: 65
Зарегистрирован: 27 июл 2010, 14:13
Имя: Стахин Е.В
Страна: Россия
город/регион: Москва

Re: UNITY PRO

Сообщение Lowkee »

Подскажите пож-та,что может быть за ошибка,когда я подключаюсь к контроллеру,Unity пишут
This isnt a valid PLC Address,or PLC is busy,or media is off

Точнее как ее решить?

chimic
здесь недавно
здесь недавно
Сообщения: 67
Зарегистрирован: 20 дек 2010, 12:59
Имя: Евгений
Страна: Россия
город/регион: Москва

Re: UNITY PRO

Сообщение chimic »

Простите может вопрос не в тему, но он имеет место быть.
Как снять блокировку DFB блока, если потерян пароль (склероз проклятый). Просто блок емкий и писать заново нет желания

eskendyr
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 23 дек 2012, 13:08
Имя: Алишов Ескендыр Турсынкулович
Страна: Россия
город/регион: Горно-Алтайск

Re: UNITY PRO

Сообщение eskendyr »

Приветствую уважаемые форумчане!
Столкнулся со следующей ситуацией:
Имеется Modikon M340, и две группы однотипных modbus устройств (Sepam 40- 5шт. и 2 шт. автоматов Isarc), с которых необходимо считать по последовательной линии связи переменные для последующей отправки на диспетчерский пункт по ethernet.
Так как имеем дело с 2 группами однотипных устройств, и последовательный порт не может обрабатывать более одного запроса, было принято решение использовать только одну функцию read_var создав подпрограмму которая работает с последовательным портом (отслеживает исполнение обмена данными). и пару подпрограмм устройств которые в свою очередь обращаются к первой со своими адресами. Главная программа при этом только обеспечивает запрос о считывании данных того или иного устройства распределяя по типу и размещение данных во внутренних ячейках памяти для последующей обработки и передачи на диспетчерский пункт.
С компиляцией проекта, а также работой проекта (подстановки адресов для инструкции read_var, реализация следующего запроса по окончание предыдущего ) проблем не возникает, ошибка происходит при передаче данных, байт отвечающий за отчет коммуникации (младший) выдает ошибку 16#07 (Problem in sending to the destination, что по русски означает "Проблема в отправке к месту назначения") и обмен данными срывается, светодиод активности com-порта отображает активность. Светодиод слейва также отображает активность, когда адрес запроса соответствует его адресу, что косвенно говорит о том что настройки com-порта (протокол, скорость, четность) произведены правильно (Слейв мастера понимает)
Есть подозрение что инструкция read_var не может правильно сформировать данные проверки (контрольная сумма или т. д. и т. п.) и
тем самым сама себя блокирует. Как с этим бороться ума не приложу.
Может кто-нибудь сталкивался с подобной проблемой? Буду очень признателен.
Последний раз редактировалось eskendyr 23 дек 2012, 15:21, всего редактировалось 1 раз.
Аватара пользователя

san
преподаватель
преподаватель
Сообщения: 1357
Зарегистрирован: 01 сен 2008, 18:32
Имя: Пупена Александр
Страна: Украина
город/регион: Киев
Поблагодарили: 6 раз

Re: UNITY PRO

Сообщение san »

Много слов и мало кода.
Для корректности вызова READ_VAR а также других комм. функций используйте проверку бита активности (0-й бит в 0-м слове коммуникационных параметров), как показано в хелпе. Вот когда-то писал пример для DATA_EXCH

eskendyr
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 23 дек 2012, 13:08
Имя: Алишов Ескендыр Турсынкулович
Страна: Россия
город/регион: Горно-Алтайск

Re: UNITY PRO

Сообщение eskendyr »

Проверка активности производится, и на основе ее производится переход к следующему запросу, так же производится контроль над отчетами реализовано несколько не так как в вашем примере, вот моя подпрограмма:

adr_aray := ADDM (IN := modbus_adr[k]);

if obmen_zakonchen and end_time then

READ_VAR (ADR := adr_aray,
OBJ := '%MW',
NUM := adr,
NB := kol,
GEST := gest_p,
RECP => out_var);
end_if;

obmen_zakonchen:=not gest_p[0].0;

start_time:= not start_time; (* Пауза для облечения просмотра параметров отчета*)
CTU_INT_0 (CU := obmen_zakonchen and start_time,
R := not obmen_zakonchen,
PV := pause,
Q => end_time,
CV => time_real);

n_obmena := BIT_TO_BYTE (BIT0 := gest_p[0].8,
BIT1 := gest_p[0].9,
BIT2 := gest_p[0].10,
BIT3 := gest_p[0].11,
BIT4 := gest_p[0].12,
BIT5 := gest_p[0].13,
BIT6 := gest_p[0].14,
BIT7 := gest_p[0].15);

otchet_com:= BIT_TO_BYTE (BIT0 := gest_p[1].0,
BIT1 := gest_p[1].1,
BIT2 := gest_p[1].2,
BIT3 := gest_p[1].3,
BIT4 := gest_p[1].4,
BIT5 := gest_p[1].5,
BIT6 := gest_p[1].6,
BIT7 := gest_p[1].7);

otchet_oper:=BIT_TO_BYTE (BIT0 := gest_p[1].8,
BIT1 := gest_p[1].9,
BIT2 := gest_p[1].10,
BIT3 := gest_p[1].11,
BIT4 := gest_p[1].12,
BIT5 := gest_p[1].13,
BIT6 := gest_p[1].14,
BIT7 := gest_p[1].15);

out_ok := obmen_zakonchen and otchet_com = 0 and otchet_oper = 0;

return;
Аватара пользователя

san
преподаватель
преподаватель
Сообщения: 1357
Зарегистрирован: 01 сен 2008, 18:32
Имя: Пупена Александр
Страна: Украина
город/регион: Киев
Поблагодарили: 6 раз

Re: UNITY PRO

Сообщение san »

А как Вы организовываете порядок доступа разных подпрограмм к одной функции, очередь организовываете или внутрипрограммуню конкуренцию устраиваете?
Кстати, а поодиночку все нормально обрабатываются? Может в физике проблема?

eskendyr
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 23 дек 2012, 13:08
Имя: Алишов Ескендыр Турсынкулович
Страна: Россия
город/регион: Горно-Алтайск

Re: UNITY PRO

Сообщение eskendyr »

Очередь организуется на уровне главной программы, та задает порядковый номер устройства [k] в зависимости от индекса k запускается та или иная подпрограмма которая содержит информацию о количестве запросов , адреса и количества регистров в каждом запросе и собственно обращение к данной подпрограмме к примеру

if opros_zakonchen then i:=1; end_if;

adr:=adr_sepam;
kol:=kol_sepam;

com_read ();

if out_ok then
for j:=0 to kol-1
do
if i=1 then zon_sost[j]:=out_var[j]; end_if;
if i=2 then zon_izm1[j]:=out_var[j]; end_if;
if i=3 then zon_izm2[j]:=out_var[j]; end_if;
end_for;
end_if;

opros_zakonchen:= i=n and obmen_zakonchen;
if i<n and end_time then i:=i+1; end_if;
return;

на счет физики не уверен такое ощущение что ошибка возникает сразу после отправки или даже во время отправки сообщения в адрес слейва, так как слейв по крайней мере реагирует на адрес устройства в запросе, возможно даже отвечает, так как индикатор (светодиод) com-порта слейва отображает активность при совпадении адреса устройства в запросе и адреса физического устройства, а ошибка otchet_com= 16#07 в отчете появляется вне зависимости от целостности физической линии. По идее при обрыве физической линии должно быть 16#01.
Может требуется что то дополнительно настроить в настройках проекта?
Для меня несколько расплывчатым понятием до сих пор является параметр Length в моей программе gest_p[3] как он рассчитывается для функции read_var?
Последний раз редактировалось eskendyr 23 дек 2012, 21:41, всего редактировалось 1 раз.
Аватара пользователя

san
преподаватель
преподаватель
Сообщения: 1357
Зарегистрирован: 01 сен 2008, 18:32
Имя: Пупена Александр
Страна: Украина
город/регион: Киев
Поблагодарили: 6 раз

Re: UNITY PRO

Сообщение san »

Я б начал с одного устройства без организации такой сложной программы. Попробуйте с одним, потом с двумя, а потом с большим количеством. Это нормальная практика идти от простого к сложному.
Аватара пользователя

san
преподаватель
преподаватель
Сообщения: 1357
Зарегистрирован: 01 сен 2008, 18:32
Имя: Пупена Александр
Страна: Украина
город/регион: Киев
Поблагодарили: 6 раз

Re: UNITY PRO

Сообщение san »

eskendyr писал(а): otchet_com:= BIT_TO_BYTE (BIT0 := gest_p[1].0,
BIT1 := gest_p[1].1,
BIT2 := gest_p[1].2,
BIT3 := gest_p[1].3,
BIT4 := gest_p[1].4,
BIT5 := gest_p[1].5,
BIT6 := gest_p[1].6,
BIT7 := gest_p[1].7);
otchet_oper:=BIT_TO_BYTE (BIT0 := gest_p[1].8,
BIT1 := gest_p[1].9,
BIT2 := gest_p[1].10,
BIT3 := gest_p[1].11,
BIT4 := gest_p[1].12,
BIT5 := gest_p[1].13,
BIT6 := gest_p[1].14,
BIT7 := gest_p[1].15);
Этот кусок кода компатнее может выглядеть так
otchet_com:= INT_TO_BYTE (gest_p[1]);
otchet_oper:= INT_TO_BYTE (SHR(gest_p[1],8));
Это конечно не поможет проблеме, просто может пригодится :D

eskendyr
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 23 дек 2012, 13:08
Имя: Алишов Ескендыр Турсынкулович
Страна: Россия
город/регион: Горно-Алтайск

Re: UNITY PRO

Сообщение eskendyr »

Спасибо буду использовать,
сократил программу до одного запроса одного устройства, присвоил адреса непосредственно к инструкции получилась вот такая вот программка:
adr_aray := ADDM (IN := '0.0.0.1');
gest_p[2]:=5; (*Тайм аут =500мс > 3*100мс*)

if obmen_zakonchen and end_time then

READ_VAR (ADR := adr_aray,
OBJ := '%MW',
NUM := 16#a000,
NB := 6,
GEST := gest_p,
RECP => out_var);
end_if;

obmen_zakonchen:=not gest_p[0].0;


start_time:= not start_time; (* Пауза для облечения просмотра параметров отчета*)
CTU_INT_0 (CU := obmen_zakonchen and start_time,
R := not obmen_zakonchen,
PV := pause,
Q => end_time,
CV => time_real);

n_obmena := INT_TO_BYTE (SHR(gest_p[0],8));
otchet_com:= INT_TO_BYTE (gest_p[1]);
otchet_oper:= INT_TO_BYTE (SHR(gest_p[1],8));

out_ok := obmen_zakonchen and otchet_com = 0 and otchet_oper = 0;

ошибка не изменилась, по прежнему после каждого запроса otchet_com = 7
Скорей всего ошибка возникает при обращении инструкции read_var к com-порту,
Порт настроен следующим образом Task Mast, Function modbus link, RS485, протокол RTU, 8,bit, скорость 9600, паритет нет, стоп бит 2, пауза между кадрами default (4ms), 3 попытки через 100мс.
Единственный параметр который вызывает вопрос это gest_p[3], длина в байтах при стандартном запросе modbus rtu на чтение переменных длина сообщения составляет 8 байт, если исключить адрес устройства и байты циклической проверки 5 байт. Пробовал и 0,5,7,8 никаких изменений на выходе может что-то не так делаю?
Аватара пользователя

san
преподаватель
преподаватель
Сообщения: 1357
Зарегистрирован: 01 сен 2008, 18:32
Имя: Пупена Александр
Страна: Украина
город/регион: Киев
Поблагодарили: 6 раз

Re: UNITY PRO

Сообщение san »

Меня смущает NUM := 16#a000, если вы хотите обратится к 40960 (к 960-му регистру из зоны памяти Holding Registers), то нужно писать NUM := 960 или NUM := 959 (в зависимости от того с 1-цы или с нуля начинается счёт), так как %MW уже указывает на зону Holding Registers.
Кроме того, странные параметры "паритет нет, стоп бит 2", так на всех девайсах?
Таймаут не должен быть больше "3*100мс", это параметры таймаута функции, а не ожидания ответа от устройства. Это аправда в данном случае не имеет никакого значения.
Аватара пользователя

san
преподаватель
преподаватель
Сообщения: 1357
Зарегистрирован: 01 сен 2008, 18:32
Имя: Пупена Александр
Страна: Украина
город/регион: Киев
Поблагодарили: 6 раз

Re: UNITY PRO

Сообщение san »

Я ещё не понял зачем Вы используете счетчик. Это конечно не относится к теме обмена, но всё же интересно.

eskendyr
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 23 дек 2012, 13:08
Имя: Алишов Ескендыр Турсынкулович
Страна: Россия
город/регион: Горно-Алтайск

Re: UNITY PRO

Сообщение eskendyr »

San благодарю за помощь, :thankyou: дело было в настройках com-порта стоило изменить на всех устройствах 8N2 на 8N1, и все заработало, как оказалось M340 не поддерживает формат 8N2, а на счет адреса 16#a000 (40960) все верно, иначе читается что то непонятное и непонятно откуда.
san писал(а):Я ещё не понял зачем Вы используете счетчик. Это конечно не относится к теме обмена, но всё же интересно.

я в unity новичек, точнее первый раз, до этого работал с другими контроллерами, хотел сделать паузу между опросами для того что бы прочитать отчеты обмена, а библиотеке Timer&Counters таймеров не было, все что нашел так это счетчик использовал его, в некоторых контроллерах с фиксированным тиком таймеры только так и реализуются, конечно когда все работает он ни к чему... Далее думаю реализовать алгоритм для отправки адреса modbus устройства в котором возникла ошибка чтения с кодом ошибки на диспетчерский пункт, надеюсь с этим проблем не возникнет.
Еще один вопросик возник, другой modikon M340 (у меня их много :D ) при подключении к нему unity_pro выдает ошибку, примерно такого смысла: Этот контроллер работает неправильно, переведите бит работы контролера в состояние 0 (стоп) для его инициализации
Можете подсказать как убрать данную ошибку? Каким образом добраться до этого бита если даже программа которой контроллер программируется добраться до него не может?
Аватара пользователя

san
преподаватель
преподаватель
Сообщения: 1357
Зарегистрирован: 01 сен 2008, 18:32
Имя: Пупена Александр
Страна: Украина
город/регион: Киев
Поблагодарили: 6 раз

Re: UNITY PRO

Сообщение san »

eskendyr писал(а): а библиотеке Timer&Counters таймеров не было
там есть таймеры TON, TOF, TP
Вот по этой ссылке ещё сходите viewtopic.php?f=60&t=2977
eskendyr писал(а): Еще один вопросик возник, другой modikon M340 (у меня их много :D ) при подключении к нему unity_pro выдает ошибку, примерно такого смысла: Этот контроллер работает неправильно, переведите бит работы контролера в состояние 0 (стоп) для его инициализации
Можете подсказать как убрать данную ошибку? Каким образом добраться до этого бита если даже программа которой контроллер программируется добраться до него не может?
Лучше привести текст ошибки без перевода, а лучше скриншот.

eskendyr
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 23 дек 2012, 13:08
Имя: Алишов Ескендыр Турсынкулович
Страна: Россия
город/регион: Горно-Алтайск

Re: UNITY PRO

Сообщение eskendyr »

там есть таймеры TON, TOF, TP
прошу прощения невнимательность, интерфейс в unity тот еще, привыкать надо.

На счет ошибки при подключении к контроллеру, unity контроллер видит, но считать ничего не может при попытке загрузки проекта выдает сначала вот такой экран:
1.jpg
после подтверждения загрузки проекта выдает такое сообщение:
2.jpg
При рассоединении c контроллером, выдает такое сообщение:
3.jpg
и после подтверждения:
У вас нет необходимых прав для просмотра вложений в этом сообщении.

eskendyr
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 23 дек 2012, 13:08
Имя: Алишов Ескендыр Турсынкулович
Страна: Россия
город/регион: Горно-Алтайск

Re: UNITY PRO

Сообщение eskendyr »

4.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя

san
преподаватель
преподаватель
Сообщения: 1357
Зарегистрирован: 01 сен 2008, 18:32
Имя: Пупена Александр
Страна: Украина
город/регион: Киев
Поблагодарили: 6 раз

Re: UNITY PRO

Сообщение san »

Мне интерфейс в UNITY как раз очень нравится, по сравнению например с тем же STEP7. Хотя это моё ИМХО.
У Вас две проблемы:
1. М340 пустой, по этому надо создать проект и залить его в М340.
2. Выберите версию проца ниже, поскольку в вашем ПЛК версия ниже чем по умолчанию в конфигурации UNITY. Для выбора нужной версии нужно при создании проекта выставить опцию "показа всех версий" (сейчас юнити при себе нет не помню как точно называется).

Ещё одно важное предупреждение: при заливке скомпилированого(построенного) проекта, по умолчанию заливается также и загрузочный код. Эта опция может быть отключена - тогда выгрузить проект с контроллера не будет возможным.

eskendyr
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 23 дек 2012, 13:08
Имя: Алишов Ескендыр Турсынкулович
Страна: Россия
город/регион: Горно-Алтайск

Re: UNITY PRO

Сообщение eskendyr »

Проблема решена, дело было в версии прошивки, просто как то интересно контроллер V2.20, а в программе нужно устанавливать 2.10, было 2.30 как то не логично, но это тоже ИМХО. Благодарю за помощь!

EzAndry
здесь недавно
здесь недавно
Сообщения: 3
Зарегистрирован: 20 авг 2014, 12:29
Имя: Эндрю
Страна: рос
город/регион: стрж

Re: UNITY PRO

Сообщение EzAndry »

Подскажите пож-та,что может быть за ошибка,когда я подключаюсь к контроллеру,Unity пишут
This isnt a valid PLC Address,or PLC is busy,or media is off

к одному процу подключился и спокойно скачал проект, второй проц хоть убей не отадет данные по ethernet, через модуль NOE. хотя оба квантума настроены и первый спокойно выдает данные.

что же это может быть?

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

Re: UNITY PRO

Сообщение leon78 »

Такое сообщение выдается, если Unity не может связаться с контроллером.
Глупый вопрос - а NOE пингуется по IP адресу, настроенному для подключения в Unity?
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.

MaxML
здесь недавно
здесь недавно
Сообщения: 12
Зарегистрирован: 04 янв 2015, 16:15
Имя: Максим А.Д.
Страна: Russia

Re: UNITY PRO

Сообщение MaxML »

Подскажите как узнать, что находится в области *%IW900* (см. прикрепленный файл)?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя

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

Re: UNITY PRO

Сообщение hell_boy »

MaxML писал(а):Подскажите как узнать, что находится в области *%IW900* (см. прикрепленный файл)?
Статус состояния слотов 1 и 2 корзины Quantum, для которой начальный адрес установлен 900. Смотри по какой корзине Quantum Drop -> Config -> Starting Addres Status Table=900. Не факт, что это именно так, но обычно для корзин выбирают круглые адреса. Дальше по тексту программы - статус корзины УСО 6.1
"Умные люди обсуждают идеи, средние - события, а глупые - людей" Л.Н. Толстой

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

Re: UNITY PRO

Сообщение leon78 »

PLC - State Ram Viewer позволяет узнать, чем задан конкретный адрес.
PS. Так понимаю, это программа для УСО 1.1 автоматики НПС для "АК "Транснефть" - отключение МНА через 10 секунд после потери связи с ЦП :)
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
Ответить

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