Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: Вызов команд из программы, написанной для контроллера FX Mitsubishi Electric
Mitsubishi Electric. Контроллеры, преобразователи частоты, HMI > Контроллеры Melsec FX > Программирование
-AAA-
Здравствуйте, господа участники форума.
Очень хочу узнать ваше мнение по такому вопросу.
Возможно ли написать программу для FXxN таким образом, чтобы пользователь
мог задавать код/название команды и ее операнды (например, с панели оператора или в виде
программы в области данных), а контроллер её выполнял. Почему в области данных: способов программного доступа к памяти программ я не нашел.
Благодарю всех, кто отзовется.
Ghoul Jedi
По моймому сие на FX невозможно. Вот в A-серии можно поизвращаться.
-AAA-
Цитата(Ghoul Jedi @ 19.01.2007 - 12:26) *

По моймому сие на FX невозможно. Вот в A-серии можно поизвращаться.

Спасибо, Ghoul Jedi! Для этой серии GX Developer 6.01 подходит?
Sergei Troizky
В принципе, подобная программа возможна.
Невозможной для серии FX ее делает отсутствие индексной адресации для битов в этой серии.
Поэтому инструкции с битовыми параметрами использовать вряд ли удастся.

А для чего сие чудо нужно? Такое подобие операционной системы займет уйму памяти и времени выполнения.Насколько можно судить по серии FX, ПЛК Mitsubishi- это интерпретаторы, а не компиляторы, и даже невыполняемый текст программы должен прочитываться.
-AAA-
Цитата(Sergei Troizky @ 21.01.2007 - 08:55) *

А для чего сие чудо нужно? Такое подобие операционной системы займет уйму памяти и времени выполнения.Насколько можно судить по серии FX, ПЛК Mitsubishi- это интерпретаторы, а не компиляторы, и даже невыполняемый текст программы должен прочитываться.

Спасибо, Sergei Troizky! Да, это действительно будет подобие ОС, но в сильно упрощенном виде. Задача такова. Пользователю предоставляются средства высокого уровня для того, чтобы он мог писать программы типа "Переместиться влево на 10 мм -> просверлить -> выйти в ноль" (естественно, в кодах, например от 200 и выше) и вносить эти программы в доступную ему память данных. Для таких команд предполагаемая ОС будет представлять собой интерактивный транслятор (интерпретатор). Но для операций сложения, например, лучше использовать язык контроллера (коды команд 0...200), то есть должна быть возможность наряду с командами высокого уровня использовать и низкоуровневые. Подобно тому, как в Паскале можно выполнять команды ассемблера. Таким образом, в язык высокого уронвня не придется включать описания арифметических и прочих элементарных команд.
То есть по сути, команды высокого уровня обрабатываются, а для команд низкого уровня предполагаемая ОС прозрачна.
В принципе устроил бы и такой вариант: моя программа обрабатывает программу пользователя и вносит в память программ контроллера, а затем передает ей управление.
По поводу того, что неисполняемые участки программы тоже читаются и отнимают время - потому-то и хочется сделать так, чтобы моя программа для обработки команд низкого уровня выглядела, образно говоря, так:
...
Если код_команды<=200 то Выполнить FNC_код_команды.
...
Спасибо.
Sergei Troizky
Еще одно соображение.
Поскольку все параметры инструкций будут задаваться идексной адресацией, каждому параметру текущей инструкции нужен свой индексный регистр.
Поэтому вся серия ниже FX2N не подходит из-за наличия лишь двух индексных регистров.

Вообще, на мой взгляд, вся идея ошибочна. ПЛК- не та среда, в которой надо создавать операционные системы. Реализация потребует столько труда, что лучше потратить его на расшифровку протокола загрузки программы в ПЛК, а затем написать транслятор в компьютере.
-AAA-
Цитата(Sergei Troizky @ 23.01.2007 - 02:42) *

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

Вообще, на мой взгляд, вся идея ошибочна. ПЛК- не та среда, в которой надо создавать операционные системы. Реализация потребует столько труда, что лучше потратить его на расшифровку протокола загрузки программы в ПЛК, а затем написать транслятор в компьютере.

Проблема в том, что команды должны отрабатываться не только как заранее заданная программа. Должна быть также возможность ручного управления оператором с пульта с помощью кнопок и панели оператора, причем кнопкам назначаются команды высокого уровня. Поэтому идея с PC не подойдет, хотя мне она показалась очень привлекательной. Вообще PC в нашей жизни - это очень здорово...
В общем, я прихожу к выводу, что сохранить возможность использования системных инструкций контроллера не удастся. Поэтому в своем интерпретаторе [уже не ОС :-( ]придется просто прописать несколько самых необходимых операций - сложение, умножение, синус и кв. корень.
P.S. А вот на некоторых микроконтроллерах (PIC, Atmel) такое замутить можно, имея доступ к программной памяти:
...
Если код < 200 то
Положить код в ячейку Память_программ_xx (+ операнды)
Передать управление (или изменить программный счетчик) по адресу Память_программ_xx
Вернуться и продолжить анализ очереди входящих кодов
...
Как вы считаете? Вообще без доступа к памяти программ о чем-то подобном, видимо, и смысла нет говорить. Так что буду искать соответствующий контроллер. Может кто подскажет - есть ли такие в линейке Mitsubishi?
Большое спасибо за сотрудничество, Сергей.

Кстати, я тут глянул - шестнадцать индексных регистров во всех FX. Или в руководстве ошибка? Хотя, помнится, я писал прогу (на FX1N), где для отслеживания событий [в основном ошибок :-)] использовал:
...
inc v1
...
inc v2
...
inc z5
...
Так что с этим, думаю, трудностей не возникнет.
Sergei Troizky
Я проверил, всего два индексных регистра в FX1S и FX1N, а также старых FX0, FX0S, FX0N и FX.
Касательно других марок... что-то не слышал я никогда о возможности менять текст программы из самой программы unsure.gif

А вообще, приведенный пример наводит на мысль о неком ЧПУ.
Так там издавна применяются трансляторы, подобные описанному, и коды команд/инструкций там стандартизированы (так называемый G-код).
Может, не стоит изобретать велосипед?
-AAA-
Спасибо, Сергей. Особенно за G-коды. Направление моей мысли немножко изменилось. Пока исследую этот вопрос, будут интересные новости - расскажу.
Русская версия IP.Board © 2001-2024 IPS, Inc.