- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
UNITY PRO. Нужна помощь
Модераторы: Глоб.модераторы, Специалисты SE
-
- здесь недавно
- Сообщения: 17
- Зарегистрирован: 18 авг 2020, 11:41
- Имя: Сергей
- Благодарил (а): 2 раза
UNITY PRO. Нужна помощь
Добрый день. Уважаемые форумчане необходима помощь в очень простом для вас но пока не преодолимом для меня вопросе. С предприятия ушел программист и оставил не завершенный проект. Его завершение легло на мои плечи, но к сожалению я системный администратор и в микроконтроллерах не разбираюсь. суть вопроса. Есть удаленный микроконтроллер компании новатек(это не суть важно) он управляет насосом. Есть система скада которая посредством микроконтроллера Modicon M340 должна опрашивать этот контроллер, по сути считывать данные его регистров и записывать их в массив, далее исходя из задания менять данные в этом массиве и перезаписывать обратно. После изучения форума я пришел к выводу, что реализовать это управление можно либо посредством i/o scanning, либо функциями read_var, write_var. Саму среду Unity Pro за пару недель немного изучил. Но столкнулся с непреодолимой задачей. Как и куда мне считывать эти регистры, как обозначить массив как переменную и в какой области памяти? я понимаю принцип считать и записать, но вообще не могу понять как это все представить в виде данных в Unity pro. Мануал уже изучил, но понимания особого не пришло. Видел информацию о переприсвоении , но где его проводить. Подскажите пожалуйста, уже скоро голова взорвется от этой задачи.
-
- эксперт
- Сообщения: 1146
- Зарегистрирован: 25 июл 2008, 10:06
- Имя: Леонид
- Страна: РФ
- Благодарил (а): 49 раз
- Поблагодарили: 134 раза
UNITY PRO. Нужна помощь
Чтение и запись обычно идет в регистры типа %MW. Делаете массив нужного размера и адресуете его в эти регистры
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
-
- здесь недавно
- Сообщения: 17
- Зарегистрирован: 18 авг 2020, 11:41
- Имя: Сергей
- Благодарил (а): 2 раза
UNITY PRO. Нужна помощь
Мне не понятно как определить размер этого массива и как выбрать для него область памяти. Создается он в таблицах переменных или иным образом. Инструмент i/o scanning сам создает массив например, но как использовать этот массив и как в этом массиве найти биты именно тех регистров которые нужно изменить? а потом все это измененное перезаписать обратно в те же регистры удаленного контроллера? вы поймите меня правильно, я изо всех сил стараюсь разобраться в этом вопросе. Но у меня нет навыков программирования, к сожалению.
-
- эксперт
- Сообщения: 1146
- Зарегистрирован: 25 июл 2008, 10:06
- Имя: Леонид
- Страна: РФ
- Благодарил (а): 49 раз
- Поблагодарили: 134 раза
UNITY PRO. Нужна помощь
Быстрый старт по Unity
https://sites.google.com/site/fieldbusb ... tryj-start
Вы должны знать содержимое регистров опрашиваемого контроллера Новатек и читать в аналогичный по размеру массив в памяти вашего контроллера. Писать так же надо в предназначенные для записи регистры контроллера Новатек из аналогичного по размеру массива регистров. Что лежит в каких регистрах и в каких битах контроллера Новатек вам никто не скажет, кроме программиста этого контроллера, или можете сами посмотреть в его документации или в программе, если она есть в виде исходников.
Например, вы узнали, что в регистре %MW1 лежит давление на выходе насоса, а в регистр %MW1000 надо записать число 568, чтобы этот насос запустить.
Вы находите в вашем контроллере свободные регистры, например, %MW955 и %MW956. Настраиваете IO scanning, чтобы он читал 1 регистр из адреса %MW1 контроллера Новатек в адрес %MW955 вашего контроллера, и писал из %MW956 вашего контроллера в %MW1000 контроллера Новатек.
Тогда в регистре %MW955 вашего контроллера будет давление, а записав вашей программой в регистр %MW956 вашего контроллера число 568, вы запустите насос на контроллере Новатек.
https://sites.google.com/site/fieldbusb ... tryj-start
Вы должны знать содержимое регистров опрашиваемого контроллера Новатек и читать в аналогичный по размеру массив в памяти вашего контроллера. Писать так же надо в предназначенные для записи регистры контроллера Новатек из аналогичного по размеру массива регистров. Что лежит в каких регистрах и в каких битах контроллера Новатек вам никто не скажет, кроме программиста этого контроллера, или можете сами посмотреть в его документации или в программе, если она есть в виде исходников.
Например, вы узнали, что в регистре %MW1 лежит давление на выходе насоса, а в регистр %MW1000 надо записать число 568, чтобы этот насос запустить.
Вы находите в вашем контроллере свободные регистры, например, %MW955 и %MW956. Настраиваете IO scanning, чтобы он читал 1 регистр из адреса %MW1 контроллера Новатек в адрес %MW955 вашего контроллера, и писал из %MW956 вашего контроллера в %MW1000 контроллера Новатек.
Тогда в регистре %MW955 вашего контроллера будет давление, а записав вашей программой в регистр %MW956 вашего контроллера число 568, вы запустите насос на контроллере Новатек.
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
-
- специалист
- Сообщения: 642
- Зарегистрирован: 02 дек 2015, 06:57
- Имя: Огородников Сергей
- Страна: РФ
- Благодарил (а): 136 раз
- Поблагодарили: 111 раз
UNITY PRO. Нужна помощь
Добрый день!
В такой ситуации лучший вариант - найти человека, который поможет за деньги решить эту задачу. Заодно объяснит кучу базовых вещей в Unity Pro, в которых у вас пробелы
Александр Пупена (san) и на youtube, и здесь, и на своей странице выкладывал свои разработки по Unity - поищите, сейчас с поиском информации проще стало.
В такой ситуации лучший вариант - найти человека, который поможет за деньги решить эту задачу. Заодно объяснит кучу базовых вещей в Unity Pro, в которых у вас пробелы
Александр Пупена (san) и на youtube, и здесь, и на своей странице выкладывал свои разработки по Unity - поищите, сейчас с поиском информации проще стало.
СВ
-
- здесь недавно
- Сообщения: 17
- Зарегистрирован: 18 авг 2020, 11:41
- Имя: Сергей
- Благодарил (а): 2 раза
UNITY PRO. Нужна помощь
Я просмотрел все видео Александра связанные с Юнити, фаст старт уже распечатан и затаскан до дыр, но к сожалению у меня в задании не такой механизм как в уроках. Если бы связь между контроллерами была осуществлена непосредственно их физическими входами выходами и нужно было этим управлять, то я смог бы реализовать это. Но у меня ситуация, где есть контроллер М340 и два контроллера новатек с gsm на борту. Мне нужно чтобы СКАДА через М340 используя один контроллер новатэк как шлюз считывала(записывала) данные некоторых регистров удаленного контроллера новатэк. О дополнительном финансировании не может быть и речи, не та ситуация в угольной промышленности сейчас, меня об этом сразу предупредили. Я как говорится нутром чую, что это не так сложно, нет понимания именно работы с переменными. Мне не нужно читать данные датчиков и аналоговые параметры. Только три реле и один "сухой контакт", это нули и единицы. i/o scanner читает последовательности, видимо мне это не подходит. Я склоняюсь к использованию read_var, write_var но не получается правильно их настроить. дело в том, что в контроллере м340 уже есть большая программа по управлению технологической секцией, и многие регистры используются. Я хочу дописать маленькую секцию для управления своим контроллером. Вобщем как то так.
-
- эксперт
- Сообщения: 1146
- Зарегистрирован: 25 июл 2008, 10:06
- Имя: Леонид
- Страна: РФ
- Благодарил (а): 49 раз
- Поблагодарили: 134 раза
UNITY PRO. Нужна помощь
IO scanning настроить проще, чем read_var, write_var.
Для передачи булевых переменных (которые 0-1) можно использовать биты в регистрах. Например, %MW0.0, %MW0.1,..., %MW0.15
Для передачи булевых переменных (которые 0-1) можно использовать биты в регистрах. Например, %MW0.0, %MW0.1,..., %MW0.15
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
-
- здесь недавно
- Сообщения: 17
- Зарегистрирован: 18 авг 2020, 11:41
- Имя: Сергей
- Благодарил (а): 2 раза
UNITY PRO. Нужна помощь
Насколько я понял это не осуществимо в i/o scanning, там только целый регистр выделяется под слово. да и это инструмент для непрерывного анализа. От меня этого не требуется, тем более связь по осуществляется по GSM каналу, и таким образом будет постоянно использоваться трафик. С помощью Read_var/write_var возможно осуществлять управление именно в те моменты когда это необходимо. Речь идет о удаленном запуске насоса(переключении режима местный/удаленный) с помощью магнитного пускателя, плюс контроль напряжения 24в(есть/нет). Регистры контроллера с этими данными содержат всего одно значение, 0 или 1. Но для применения изменений, после перезаписи нужно в определенный регистр записать цифру 2, а это уже другой тип переменной. вот тут и возникает непонимание. Функцией read_var я считываю определенный регистр и записываю его в массив с размерностью, но зачем мне массив и какая будет его размерность если значение всего 1 бит? Да и как именно мне записать именно цифру 2 в нужный регистр, ее нужно тоже внедрять в массив или возможно просто напрямую записать эту цифру(возможно обозначив ее как переменную)?
-
- эксперт
- Сообщения: 1146
- Зарегистрирован: 25 июл 2008, 10:06
- Имя: Леонид
- Страна: РФ
- Благодарил (а): 49 раз
- Поблагодарили: 134 раза
UNITY PRO. Нужна помощь
С write_var для управления понятно.
В какие моменты вы предполагаете использовать read_var? Вы же не знаете, когда состояние изменилось. Т.е. надо читать либо постоянно, аналогично i/o scanning, либо делать запись в ваш контроллер со стороны удаленного контроллера.
В какие моменты вы предполагаете использовать read_var? Вы же не знаете, когда состояние изменилось. Т.е. надо читать либо постоянно, аналогично i/o scanning, либо делать запись в ваш контроллер со стороны удаленного контроллера.
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
-
- здесь недавно
- Сообщения: 17
- Зарегистрирован: 18 авг 2020, 11:41
- Имя: Сергей
- Благодарил (а): 2 раза
UNITY PRO. Нужна помощь
Очень логичное замечание. Получается основная часть нужного мне управления осуществляется с помощью write_var. Но остается необходимость периодического опроса определенного регистра для контроля напряжения, для это и необходимо read_var.
Другой вопрос, если мне нужно например в регистры 59-62 записать число 49, а в регистр 162 записать единицу, это 5 разных write_var или 2?
Другой вопрос, если мне нужно например в регистры 59-62 записать число 49, а в регистр 162 записать единицу, это 5 разных write_var или 2?
-
- эксперт
- Сообщения: 1146
- Зарегистрирован: 25 июл 2008, 10:06
- Имя: Леонид
- Страна: РФ
- Благодарил (а): 49 раз
- Поблагодарили: 134 раза
UNITY PRO. Нужна помощь
Регистры 59-62 один запрос, регистр 162 второй запрос
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.