LiLu написал(а):Ну начнем с того, что в принципе непонятно что делать нужно. Он показал пример на основе которого стряпается наша лаба... Ни горячо ни холодно. Еще + написать на двух языках. Жуть.
По первой лабе. Есть программа-эмулятор стенда, в которой на языке Process Pascal надо написать простенькую программу. Ну во всяком случае у нескольких человек программы примитивнейшие, может быть, кому-то не повезло, не знаю.
Эмулятор лежит тут:
ФТП/teachers/Seleznev_K.A./Интерфейсы АСОиУ/P-NET(model)/
Как с ним работать:
1. Запустить файл Model.exe
2. Загрузить файл программы с расширением .pp, примеры лежат в папке test.
3. Для запуска программы: меню "Работа" -> Пуск (F9), затем нажимать кнопку "ШАГ" до тех пор, пока в окне трассировщика не появится надпись "Загрузка файла PNET.INC завершена!", т.е. трассировка не дойдет до строки программы
После этого идти в меню "Стенд" - Устройства (F5), Выделить все - Принять, затем меню "Стенд" - Схема (F6), справа появится модель стенда, на котором можно нажимать кнопочки.
Собственно, теперь программу можно пошагово выполнять, нажимая на кнопку "ШАГ".
У меня было задание: при одновременном нажатии на 3 кнопки зажигать 3 лампы. За состояние элемента стенда отвечают те или иные переменные, например, BlueButton - это голубая кнопка, может принимать значения ON или OFF, соответственно, это означает, что кнопка нажата или отжата.
Вот сама программа, язык по синтаксису - обычный Паскаль:
Вот и вся первая лаба. Чтобы ее выполнить, про P-NET вообще ничего знать не обязательно. Правда, на защите на его вопросы я не ответил, так что лучше все-таки методичку почитать.
Вторая лаба у нас со Славой свелась к простому написанию кода (хотя если почитать методичку, там необходимо работать в программах LonMaker и NodeBuilder и отлаживать программу на стенде, но Селезнев, похоже, и без этого принимает).
Сеть Lon имеет несколько программируемых узлов, к которым подключены всякие датчики, лампочки, дисплеи, кнопки и проч. устройста в/в и исполнительные механизмы (читать конспект). Если объекты (кнопки, лампы и т.д.), которыми нам надо управлять, находятся в разных узлах, то для работы с ними используются так называемые сетевые переменные. Чтобы из программы одного узла обращаться к другому, между ними надо установить связь (вот тут наступает легкое дежавю в виде воспоминаний о курсовой по моделированию и стратуме). А дальше написать для каждого узла код.
В моем случае задание с тремя кнопками и тремя лампами я изменил так, что одну кнопку выкинул, а одну лампу перенес на другой узел (это чтобы работа по сети была, можно было вообще все 3 лампы подключить к одному узлу). Код с комментариями, вкратце что проиходит:
Первый узел:
Переменная - состояние лампы 1, подключенной к порту IO_0, тип output (об этом в описании NeuronC, есть на ФТП), bit - видимо, в NeuronC это аналог boolean, имя ioLED1, при инициализации (при сбросе) принимает значение LED_OFF, т.е. выключено.
Сетевая переменная, нужная для управления лампой 3, которая находится в другом узле. У Славы используются Стандартные Типы Сетевых Переменных (конспект), у меня это не нужно.
Обработка события "Сброс", кажется, это событие происходит при включении питания или нажатия кнопки сброса.
Записываем в переменную, связанную с подключенным локально устройством, значение, в частности, выключаем лампу 1.
При изменении значения переменной левой кнопки на BUTTON_DOWN (кнопку нажали)
проверяем, не нажата ли другая кнопка. Если нажата, значит, нажаты обе кнопки и надо зажигать лампы, что мы и делаем. Локальные лампы зажигаем через io_out, а сетевой переменной просто присваиваем значение.
Аналогично обрабатываем нажатие другой кнопки.
А что делает программа другого узла, к которому подключена лампа 3:
При изменении значения сетевой переменной (а мы его меняем в первом узле при нажатии двух кнопок) проверяем, что у нас там, 0 или 1, и в зависимости от этого включаем или выключаем третью лампу.
Вот этих знаний мне хватило, чтобы сдать лабораторные по интерфейсам. Но с заданием повезло.