Перейти к содержанию
  • записи
    32
  • комментария
    233
  • просмотров
    49 867

4.Программируемый логический контроллер VIP-651024


mazzi

980 просмотров

В предыдущих записях блога я показал сам контроллер, теперь расскажу, как я его программирую.

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

osc.png.4652a48448833d4fcad47509099e06d4.png

На схеме мы видим инвертор, затем буфер-повторитель, элемент 2-И и выход. Шестнадцатиричные числа - это номера проводов в схеме.
Теперь немного о том, как устроена память контроллера.

Физическое распределение памяти.
 *  0x0000  байт помещённый по этому адресу выводится на аппаратные выходы.  
 *  0x0001  этот байт содержит состояние аппаратных входов в момент считывания.
 *  0x0002  по этому адресу хранится количество проводов в схеме. 
 *  0x0003..0x0006 четыре байта для временных однобитных переменных. 
 *  0x0007  с этого адреса начинается область для хранения значений проводов. На каждый провод 2 бита. 
 *  Сразу за областью проводов начинается область логических элементов, он продолжается до конца памяти. В данном контроллере короткая память, последний адрес 0x00F7.

 

 Логическое распределение памяти.


 Поскольку обращение происходит к отдельным битам, то и адресация у них несколько другая.
 0x00..0xbf память проводов. Теоретически может занимать всё указанное пространство, но практически ограничивается реальным количеством проводов. Реально начинается с адреса 0x0007.
 
 0xc0..0xdf адреса 32 битов для хранения значений не обновляемых автоматически, как память проводов. Реально располагаются по адресам 0x0003..0x0006. Смотри выше.
 
0xf8..0xff адреса 8 битов для ввода и вывода. Не смотря на то, что логические адреса для ввода и вывода совпадают, данные попадают в разные места памяти 0x0000 для вывода и 0x0001 для ввода. Смотри выше.

 

Логические элементы.

Логические элементы представлены в памяти в виде нескольких байт. Каждый элемент имеет свой уникальный код. Для нашей схемы мы будем использовать элемент 2-И - его код 0x01, элемент НЕ - его код 0x03 и элемент буфер, его код 0x06.
Код для инвертора  0x03, 0xC0, 0xC0 - код инвертора, номер провода к которому присоединен вход, номер провода к которому присоединен выход инвертора.
Код для повторителя  0x06, 0xC0, 0x00 - код повторителя, номер провода к которому присоединен вход, номер провода к которому присоединен выход повторителя.
Код для 2-И  0x01, 0x00, 0xF9, 0xFF - код элемента 2-И, номер провода к которому присоединен 1-й вход, номер провода к которому присоединен 2-й вход, это аппаратный вход и номер провода к которому присоединен выход. Это аппаратный выход.

Вся схема выглядит вот так  0x03, 0xC0, 0xC0, 0x06, 0xC0, 0x00, 0x01, 0x00, 0xF9, 0xFF, 0x00

Последний байт - это терминальный элемент с кодом 0x00, он обозначает конец схемы.

Логика работы схемы такова - инвертор генерирует импульсы благодаря обратной связи созданной соединением между входом и выходом. Эти импульсы через повторитель подаются на вход элемента И. Разрешающий сигнал подается от аппаратного входа на другой вход И. Таким образом меняя уровень на аппаратном входе мы управляем состоянием другого аппаратного выхода, на котором могут быть либо 0, либо импульсная последовательность.

Записывать мы будем с помощью гипертерминала с помощью команды M000B - что значит записывать память с адреса 0x000B.

После ввода каждого байта нажимаем Ентер и в терминале отображается следующий адрес и его значение, если нужно его изменить, то набираем его значение в виде двух символов, например 7F и далее Ентер. Если менять не нужно, просто жмем Ентер. Для завершения ввода вводим точку и жмем Ентер. Просмотреть введенное можно с помощью команды D.    D0000,001F - выдаст область памяти
от 0 до 1F. 

scr41.png.86bd60f5f5319f22063680b5b5882513.png

Вводить нужно все, начиная с самого начала, поскольку в начале конфигурация, о которой я расскажу в следующий раз.
 

Снял видео о работе ПЛК с нашей программой. На видео видно, что при изменении состояния микропереключателя, с которого берется разрешающий сигнал для элемента 2-И появляется или исчезает генерация на самой левой паре светодиодов(красный-зеленый). Красный светится когда на выходе 0, зеленый_ когда на выходе 1. В момент генерации из-за высокой частоты переключения они светятся оба и зеленый и красный, в момент отсутствия генерации светится только один.

 

0 Комментариев


Рекомендуемые комментарии

Комментариев нет

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Добавить комментарий...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...