
- •Выпускная квалификационная работа
- •Научный руководитель
- •Введение
- •Глава 1. Виды, устройство и принцип работы шаговых двигателей [6]
- •1.1 Общие принципы шаговых двигателей
- •1.2 Виды шаговых двигателей
- •1.21 Двигатели с переменным магнитным сопротивлением
- •1.22 Двигатели с постоянными магнитами
- •1.23 Гибридные двигатели
- •1.24 Биполярные и униполярные шаговые двигатели
- •1.3 Способы управления фазами шд
- •Глава 2. Контроллеры шаговых двигателей
- •2 .1 Управление шаговым двигателем с помощью автономного контроллера
- •2.2 Управление шаговым двигателем с использованием эвм
- •2.3 Реализация адаптера шагового двигателя
- •Глава 3. Управление контроллером с помощью системы программирования PureBasic
- •3.1 Особенности системы программирования PureBasic
- •3.2 Синтаксис
- •3.3 Сравнение с Basic и Pascal
- •3.4 Особенности PureBasic
- •3.5 Программирование lpt порта
- •Глава 4. Модель крана как пример применения шаговых двигателей
- •4.1 Устройство модели
- •4.2 Программа управления краном на языке программирования PureBasic
- •Заключение
- •Список литературы
- •Приложения
- •1. Моделирование элементов устройств управления механизмами
- •2. Параллельный (lpt) порт ibm pc
- •3. Видеофильм о шаговых двигателях
- •4. Текст программы управления моделью крана
- •5. Результаты моделирования в программе MicroCap 7 устройства выработки управляющих импульсов на d-триггерах.
3.2 Синтаксис
В системе программирования PureBasic существует несколько типов переменных, они показаны в таблице.
Имена переменных могут состоять из букв английского алфавита, цифр и символа «_» (нижний пробел). Строчные и заглавные буквы системой не различаются, поэтому, например, переменная GHOST и ghost будут считаться за одну переменную. Недопустимо использовать в имени переменной символы *, %, №, % и другие.
Также возможно использовать константы, имя константы отличается от имени переменной только символом «#» в начале. Тип константы указывать не требуется. Как правило, в процессе выполнения программы константа не должна менять своего значения, иначе появится сообщение об ошибке.
Массивы в PureBasic объявляются с помощью оператора Dim, например:
Dim ar.w(10)
ar – имя массива, «w» после точки означает, что массив будет состоять из переменных типа Word. В скобках задано количество элементов массива, в моём случае – 11 переменных, поскольку нумерация начинается с нуля.
3.3 Сравнение с Basic и Pascal
Для сравнения PB с другими системами программирования, рассмотрим пример реализации цикла с параметром.
Basic:
For i=1 to n [step m]
<операторы>
Next i
Pascal:
For i=1 to n [step 1 или -1] do
Begin
<операторы>
End;
Pure Basic:
For i=1 to n [step m]
<операторы>
Next i
Из этого примера видно, что PB по реализации цикла с параметром идентичен СП Basic. По части реализации основных алгоритмических структур PB похож на Basic. Версии Basic, работающей и использующей все возможности ОС Windows, не было создано. PureBasic изначально создавался для написания приложений, функционирующих под Windows.
3.4 Особенности PureBasic
У СП PureBasic существует несколько особенностей, отличающих её от многих СП. Такие как:
- возможность создания окна программы, параметры которого можно настраивать (размер, вид и т.д.)
- использование так называемых гаджетов. Любой элемент окна программы (кнопки, строки ввода, текст и т.д.) является гаджетом, его параметры можно изменять.
3.5 Программирование lpt порта
LPT порт ЭВМ состоит из трёх регистров – данных, состояния и управления, с адресами для порта LPT1 - 378H, 379H и 37aH соответственно, для порта LPT2 - 278H, 279H и 27aH соответственно. Для связи с портом необходимо использовать драйвер “inpout32.dll”, который должен быть или в системной папке Windows, или в папке с создаваемой программой. В тексте программы драйвер подключается функцией “OpenLibary()”:
OpenLibrary(1,"inpout32.dll")
Запись и чтение информации с регистров порта удобнее выполнять с помощью процедур:
Запись:
Procedure LPT_Out(Address, Value)
CallFunction(1,"Out32", Address, Value)
EndProcedure
Чтение:
Procedure LPT_Inp(Address)
Value = CallFunction(1, "Inp32", Address)
ProcedureReturn Value ; принятый байт
EndProcedure
Теперь достаточно вызвать процедуру с нужными параметрами чтобы считать или записать информацию в регистр порта:
LPT_Out($378,a) – в регистр данных порта запишется двоичный код десятичного числа а (0..255)
p=LPT_Inp($379) – переменной p присвоится значение регистра состояния порта в десятичной системе счисления.