Цитата(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
...
Так что с этим, думаю, трудностей не возникнет.