Jump to content
  • entries
    26
  • comments
    214
  • views
    47068

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

mazzi

86 views

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

Поскольку контроллер работает как цифровая схема, то эту схему нужно записать в контроллер с помощью простых манипуляций.
Для начала рисуем схему, которая будет выполняться в контроллере. Я обычно рисую на бумаге или в программе 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 Comments


Recommended Comments

There are no comments to display.

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Add a comment...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...