Урок 2. Прибор «простой»

Узкое место — это станок, который никогда не стоит: перед ним всегда очередь. Все остальные время от времени ждут. Значит, чтобы найти узкое место, надо мерить, сколько каждый станок простаивает. В этом уроке соберём такой прибор: кнопка S переводит «щуп» со станка на станок, а табло I показывает, сколько секунд выбранный станок стоял без работы.

Схема большая, поэтому разберём её по шагам: кто выбран → занят ли он → считаем секунды.


2.1. Шаг 1: кто выбран — CD4017

Нам нужно пять сигналов «выбран станок 1», …, «выбран станок 5», из которых в каждый момент горит ровно один. Это умеет CD4017: у него десять выходов O0…O9, и каждый фронт CLOCK переводит «единичку» на следующий выход.

  • CLOCK = кнопка S (SEL): нажал — щуп перешёл на следующий станок;
  • O0…O4 — метки P1…P5, они же зажигают лампы-щупы над станками;
  • нам нужно всего пять положений, поэтому O5 (P6) сразу сбрасывает счётчик: как только единичка дошла до O5, нога RESET возвращает её на O0. Щуп ходит по кругу 1 → 2 → 3 → 4 → 5 → 1;
  • кнопка R тоже должна возвращать щуп на станок 1: SRST = P6 ИЛИ R — первый вентиль ИЛИ микросхемы CD4071.
SP1P2P3P4P5каждое нажатие S переводит единичку на следующий выход; после P5 — снова P1 (O5 = сброс)
CD4017 — «бегущая единичка»: из пяти выходов P1…P5 всегда горит один. Он и есть выбранный станок.

2.2. Шаг 2: занят ли выбранный — мультиплексор из И и ИЛИ

У каждого станка есть нога BUSY: B1…B5. Нам нужен один сигнал — BUSY того станка, на котором щуп. Это называется мультиплексор: из пяти входов на выход проходит один, выбранный.

Собираем его из вентилей:

  • A1 = P1 И B1, …, A5 = P5 И B5 — пять вентилей И (CD4081: четыре в первой микросхеме, пятый — во второй). Только у выбранного станка Pk = 1, поэтому только его Ak может быть 1 — и он равен его BUSY;
  • SB = A1 ИЛИ A2 ИЛИ A3 ИЛИ A4 ИЛИ A5 — CD4072, два вентиля ИЛИ на 4 входа: первый собирает A1…A4 в T4, второй — T4 и A5.

SB = 1 — выбранный станок работает, SB = 0 — стоит.

P1B1CD4081A1P2B2A2P3B3A3P4B4A4P5B5A5OR4CD4072T4SBSB = 1 — выбранный станок занят, SB = 0 — стоит
Мультиплексор из вентилей: у выбранного станка Pk = 1, и только его Ak может быть 1. ИЛИ собирает пять Ak в один сигнал SB.

2.3. Шаг 3: считаем секунды простоя — CD4029 с разрешением

Табло — снова два CD4029, как в FL-01. Тактирует их CKR — такт 1 Гц, пока включён ПУСК (он уже есть в FL-01: CKR = CK И RUN). Но считать надо не каждую секунду, а только когда станок стоит. Для этого у CD4029 есть нога разрешения CI: счёт идёт, только если CI = 0. Подаём на неё SB:

  • станок работает (SB = 1) — фронт CKR пропускается, число стоит;
  • станок стоит (SB = 0) — фронт CKR прибавляет секунду.

Так табло считает точно по фронтам такта, без лишних импульсов в те моменты, когда станок освобождается посреди секунды.

CKRSBтабло I0123456789CI = SB: фронт CKR прибавляет секунду только при SB = 0 — станок стоит
Счётчик с разрешением: тактирует его CKR (1 Гц, пока ПУСК), а нога CI пропускает фронт, только пока выбранный станок стоит.

2.4. Шаг 4: сброс прибора

Табло I нужно обнулять в двух случаях: по R (новая смена) и при переходе щупа на другой станок — иначе к секундам одного станка прибавятся секунды другого. Поэтому вход загрузки PE счётчиков — это MRST = R ИЛИ S, второй вентиль ИЛИ той же CD4071.

2.5. Сборка

  1. Импортируй микросхемы набора: файл flow-chips.json. В нём всё из FL-01 и ещё CD4017, CD4071, CD4072, CD4013, CD4019. Если редактор спросит про одинаковые микросхемы — они те же самые, можно оставить свои.
  2. Вставь урок через Cmd+I поверх FL-01 с Херби (текст — в конце урока). Появятся:
    • на площадке — кнопка S, пять ламп-щупов над станками, табло I «простой, с»;
    • снаружи — CD4017, CD4071, два CD4081, CD4072 и два CD4029.

2.6. Проверка

  1. Питание выкл и вкл → R → ПУСК. Горит щуп над станком 1, табло I растёт.
  2. Нажимай S — щуп переходит на следующий станок, табло I начинает с 0.
  3. Постой на каждом станке секунд 20.
Щуп на станкеТабло I через 20 секунд
1, 2около 10: стоят, пока Херби не заберёт деталь
3 — Херби0: работает без перерыва
4, 5около 10: ждут деталь от Херби

Узкое место — станок с простоем 0. Его нашёл прибор, а не глаз.

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

# Lesson 2 — the idle meter. Insert on top of the finished FL-01 «The Dice Game» (needs the chip file flow-chips.json).# Button S steps the probe from machine to machine (CD4017: one lit output O0…O4; O5 jumps back to O0; R also resets).# The probe lamps P1…P5 show which machine is measured. SB = the probed machine is busy: Pk · Bk for each machine, then OR.# The meter counts seconds while the probed machine stands: clock CKR (= CK · RUN of FL-01), enable CI = SB (counts at SB = 0).# MRST = R OR S: pressing S also clears the meter — it starts from 0 on the newly probed machine.button sel{label="S"}(SEL)at(sel, B, 760, 290)led p1(P1)at(p1, B, 150, 60)led p2(P2)at(p2, B, 270, 60)led p3(P3)at(p3, B, 390, 60)led p4(P4)at(p4, B, 510, 60)led p5(P5)at(p5, B, 630, 60)display shI{busSource=I}at(shI, B, 620, 290)"TI CD4071B"(A=P6, B=RST, J=SRST, C=SEL, D=RST, K=MRST, E=GND, F=GND, G=GND, H=GND)"TI CD4017B"(CLOCK=SEL, INH=GND, RESET=SRST, O0=P1, O1=P2, O2=P3, O3=P4, O4=P5, O5=P6)"TI CD4081B"(A=P1, B=B1, J=A1, C=P2, D=B2, K=A2, E=P3, F=B3, L=A3, G=P4, H=B4, M=A4)"TI CD4081B"(A=P5, B=B5, J=A5, C=GND, D=GND, E=GND, F=GND, G=GND, H=GND)"TI CD4072B"(A=A1, B=A2, C=A3, D=A4, J=T4, E=T4, F=A5, G=GND, H=GND, K=SB)"TI CD4029B"(CLOCK=CKR, UD=VCC, BD=VCC, PE=MRST, CI=SB, J1=GND, J2=GND, J3=GND, J4=GND, Q1=I0, Q2=I1, Q3=I2, Q4=I3, CO=COI)"TI CD4029B"(CLOCK=CKR, UD=VCC, BD=VCC, PE=MRST, CI=COI, J1=GND, J2=GND, J3=GND, J4=GND, Q1=I4, Q2=I5, Q3=I6, Q4=I7)

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