Программируемый логический контроллер

главная\р.л. конструкции\разное\...

Программируемый логический контроллер

Предлагаемый вашему вниманию Бейсик-контроллер представляет собой масштабную действующую модель программируемых логических контроллеров (ПЛК), которые широко применяются в «большой» автоматике в качестве «строительных» модулей при создании различных систем распределенного контроля и управления. Данный модуль представляет собой небольшое устройство, позволяющее решать задачи управления, регулирования. Тем не менее, этому малышу не составит труда «позвонить» при помощи модема на удалённый компьютер и отправить, например, результаты измерений. Кроме этого, он может реализовывать функции управления, выдавая различные управляющие сигналы.

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

Контроллерная реализация Бейсика имеет средства для работы с линиями ввода-вывода, с АЦП и ЦАП. Внешний вид контроллера показан на рис.1

Рис.1

Контроллер имеет следующие характеристики:

1. Количество каналов дискретного ввода TTL или 5V CMOS, шт 4 2. Количество каналов дискретного вывода TTL или 5V CMOS, шт 4 3. Количество каналов аналогового ввода 0…5V, шт 2 4. Количество каналов аналогового вывода ШИМ, шт 1 5. Характеристики коммуникационного интерфейса RS232: бодовая скорость, bps 57600 количество бит данных 8 количество стоповых бит 1 бит чётности отсутствует согласование потока аппаратное 7. Язык программирования встроенного интерпретатора Tiny-Basic 8. Размер программной области, байт, не менее 2000 9. Среднее время исполнения операторов, мкС, не более 500 10 Хранение программы (текста) в энергонезависимой памяти

Схема контроллера приведена на рисунке 2

Рис.2               Схема контроллера в формате PDF (151kb).

Микросхема U3 – AVR микроконтроллер ATMEGA8. Управляющая программа для этого контроллера, содержащая интерпретатор языка Бейсик, заносится в контроллер, когда схема полностью собрана. Для этой цели служит разъём внутрисхемного программирования XP3. Авторы использовали программатор PonyProg, который можно взять на сайте . На рис.3 показано как надо запрограммировать служебные биты микроконтроллера.

Рис.3

Микросхема U1 служит для преобразования уровней сигналов ТТЛ/КМОП в уровни интерфейса RS-232. Микросхема U2 – линейный стабилизатор. Если предполагается питание от стабилизированного источника 5 Вольт, микросхему можно исключить и запаять перемычку между контактными площадками 1 и 3 этой микросхемы. В качестве динамика (“пищалки”) может быть использован излучатель любой системы, важно, чтобы он был пассивным (не содержал встроенного генератора) и ток, потребляемый от ножки 5 микросхемы U3, не превышал 20 мА., что определяется величиной резистора R1.

Чтобы избежать возможного непреднамеренного стирания содержимого программной памяти, использована перемычка JP1. предназначена для защиты от случайной перезаписи пользовательской программы. Когда перемычка установлена, запись программы невозможна.

Светодиоды D1…D4 предназначены для индикации состояния дискретных выводов. Светодиод D5 служит для индикации состояния программы. Если D5 горит, то программа находится в цикле. Погашенный светодиод означает останов программы, например, ожидание ввода символа при использовании оператора INPUT или при формировании задержки оператором DELAY.

Кнопочный переключатель SW1 управляет линией RESET микроконтроллера ATMEGA8 и активно используется при записи программы пользователя, вывода содержимого программной памяти и пуска программы в работу. Кнопочные переключатели SW2…SW5 служат для изменения состояния дискретных линий ввода для тестовых и учебных целей.

Разъёмы XP1 и XP2 предназначены для включения в схему устройства пользователя. Контроллер как “чёрный ящик” показан на рисунке 4.

 

Рис.4

Нагрузочная способность линий дискретного вывода определяется нагрузочной способностью микроконтроллера ATMEGA8 и составляет 20 мА на вывод, следует учитывать, что порядка 8 мА потребляют светодиоды, подключенные к каждому выводу.

Дискретный ввод совместим по уровням с ТТЛ и КМОП при напряжении питания 5 Вольт. Необходимо иметь в виду, что к каждому входу подключен кнопочный ключ на плате контроллера, образуя с источником сигнала монтажное ИЛИ. В общем случае, не следует пользоваться кнопочными ключами на плате, при наличии внешнего источника сигнала.

На аналоговый входы могут подаваться сигналы в диапазоне от 0 до 5 вольт, что соответствует дискретному представлению от 0 до 1023 единиц. АЦП работает в режиме непрерывной дискретизации (с периодом около 30 мкС), но реальная дискретизация зависит от частоты считывания при помощи оператора ADC и зависит от длины цикла, в который это оператор включен.

Аналоговый вывод представляет собой на самом деле дискретный выход с ШИМ частотой 5,4 кГц. Значению 0 соответствует напряжению 0В на ШИМ выходе, а значению 1023 – напряжение питания контроллера +5В. Остальные значения соответствуют усредненному значению импульсного сигнала с шириной импульса, пропорциональной введенному при помощи оператора DAC значению. Параметры RC-цепи определяются пользователем. В общем случае, вместо R10 должна быть запаяна перемычка, а конденсатор C17 отсутствует.

Конструктивно контроллер представляет собой печатную плату размером 80 x 90 мм. С целью обеспечения возможности использования «лазерно-утюжной технологии» печатные проводники выполнены с одной стороны. Однако желательно использовать и верхний слой, как экранный, подключенный к цепи GND. Это снизит уровень электромагнитного излучения от цепей контроллера.

Под микросхему U3 желательно установить панельку. Это позволит использовать плату контроллера как “программатор”. Ведь отлаженный контроллер, предназначенный для встраивания в изделие, может иметь очень ограниченный набор компонентов. В пределе это сам AVR-микроконтроллер, кварцевый резонатор и 3 керамических конденсатора.

Вид проводников печатной платы показан на Рис.5

Рис.5

 

Сборочный чертёж показан ниже

Рис.6

 
Позиционное
обозначение


Количество


 Наименование компонентов
по классификации Чип и Дип

 
Номинал

Цены в Чип-Дип на 27.06.2006,
рубли

C1…C4, C6…C9,
C13…C17

13

Конденсаторы серии К10-17 импортные

0.1 мкФ 50В

0,50

C5,C10

2

Электролитические конденсаторы

47мкФ 25 В

4,60

C11,C12

Конденсаторы серии К10-17 импортные

18 пФ 50 В

0,50

D1

1

204RD св.диод красн. d=3мм

2,40

D2…D5

4

204GD св.диод зел. d=3мм

2,40

LS1

Пьезоизлучатель KPE-120

18,00

SW1…SW5

5

TS_A4PS_130

3,50

R1,R5…R9

6

С2-23-0.125 5%

470

0,70

R2…R4,R10

4

С2-23-0.125 5%

10K

0,70

U1

1

ICL232CPE=HIN232CP(MAX232CPE)PDIP16

42.00

U2

1

7805

9,10

U3

1

ATmega8-16PI PDIP28

79,00

XS1

1

DRB9FB

16,0

XS2

1

Гнездо питания DS-210

5,00

XP1…XP3

3

IDC-10,BH-10

15,00

Y1

Кв.рез. 11.0592 МГц имп. HC-49U

11MHZ0592

8,40

Встроенное программное обеспечение микроконтроллера ATMEGA8 содержит интерпретатор языка Бейсик и систему загрузки текста пользовательской программы в постоянное запоминающее устройство.

В основе интерпретатора лежит код, найденный в Интернете текст интерпретатора языка Tiny Basic на языке Си под DOS, авторство не указано, текст файла датирован 1992 годом. Надо упомянуть, что Tiny Basic был разработан хакерами в середине семидесятых годов (тогда хакерами называли компьютерных самодельщиков). Существовало множество реализаций этого языка. Он имел сокращённый набор команд и размещался в нескольких килобайтах памяти. Была даже разработана спецификация на него. В то славное время Бил Гейтс трудится над своим бейсиком Альтаир и уже готов оставить учёбу в Гарварде, чтобы основать Майкрософт.

В Интернете можно найти Tiny Basic от фирмы Intel для однокристального микроконтроллера MCS-51 (INTEL INSITE LIBRARY FILE BF10:TB51 V2.2 (MCS-51 TINY BASIC). Реализация сделана на языке ассемблера.

Существует коммерческий продукт фирмы Parallax () BASIC Stamp microcontrollers, представляющий собой линейку микроконтроллеров со встроенным интерпретатором языка Parallax PBASIC. Текст программы для такого контроллера подвергается преобразованию в промежуточный язык при помощи специального программного обеспечения на персональном компьютере. Фирма позиционирует свои изделия как ПЛК для малых профессиональных проектов, учебных целей и любительского применения.

При реализации данного проекта авторы добавили в Tiny Basic ряд команд, позволяющих обслуживать периферийные устройства предлагаемого модуля. Кроме того, были добавлены, отсутствовавшие в спецификации Tiny Basic операторы SCALE и REM. Первый из них позволяет повысить точность целочисленных вычислений. Назначение второго общеизвестно. Ввод-вывод остался консольным (консолью называли телетайпный аппарат, с помощью которого оператор общался с компьютером), вместо консоли теперь можно использовать любой персональный компьютер, подключенный по интерфейсу RS-232, с запущенной терминальной программой. Причём, работа через консоль актуальна только на этапе загрузки и отладки программы или когда контроллер взаимодействует с другим устройством, например с модемом. Следует отметить, что в целях ускорения процесса загрузки пользовательской программы, использован способ обмена с квитированием. Это означает, что загрузочный кабель должен иметь в дополнение к линиям RX, TX, GND еще как минимум линии RTS,CTS.

Покажем, как нужно настроить терминальную программу для работы с контроллером на примере терминала Hyper Terminal, входящего в операционную систему WINDOWS.

Для этого нужно начать движение от меню Пуск по пути Пуск -> Программы ->Стандартные -> HyperTerminal. После чего появится окно программы HyperTerminal и диалоговое окно Описания подключения. Заполнить поле Название подключения и выбрать значок, как показано на рис.7, после чего нажать кнопку ОК.

Рис.7

Выбрать свободный коммуникационный порт, к которому предполагается подключать контроллер (Рис.8)

Рис.8

Установить параметры коммуникационного порта, как показано на рис.9

Рис.9

После чего последовательно нажать кнопки Применить и ОК

После чего порт терминала готов к работе, но требуется настройка параметров передачи символов, для чего нужно нажать на кнопку в позиции 1, как показано на Рис.10

Рис. 10

Далее в свойствах соединения необходимо выбрать закладку Параметры (Рис.10, позиция 1). На этой закладке установить эмулятор терминала ANSI или ANSIW, это позволит, при выводе на терминал, управлять цветом и позиционированием курсора. Далее нажать кнопку Параметры ASCII (Рис.10, позиция 2). Установить в параметрах ASCII дополнение символов возврата каретки переводами строк для отправляемых символов, как показано на Рис. 11.

Рис.11

Сохранить текущую настройку терминала, воспользовавшись пунктами главного меню терминала Файл -> Сохранить как. Это позволит избежать повторной настройки параметров при следующем вызове терминальной сессии.

Для запуска терминала в работу необходимо использовать пункты главного меню Вызов -> Вызов, после чего терминал готов к работе.

Подготовка контроллера для записи пользовательской Бейсик программы заключается в том, что необходимо убедиться в отсутствии перемычки JP1. Дело в том, что когда перемычка снята, контроллер, после подачи питания (или нажатия кнопки RESET) не сразу переходит на выполнение пользовательской программы, а ожидает прихода символов по интерфейсу RS-232 в течение секундного интервала – временного окна. Если за время действия временного окна пришёл символ Enter, то контроллер выводит по интерфейсу RS-232 текст содержащейся в нём программы. А если получен символ пробела, то контроллер выводит слово Reflash и ожидает текст Бейсик программы по интерфейсу RS-232. Отменить этот режим можно повторным нажатием кнопки RESET.

Ниже показан пример работы с контроллером и с консолью. В текстовом редакторе создаётся текст, а затем копируется в стандартный буфер обмена Windows

Рис.12

Далее на котроллере нажимается кнопка RESET, в течение секундного временного окна с терминала должен быть передан код клавиши пробел (просто нажимается клавиша пробела) и контроллер переходит в режим ожидания текста.

Рис.13

В терминале, по нажатию правой кнопки мышки вызывается выпадающее меню и выбирается пункт Передать главному компьютеру (главный в данном случае - контроллер).

Далее происходит передача текста в контроллер, на каждый записанный блок размером 64 байта, контроллер выводит символ W.

Рис.14

По окончании загрузки выводится OK. Для запуска приложения нужно снова нажать RESET, через одну секунду программа запустится на исполнение. Данный пример показывает весь цикл работы с контроллером. Из этого видно, что специальную программистскую “кухню” организовывать не придётся. Для загрузки в контроллер собственной программы на языке Бейсик никакого специального оборудования или программного обеспечения не требуется. Для этой цели годится практически любой компьютер, у которого есть интерфейс RS-232 и может быть запущена терминальная программа (наладонные компьютеры, ноутбуки современные и древние, настольные PC). А вот так выглядит консоль на КПК

Рис.15

Контроллерная версия языка Tiny-Basic

Особенностью данного диалекта языка Tiny Basic является то, что в одной строке записывается один оператор, и строки не нумеруются. Для обозначения точек перехода используются метки.

Операторы

Оператор Действие Пример использования Описание PRINT Оператор вывода. Вывод на консоль сообщений PRINT Переводит вывод на новую строчку PRINT “Это сообщение” Выводит сообщение PRINT X Выводит значение переменной или выражения PRINT “$”;X; PRINT “$”;65; Выводит одиночный символ с кодом, указанным явно или через выражение PRINT “X=”;X;” “;”$”;C; Выводит список, символ “;” означает, что вывод производится подряд без пробелов. Пробелы, указанные внутри кавычек, выводятся. Символ ”;” в конце строчки означает, что следующий оператор PRINT продолжит печать в текущей строчке PRINT X,Y,Z, Выводит список, символ “,” означает, что вывод производится c табуляцией на 8. Символ ”,” в конце строчки означает, что следующий оператор PRINT продолжит печать в текущей строчке в текущей позиции табуляции. INPUT Оператор ввода INPUT X Выводит знак вопроса “?” и ожидает ввода числа INPUT “X=”,X Выводит сообщение в двойных кавычках и ожидает ввода числа INPUT “$”,C Ожидает ввода одиночного символа в переменную IF THEN Условный оператор IF X<10 THEN X=X+1 Если условие истина, то вычисляется выражение IF X=0 THEN GOTO 100 Если условие истина, то производится переход на строчку с меткой 100 IF Z=65 THEN GOSUB 200 Если условие истина, то производится вызов подпрограммы меткой 200 FOR TO NEXT Оператор цикла FOR I=32 TO 127 PRINT “$”;I,I NEXT Производит действие 127-32+1 раз с наращиванием переменной цикла. В качестве действия, вывод переменной как символа с кодом I и вывод значения переменной GOTO Оператор перехода GOTO 100 Производится переход на строчку с меткой 100 GOSUB Оператор вывода подпрограммы GOSUB 200 Производит вызов подпрограммы меткой 200 RETURN Возврат из подпрограммы 100 PRINT X RETURN     END Завершает выполнение программы IF Z=0 THEN END     Операторы, добавленные в контроллерную реализацию языка   ADC Чтение текущего канала АЦП ADC A Производит чтение текущего канала АЦП в переменную DAC Вывод в ЦАП DAC X DAC 255 DAC X+100 Выводит в ЦАП значение, определяемое выражением SETB Установка бита SETB 1 SETB X SETB X+1 Устанавливает бит, номер которого определяется выражением CLRB Сброс бита CLRB 1 CLRB X CLRB X+1 Очищает бит, номер которого определяется выражением TSTB Чтение бита TSTB B,1 TSTB B,X TSTB B,X+1 Производит чтение в переменную состояния бита, номер которого определяется выражением DELAY SCALE Формирование задержки Оператор масштабирования DELAY 100 DELAY X DELAY X + I * 10 Формирует задержку, длительность которой определяется выражением. Дискретность задания 1 миллисекунда. SCALE X,100,Y Рассчитывает процент числа X от числа Y. Сначала производится умножение X на 100 и результат помещается в 32-х битную временную переменную, затем производится деление на Y, результат помещается в X     SCALE X,1000,Y Тоже, но с точностью до десятых долей процента STOP Оператор останова   Применяется только в симуляторе для отладочных целей. Когда интерпретатор встречает этот оператор, выполнение останавливается для просмотра состояния переменных и периферии. Выполнение программы может быть продолжено REM Оператор комментирования REM Это комментарий   Комментарий, интерпретатор не исполняет эту строчку REM GOTO 100 Шунтирование оператора GOTO, строчка превращается в комментарий

Числа:

Все числа являются знаковыми целыми в диапазоне -32767 до +32767

Переменные:

Существует 26 переменных, обозначаемых буквами от A до Z.
Внутреннее представление 16-битное.

Операторы

Арифметические:

+ сложение - вычитание * умножение / целочисленное деление (нужно иметь в виду, что, например, 14/5=2) % - взятие остатка от деления (14%5=4) побитное И | побитное или

Сравнения (используются только оператором IF):

= равно > больше < меньше

 

Выражения

Выражения составляются из чисел, переменных, арифметических и битовых операторов. Операторы сравнения не могут быть использованы в выражениях. Вычисления производятся слева направо. Применением скобок можно изменить порядок вычислений.

Существует 3 уровня.

- cначала вычисляются выражение с унарными операторами + и -. - затем вычисляются выражения с * / % - вычисляются выражения с + - и |

Метки

Набор от 1 до 3 символов, состоящий из цифр. Метка ставится в начале строки, на которую предполагается делать переход или адресовать вызов подпрограммы
Пример допустимых меток: 10, 200, 210.

Системные биты контроллера

Биты ввода

Номер бита

Назначение

1

Дискретный ввод 1

2

Дискретный ввод 2

3

Дискретный ввод 3

4

Дискретный ввод 4

126

Бит-признак наличия данных в буфере консоли. Служит для организации чтения символов на лету

Пример 1. Программа циклически считывает состояние бита ввода и выводит состояние этого бита на терминал

    100 TSTB X,1 IF X=1 THEN PRINT “1” IF X=0 THEN PRINT “0” GOTO 100  

Пример 2. Программа на лету опрашивает состояние консоли и, если в буфере есть данные, выполняет оператор INPUT

    10 tstb a,126 if a=0 then goto 10 input "$",b print "$";b; goto 10  

Биты вывода

Номер бита

Назначение

1

Дискретный вывод 1

2

Дискретный вывод 2

3

Дискретный вывод 3

4

Дискретный вывод 4

127

Бит разрешения генерации звука биппером

128

Бит переключения канала АЦП

0 – канал 1
1 – канал 2

Пример. Программа формирует двойной сигнал биппера

    GOSUB 200 GOSUB 200 END 200 SETB 127 DELAY 100 CLRB 127 DELAY 100 RETURN  

Интерпретатор осуществляет диагностику времени исполнения. Когда встречается ошибка, выполнение останавливается, и на консоль выводятся код ошибки и номер строки, в которой ошибка была встречена.

Код ошибки

Значение ошибки

0

Синтаксическая ошибка

1

Нарушена парность скобок

2

Ожидалось выражение

3

Ожидался знак выражения

4

Ожидалась переменная

5

Таблица меток переполнена

6

Несколько меток с одинаковыми именами

7

Неопределённая метка

8

Ожидался оператор THEN

9

Ожидался оператор TO

10

Слишком много вложенных циклов

11

Встречен оператор NEXT, не принадлежащий оператору FOR

12

Слишком много вложенных подпрограмм

13

Встретился оператор RETURN, но вызова подпрограммы не было

Далее приведены небольшие проекты, реализованные с использованием данного контроллера.

1. Пример простой программы “Бегущий огонь”

  rem ********************************************* rem * Бегущий огонь * rem * Состояние бита 1 изменяет направление * rem * перемещенияогонька * rem ********************************************* print print "**************************" print "* Running light *" print "* 23.06.2006 TbcGroup *" print "**************************" 100 for i=1 to 4 tstb y,1 x = 5-i if y=1 then goto 400 x = i 400 setb x delay 100 clrb x next delay 200 goto 100  

2. Покажем применение контроллера при создании электронного ключа кода Морзе. Данный вариант реализации, вполне имеет право на жизнь и хорошо демонстрирует возможности контроллера. Кроме собственно функций ключа, выполнена функция телеграфного VOX. “Ввод” скорости и времени задержки отпускания VOX производится путём измерения напряжения на движках потенциометров как показано на рисунке 16.

Рис.16

    rem ********************************************* rem * ELBUG KEY rem * d - длительность элемента (точки) rem * p - задержка на отпускание PTT rem * t - "одновибратор" задержки отпускания rem * ВЫХодные биты: rem * 1 - манипуляция rem * 2 - PTT rem * ВХодные биты: rem * 1 - точки rem * 2 - тире rem * Аналоговые входы: rem * 1 - перем. резистор "Скорость манипуляции" rem * 2 - перем. резистор "Время удержания PTT" rem **********************************************   print print "**************************" print "* ElbugKey Version 1.1 *" print "* 23.06.2006 TbcGroup *" print "**************************" 50 clrb 2 100 adc d d=d+15 setb 128 tstb A,1 if a=0 then gosub 200 tstb a,2 if a=0 then gosub 300 adc p p=p+50 clrb 128 if t=0 then goto 50 t=t-1 goto 100   rem ------------------ rem Подпрограмма точек rem ------------------ 200 setb 1 setb 2 t=p setb 127 clrb 3 delay d clrb 1 clrb 127 delay d return   rem ------------------ rem Подпрограмматире rem ------------------ 300 setb 2 setb 127 setb 1 t=p delay d delay d delay d clrb 1 clrb 127 delay d return  

3. Другой пример, автоматический измеритель КСВ

Схема включения будет иметь вид, показанный на рисунке 17

Рис.17

В данном приложении контроллер является точнее вычислителем, входящим в состав измерителя.

На входы АЦП подаются нормированные, детектированные сигналы от направленных ответвителей. Нормирование должно быть выполнено таким образом, чтобы максимальной мощности соответствовало напряжение питания AVR-микроконтроллера (5 Вольт).

Вывод показаний производится на стрелочный прибор.

Положение “С”, переключателя является сервисным и служит для градуировки шкалы при изготовлении измерителя. В этом положении (терминальная программа должна быть подключена) производится запрос ввода значений КСВ, умноженных на 100 (для КСВ 1.5 нужно вводить 150). Перед началом градуировки нужно ввести значение -1, это приведёт к тому, что в ЦАП будет выведено значение 1000, для которого нужно подобрать величину резистора R1 на ток полного отклонения стрелки миллиамперметра. Далее производить последовательный ввод значений КСВ для градуировки шкалы.

Значение резистора R1 можно предварительно рассчитать по формуле:

R1 = 0.976 * U/I – Rр,

где U – напряжение питания контроллера; I – ток полного отклонения стрелки прибора; – сопротивление рамки постоянному току.

Назначение некоторых переменных в программе:

N – количество отсчётов для усреднения; K – определяет “растяжку” шкалы”

Конечная точка шкалы в КСВ определяется по формуле КСВ=(10+K)/K

Ноль шкалы соответствует КСВ=1 При K=1, конечная точка шкалы 11 При K=2, конечная точка шкалы 6 При K=3, конечная точка шкалы 4.333 При K=4, конечная точка шкалы 3.5 При K=5, конечная точка шкалы 3 При K=6, конечная точка шкалы 2.666   PRINT PRINT "**************************" PRINT "* SWR-meter Version 1.0 *" PRINT "* 24.06.2006 TbcGroup *" PRINT "**************************" N=10 K=4 50 CLRB 1 F=0 R=0 FOR I=1 TO N CLRB 128 ADC A F=F+A SETB 128 ADC A R=R+A NEXT F=F/N R=R/N TSTB A,1 IF A=0 THEN GOSUB 100 TSTB A,2 IF A=0 THEN GOSUB 200 TSTB A,3 IF A=0 THEN GOSUB 300 TSTB A,4 IF A=0 THEN GOSUB 400 IF D>1023 THEN D=1023 DAC D GOTO 50   REM--------------------------- REM Вывод КСВ REM--------------------------- 100 X=F+R Y=F-R IF Y=0 THEN GOTO 110 SCALE X, K*100, Y PRINT "F=";F;" R=";R;" SWR=";X/K D=X-K*100 RETURN 110 SETB 1 DELAY 250 PRINT "SWR can't be calculated" D = 1023 RETURN   REM--------------------------- REM Вывод падающей мощности REM--------------------------- 200 D=F PRINT "F=";F RETURN   REM--------------------------- REM Вывод отражённой мощности REM--------------------------- 300 D=R PRINT "R=";R RETURN REM--------------------------- REM Градуировка REM--------------------------- 400 INPUT "SWR=",X D=K*(X-100) IF X=-1 THEN D=1000 PRINT D RETURN  

На этом заканчивается раздел, показывающий возможные применения данного контроллера.

Следующий раздел посвящен описанию программы симулятора данного контроллера.

Для того, чтобы можно было в комфортных условиях, не прибегая к программированию реального контроллера, освоить язык, отладить алгоритмы, произвести предварительное тестирование, был разработан симулятор контроллера на PC. Симулятор эмулирует практически все ресурсы реального контроллера, за исключением эмуляции биппера, к тому же консоль симулятора не распознаёт управляющие последовательности ANSI терминала.

Симулятор позволяет создавать, сохранять, загружать тексты программ и запускать их в работу. Возможно пошаговое исполнение команд, запуск и останов на лету. Для остановки программы в нужном месте, в текст вставляется оператор STOP, после чего программу нужно перезапустить. При выполнении оператора STOP, исполнение останавливается. Можно просмотреть состояние переменных и периферии и продолжить исполнение в пошаговом режиме или в режиме запуска. Панель симулятора показана на Рис.18.

Рис.18

Все ресурсы контроллера лежат на поверхности, видны все переменные и периферия. Загрузка, сохранение программ производится через меню File командами Load, Save и Save as…

Процесс отладки производится четырьмя клавишами или соответствующими кнопками

F2 – принудительный останов запущенной программы. Программа останавливается на следующем операторе. Текущий оператор будет выполнен до конца. Поэтому, например задержка, сформированная оператором DELAY, будет выполнена до конца и только после этого произойдёт останов на следующей строчке. После останова можно модифицировать переменные и изменять состояние других ресурсов.

F4 – Сброс симулятора,

F9 – запуск программы, при этом обнуляются все переменные. После запуска можно наблюдать состояние ресурсов и влиять на ресурсы (дискретный, аналоговый ввод и состояние бита готовности данных в приёмнике RS-232)

F8 – пошаговое исполнение, при этом индицируется текущее состояние всех ресурсов контроллера.

В окне редактора работают все обычные операции копирования, вставки и отмены, вызываемые по Ctrl+C, Ctrl+V,Ctrl+Z

Документация в электронном виде, файл для программирования микроконтроллера ATMEGA8 и симулятор

Авторы:
Александр Костюк (UA6ANN)
Евгений Фадеев (RV3BJ)

Эта статья опубликована  в журнале "Радио" 2006, №10,11.

Глас народа 17.09.2009 09:30 Можно ли заменить контроллер ATMega8 на ATMega48? Какие изменения...  --  Bear
12.08.2009 11:04 RV3BJ -> Здравствуйте. Я еще только только начинаю осваивать данн...  --  CaToPI
09.01.2009 17:57 Дорогой Пончик01 !!! Ты похоже очень крут, но не по делу. Если ...  --  RV3BJ
30.10.2008 05:40 Перерыл весь файловый архив. Никаких исходников там нет. В прила...  --  Пончик01
10.06.2008 20:25 а нет ли схем в более другом варианте чтоб их изменять можно было...  --  AGera
02.06.2008 23:14 По роли работы ваш контроллер идеально подходит. Спасибо!!!! Го...  --  zirop
05.02.2008 15:39 Можно ли поставить кварц на другую частоту, не повлияет ли это на...  --  UA3MCH
05.02.2008 00:53 Подскажите, какой тип протокола указывать в программе Hypertermin...  -- 
24.10.2007 04:41 На страничке Загрузка файлов...  --  ua6ann
23.10.2007 14:17 не нашел исходников(((((((((((...  --  deimos
15.10.2007 03:45 Хочу сообщить всем интересующимся этой темой, что в обновленной с...  --  RV3BJ
18.09.2007 20:38 Прекрасный проект как Tyni так и Basint. Парни Вы молодц...  --  Сергей
29.07.2007 11:49 Кто может продать мне готовый (собранный и работающий) контроллер...  --  Дмитрий
03.06.2007 06:22 Советую взглянуть на страницу дальнейшего развития этого проекта,...  --  RV3BJ
08.05.2007 16:08 не возникало ли у разработчиков идеи подключить флеш карту MMC ил...  --  vladimer
24.04.2007 07:24 собрал около 10 шт. для студентов непрофильной специальности (хим...  -- 
20.04.2007 20:50 О разводке спорить не буду, это дело действительно творческое и м...  --  ua6ann
13.04.2007 10:39 данная конструкция не прошивается на 57600 с упр. потоком. Переде...  --  Genius
25.02.2007 22:02 Молодцы-полезный проект! Неплохо было бы создать проект управлен...  --  Александр, EW3D...
23.02.2007 12:43 Точно, бесполезная статья, все идем учить Си!...  --  Дьюк Ньюкем...
23.02.2007 11:45 для любительского "класса бейсик" не проще ли basic копилятор исп...  --  RA1TEX
29.01.2007 12:03 Почему уважаемый ВижуалДивайсизГруп в недоумении? Ведь этот проду...  --  UA6ANN
28.01.2007 14:15 > Хочу отметить, что новые версии не будут распространяться свобо...  --  VDG
14.01.2007 19:26 В статье из журнала "Радио" дана ссылка на схему программатора. В...  --  реношник
14.01.2007 16:14 Все хорошо! Да! Ещё бы к этой вещице приделать графический ЖКИ, к...  --  Вадим
31.12.2006 13:35 Опубликованная в журнале версия имеет ограниченные возможности и ...  --  RV3BJ
28.12.2006 21:47 А возможно ли сделать контролер на ATMEGA128 с большей памятю , д...  --  woodi
18.11.2006 18:52 Вот и первое приложение к данному контроллеру! Интерфейс поворо...  --  UA6EM
11.11.2006 12:41 Бесплатно от того, что так могут поступить истиные радиолюбители,...  --  Vic
11.11.2006 11:09 Болшое дело я думаю что оно первое своего вида которое бесплатно....  --  FRANTA OK2VFS...
11.11.2006 10:14 Статья понравилась! Интересно было-быувидеть контроллер в качес...  --  UA6EM
07.11.2006 19:26 to Юрий: Юрий, ссылку на ЖР обязательно поставим. Оплошали мы, ЖР...  --  Юрий / UA6AP...
07.11.2006 17:22 Система на PIC16F84 ( 64 байта для проги, это конечно очень мало)...  --  Сергей Васильев...
07.11.2006 12:20 Spasibo za otlichny proekt. Germany....  --  Alex
07.11.2006 12:05 Альтернативный вариант на PIC16F84 правда с меньшей памятью прогр...  --  Андрей
07.11.2006 09:58 Сдается, где-то уже видел... А! "Радио" 2006,№11, с.32-35. У пор...  --  Юрий
06.11.2006 14:57 Авторам можно написать на Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript , это я в симуляторе, в...  --  Tom
06.11.2006 12:45 Отличная вещица! Спасибо Авторам. Есть вопрос. Имеется желание п...  --  Андрей
06.11.2006 02:38 Спасибо! Молодцы, есть ещё честное бескорыстное радиолюбительств...  --  RW6AT






Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.