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

Ответить

Автор темы
Kunglao
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 18 авг 2020, 11:41
Имя: Сергей
Благодарил (а): 2 раза

UNITY PRO. Нужна помощь

Сообщение Kunglao »

Добрый день. Уважаемые форумчане необходима помощь в очень простом для вас но пока не преодолимом для меня вопросе. С предприятия ушел программист и оставил не завершенный проект. Его завершение легло на мои плечи, но к сожалению я системный администратор и в микроконтроллерах не разбираюсь. суть вопроса. Есть удаленный микроконтроллер компании новатек(это не суть важно) он управляет насосом. Есть система скада которая посредством микроконтроллера Modicon M340 должна опрашивать этот контроллер, по сути считывать данные его регистров и записывать их в массив, далее исходя из задания менять данные в этом массиве и перезаписывать обратно. После изучения форума я пришел к выводу, что реализовать это управление можно либо посредством i/o scanning, либо функциями read_var, write_var. Саму среду Unity Pro за пару недель немного изучил. Но столкнулся с непреодолимой задачей. Как и куда мне считывать эти регистры, как обозначить массив как переменную и в какой области памяти? я понимаю принцип считать и записать, но вообще не могу понять как это все представить в виде данных в Unity pro. Мануал уже изучил, но понимания особого не пришло. Видел информацию о переприсвоении , но где его проводить. Подскажите пожалуйста, уже скоро голова взорвется от этой задачи.

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

UNITY PRO. Нужна помощь

Сообщение leon78 »

Чтение и запись обычно идет в регистры типа %MW. Делаете массив нужного размера и адресуете его в эти регистры
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.

Автор темы
Kunglao
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 18 авг 2020, 11:41
Имя: Сергей
Благодарил (а): 2 раза

UNITY PRO. Нужна помощь

Сообщение Kunglao »

leon78 писал(а): 14 сен 2020, 14:59 Чтение и запись обычно идет в регистры типа %MW. Делаете массив нужного размера и адресуете его в эти регистры
Мне не понятно как определить размер этого массива и как выбрать для него область памяти. Создается он в таблицах переменных или иным образом. Инструмент i/o scanning сам создает массив например, но как использовать этот массив и как в этом массиве найти биты именно тех регистров которые нужно изменить? а потом все это измененное перезаписать обратно в те же регистры удаленного контроллера? вы поймите меня правильно, я изо всех сил стараюсь разобраться в этом вопросе. Но у меня нет навыков программирования, к сожалению.

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

UNITY PRO. Нужна помощь

Сообщение leon78 »

Быстрый старт по Unity
https://sites.google.com/site/fieldbusb ... tryj-start
Вы должны знать содержимое регистров опрашиваемого контроллера Новатек и читать в аналогичный по размеру массив в памяти вашего контроллера. Писать так же надо в предназначенные для записи регистры контроллера Новатек из аналогичного по размеру массива регистров. Что лежит в каких регистрах и в каких битах контроллера Новатек вам никто не скажет, кроме программиста этого контроллера, или можете сами посмотреть в его документации или в программе, если она есть в виде исходников.

Например, вы узнали, что в регистре %MW1 лежит давление на выходе насоса, а в регистр %MW1000 надо записать число 568, чтобы этот насос запустить.
Вы находите в вашем контроллере свободные регистры, например, %MW955 и %MW956. Настраиваете IO scanning, чтобы он читал 1 регистр из адреса %MW1 контроллера Новатек в адрес %MW955 вашего контроллера, и писал из %MW956 вашего контроллера в %MW1000 контроллера Новатек.
Тогда в регистре %MW955 вашего контроллера будет давление, а записав вашей программой в регистр %MW956 вашего контроллера число 568, вы запустите насос на контроллере Новатек.
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.

ogorsv
завсегдатай
завсегдатай
Сообщения: 576
Зарегистрирован: 02 дек 2015, 06:57
Имя: Огородников Сергей
Страна: РФ
Благодарил (а): 120 раз
Поблагодарили: 103 раза

UNITY PRO. Нужна помощь

Сообщение ogorsv »

Добрый день!

В такой ситуации лучший вариант - найти человека, который поможет за деньги решить эту задачу. Заодно объяснит кучу базовых вещей в Unity Pro, в которых у вас пробелы

Александр Пупена (san) и на youtube, и здесь, и на своей странице выкладывал свои разработки по Unity - поищите, сейчас с поиском информации проще стало.
СВ

Автор темы
Kunglao
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 18 авг 2020, 11:41
Имя: Сергей
Благодарил (а): 2 раза

UNITY PRO. Нужна помощь

Сообщение Kunglao »

Я просмотрел все видео Александра связанные с Юнити, фаст старт уже распечатан и затаскан до дыр, но к сожалению у меня в задании не такой механизм как в уроках. Если бы связь между контроллерами была осуществлена непосредственно их физическими входами выходами и нужно было этим управлять, то я смог бы реализовать это. Но у меня ситуация, где есть контроллер М340 и два контроллера новатек с gsm на борту. Мне нужно чтобы СКАДА через М340 используя один контроллер новатэк как шлюз считывала(записывала) данные некоторых регистров удаленного контроллера новатэк. О дополнительном финансировании не может быть и речи, не та ситуация в угольной промышленности сейчас, меня об этом сразу предупредили. Я как говорится нутром чую, что это не так сложно, нет понимания именно работы с переменными. Мне не нужно читать данные датчиков и аналоговые параметры. Только три реле и один "сухой контакт", это нули и единицы. i/o scanner читает последовательности, видимо мне это не подходит. Я склоняюсь к использованию read_var, write_var но не получается правильно их настроить. дело в том, что в контроллере м340 уже есть большая программа по управлению технологической секцией, и многие регистры используются. Я хочу дописать маленькую секцию для управления своим контроллером. Вобщем как то так.

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

UNITY PRO. Нужна помощь

Сообщение leon78 »

IO scanning настроить проще, чем read_var, write_var.
Для передачи булевых переменных (которые 0-1) можно использовать биты в регистрах. Например, %MW0.0, %MW0.1,..., %MW0.15
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.

Автор темы
Kunglao
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 18 авг 2020, 11:41
Имя: Сергей
Благодарил (а): 2 раза

UNITY PRO. Нужна помощь

Сообщение Kunglao »

Насколько я понял это не осуществимо в i/o scanning, там только целый регистр выделяется под слово. да и это инструмент для непрерывного анализа. От меня этого не требуется, тем более связь по осуществляется по GSM каналу, и таким образом будет постоянно использоваться трафик. С помощью Read_var/write_var возможно осуществлять управление именно в те моменты когда это необходимо. Речь идет о удаленном запуске насоса(переключении режима местный/удаленный) с помощью магнитного пускателя, плюс контроль напряжения 24в(есть/нет). Регистры контроллера с этими данными содержат всего одно значение, 0 или 1. Но для применения изменений, после перезаписи нужно в определенный регистр записать цифру 2, а это уже другой тип переменной. вот тут и возникает непонимание. Функцией read_var я считываю определенный регистр и записываю его в массив с размерностью, но зачем мне массив и какая будет его размерность если значение всего 1 бит? Да и как именно мне записать именно цифру 2 в нужный регистр, ее нужно тоже внедрять в массив или возможно просто напрямую записать эту цифру(возможно обозначив ее как переменную)?

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

UNITY PRO. Нужна помощь

Сообщение leon78 »

С write_var для управления понятно.
В какие моменты вы предполагаете использовать read_var? Вы же не знаете, когда состояние изменилось. Т.е. надо читать либо постоянно, аналогично i/o scanning, либо делать запись в ваш контроллер со стороны удаленного контроллера.
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.

Автор темы
Kunglao
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 18 авг 2020, 11:41
Имя: Сергей
Благодарил (а): 2 раза

UNITY PRO. Нужна помощь

Сообщение Kunglao »

Очень логичное замечание. Получается основная часть нужного мне управления осуществляется с помощью write_var. Но остается необходимость периодического опроса определенного регистра для контроля напряжения, для это и необходимо read_var.
Другой вопрос, если мне нужно например в регистры 59-62 записать число 49, а в регистр 162 записать единицу, это 5 разных write_var или 2?

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

UNITY PRO. Нужна помощь

Сообщение leon78 »

Регистры 59-62 один запрос, регистр 162 второй запрос
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
Ответить

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