Урок 2. Два табло

Чтобы понять, хорошо ли работает цех, его надо мерить. В этом уроке на площадке появятся два табло: слева — сколько деталей выпущено в линию, справа — сколько сделано (дошло до стока). Каждое табло считает пара микросхем CD4029, а кнопка R обнуляет оба.


2.1. Идея: что считать

Два числа описывают цех целиком:

  • выпущено — сколько деталей вошло в линию;
  • сделано — сколько вышло готовыми.

Их разница — незавершёнка: детали, которые сейчас внутри цеха — на лентах, в буферах станков и в работе. Пока линия здорова, незавершёнка держится на одном уровне: сколько вошло, столько и вышло.

2.2. Идея: откуда берутся импульсы

«Выпущено» считает сам источник: на каждую деталь, которая вышла из него, нога OUT даёт короткий импульс. Почему не луч у источника? Когда первый станок завален, детали стоят на первой ленте вплотную друг к другу, и луч между ними не открывается — две детали слились бы в одну.

«Сделано» считает ИК-пара поперёк последней ленты — так считают детали и на настоящих конвейерах. Излучатель светит всегда (In = VCC), приёмник даёт 1, пока луч цел. Деталь въехала в луч — 0, проехала — снова 1. Этот фронт 0 → 1 и есть «+1». Последняя лента едет быстро (160 точек в секунду), поэтому даже две детали подряд идут по ней с зазором, и луч успевает открыться между ними.

излучательприёмник160 точек/сOUTMфронт 0 → 1: +1деталь в луче
ИК-пара поперёк последней ленты: деталь закрывает луч — приёмник даёт 0, проехала — снова 1. Этот фронт и считает счётчик «сделано».

2.3. Идея: CD4029 — счётчик на 4 бита

CD4029 по фронту ноги CLOCK прибавляет 1 (или вычитает). Его ноги:

НогаЧто делаетУ нас
CLOCKфронт 0 → 1 — следующий счётOUTR / OUTM
UD1 — вверх, 0 — внизVCC (вверх)
BD1 — двоичный (0…15), 0 — десятичный (0…9)VCC (двоичный)
PE1 — записать J4…J1 сразу, без тактаRST (кнопка R)
J4…J1что записать по PEGND (0000)
CI0 — разрешено считатьсм. ниже
CO0 — «я на 15 и сейчас перейду через 0»см. ниже
Q4…Q1счёт: Q1 — младший битR3…R0 / M3…M0

Кнопка R подаёт PE = 1 на все четыре счётчика: в каждый записывается J = 0000, табло встают на 0.

2.4. Идея: два CD4029 — восемь бит

Один CD4029 досчитает только до 15, а в смене будет 128 деталей. Ставим два: младший считает Q1…Q4, старший — следующие четыре бита. Старший должен прибавлять 1 только тогда, когда младший переходит с 15 на 0. Ровно это и сообщает нога CO младшего: она 0, пока младший стоит на 15. Её и подаём на CI старшего:

  • CI младшего = 0 (GND) — младший считает всегда;
  • CI старшего = CO младшего — старший считает только на переходе 15 → 0.
Сколько деталейСтарший Q4…Q1Младший Q4…Q1CO мл.
14000011101
15000011110
16000100001
17000100011

Оба CD4029 тактуются одним сигналом и переключаются одновременно — такой счётчик называют синхронным. Восемь бит — числа от 0 до 255.

CD4029младшийCLOCKCIPEBDUDQ4…Q1COR0…R3CD4029старшийCLOCKCIPEBDUDQ4…Q1COR4…R7OUTRCO → CIGNDRSTBD = UD = 1: двоичный счёт вверх; R — это PE: записать J = 0000
Два CD4029 — восемь бит. Оба тактуются одним импульсом, но старший считает только тогда, когда младший переходит с 15 на 0: его CI — это CO младшего.

2.5. Идея: табло читает шину

Выходы счётчиков — метки R0…R7 («выпущено») и M0…M7 («сделано»). Табло проводов не требует: в его настройке указана шина — R или M, и оно само читает метки с этим именем и номерами 0…7 и показывает число в десятичном виде.

2.6. Сборка

  1. Импортируй микросхемы набора: файл dice-chips.json (кнопка импорта в библиотеке). Появится папка «Dice»: CD4029, CD4069, CD4081.
  2. Вставь урок через Cmd+I поверх урока 1 (текст — в конце урока). Появятся: - на площадке — ИК-пара поперёк последней ленты, кнопка R, табло «выпущено» (шина R) и «сделано» (шина M); - снаружи — четыре CD4029; - нога OUT источника получит метку OUTR.

2.7. Проверка

  1. Включи питание и нажми R — оба табло 0.
  2. Левое табло растёт раз в секунду, правое начинает расти примерно через 13 секунд — это путь детали по линии.
  3. Дальше оба растут одинаково, правое отстаёт примерно на 13.
Что смотришьЧто видно
табло слева (R)= числу на источнике
табло справа (M)= числу в стоке или на 1 больше
разница таблооколо 13 и не меняется

Правое табло может быть на 1 больше стока: деталь уже проехала луч, но ещё не доехала. Если левое табло меньше числа на источнике, значит, R нажали, когда первые детали уже вышли. В уроке 3 появится ПУСК, и порядок станет правильным: питание → R → ПУСК.

Вставка урока 2 (Cmd+I)

# Lesson 2 — two counters. "Released": the source gives a short OUT pulse for every part it lets out.# "Made": an IR pair across the last belt — a part passes, the beam is whole again (0 -> 1), the counter adds one.# Each counter is two CD4029 in binary mode (BD = 1): 8 bits, 0...255. R — reset (PE loads J = 0000).# Insert on top of lesson 1 (needs the chip file dice-chips.json).reconnect(src.OUT = OUTR)irtx txM{channel=1, ang=90}(In=VCC)at(txM, B, 710, 120)irrx rxM{channel=1, ang=90}(Out=OUTM)at(rxM, B, 690, 260)button rst{label="R"}(RST)at(rst, B, 140, 290)display shR{busSource=R}at(shR, B, 300, 290)display shM{busSource=M}at(shM, B, 460, 290)"TI CD4029B"(CLOCK=OUTR, UD=VCC, BD=VCC, PE=RST, CI=GND, J1=GND, J2=GND, J3=GND, J4=GND, Q1=R0, Q2=R1, Q3=R2, Q4=R3, CO=COR)"TI CD4029B"(CLOCK=OUTR, UD=VCC, BD=VCC, PE=RST, CI=COR, J1=GND, J2=GND, J3=GND, J4=GND, Q1=R4, Q2=R5, Q3=R6, Q4=R7)"TI CD4029B"(CLOCK=OUTM, UD=VCC, BD=VCC, PE=RST, CI=GND, J1=GND, J2=GND, J3=GND, J4=GND, Q1=M0, Q2=M1, Q3=M2, Q4=M3, CO=COM)"TI CD4029B"(CLOCK=OUTM, UD=VCC, BD=VCC, PE=RST, CI=COM, J1=GND, J2=GND, J3=GND, J4=GND, Q1=M4, Q2=M5, Q3=M6, Q4=M7)

Не получается? Что-то не работает →