Урок 2. Верёвка
Буфер мы теперь видим. Осталось им управлять: выпускать деталь, только когда перед Херби становится мало работы. В «Цели» Алекс на походе поставил Херби в голову колонны, чтобы никто не убегал вперёд. Но станок в начало линии не переставишь. Поэтому позже, в книге «Гонка» (1986), Голдратт предложил верёвку: первый в колонне привязан к Херби и не может уйти дальше, чем пускает верёвка. У нас верёвка — провод от счётчика буфера к источнику.
2.1. Идея: выпускать, пока буфер меньше цели
На пульте появятся четыре тумблера — цель буфера в двоичном виде: G3 = 8, G2 = 4, G1 = 2, G0 = 1. Включил G2 — цель 4. Правило верёвки:
- буфер меньше цели — источник выпускает деталь, как раньше;
- буфер дошёл до цели — источник ждёт, такты выпуска пропускаются.
Так перед Херби никогда не будет больше деталей, чем цель.
2.2. Идея: сравнение — CD4585
CD4585 сравнивает два четырёхбитных числа A и B и зажигает один из трёх выходов: LT (A < B), EQ (A = B) или GT (A > B). Буфер у нас восьмибитный, а цель — четырёхбитная, поэтому сравнителей два, каскадом:
- младший сравнивает младшие половины:
A0…A3 = Q0…Q3,B0…B3 = G0…G3; входы каскадаEQIN = 1,LTIN = 0,GTIN = 0— «до меня числа равны»; - старший сравнивает старшие половины:
A0…A3 = Q4…Q7,B0…B3 = 0000— у цели старших битов нет; входы каскада — выходы младшего. Если старшие половины равны, старший передаёт ответ младшего; - выход старшего
LT— меткаLOW: «буфер меньше цели».
2.3. Формула
| ROPE | LOW | ROK — можно выпускать |
|---|---|---|
| 0 | — | 1 — верёвка выключена |
| 1 | 1 | 1 — буфер меньше цели |
| 1 | 0 | 0 — буфер полон, ждём |
NROPE = НЕ ROPE— свободный инвертор CD4069 из FL-01 (входC, выходI);ROK = LOW ИЛИ NROPE— свободный вентиль CD4071 из FL-02 (E,F→L);RELR = RELS И ROK— свободный вентиль второй CD4081 из FL-02 (C,D→K);- источник слушает
RELRвместоRELS.
Тумблер ROPE выключен — всё работает как в FL-02, в том числе SLOW: выпуск каждую секунду или в ритме Херби.
2.4. Сборка
Вставь урок через Cmd+I поверх урока 1. Появятся:
- на площадке, в верхнем ряду — тумблер ROPE и четыре тумблера цели с подписями 8, 4, 2, 1;
- снаружи — два CD4585;
- свободные вентили FL-01 и FL-02 получат метки: CD4069 (
C→ROPE,I→NROPE), CD4071 (E→LOW,F→NROPE,L→ROK), вторая CD4081 (C→RELS,D→ROK,K→RELR); - нога
RELEASEисточника перецепится сRELSнаRELR.
2.5. Проверка
Херби — 2 секунды, SLOW выключен. Каждая смена: питание выкл и вкл → R → ПУСК, смотри 200 секунд.
| Смена | Буфер | Сделано к 200 с |
|---|---|---|
| ROPE выкл | растёт до 18 | около 94 |
| ROPE вкл, цель 4 (G2) | не больше 4 | около 94 |
| ROPE вкл, цель 1 (G0) | 0 или 1 | около 24 |
С целью 4 цех делает столько же, сколько без верёвки, а деталей внутри держит втрое меньше.
С целью 1 Херби почти всё время стоит — прибор простоя FL-02 со щупом на станке 3 (после R нажми S два раза) покажет около 150 секунд из 200. Почему: буфер считает все детали от источника до Херби, а единственной детали ещё надо проехать станки 1 и 2. Пока она в пути, Херби нечего делать. Цель должна покрывать путь до Херби. Какой запас нужен, когда Херби работает неровно, — в следующем уроке.
Вставка урока 2 (Cmd+I)
# Lesson 2 — the rope. Insert on top of lesson 1.# Goal G = four switches (G3 = 8, G2 = 4, G1 = 2, G0 = 1). Two CD4585 compare the buffer Q (8 bits) with G (4 bits, high nibble = 0):# LOW = Q < G. The source may release only while LOW: RELR = RELS · (LOW + NOT ROPE). ROPE off — FL-02 works as before.# NROPE: a free inverter of the FL-01 CD4069 (C → I). ROK = LOW OR NROPE: a free gate of the FL-02 CD4071 (E, F → L).# RELR = RELS AND ROK: a free gate of the second FL-02 CD4081 (C, D → K). The source's RELEASE: RELS → RELR.text tR{text="rope"}at(tR, B, 40, 8)input rope(ROPE)at(rope, B, 40, 20)text t8{text="8"}at(t8, B, 130, 8)input g3(G3)at(g3, B, 130, 20)text t4{text="4"}at(t4, B, 190, 8)input g2(G2)at(g2, B, 190, 20)text t2{text="2"}at(t2, B, 250, 8)input g1(G1)at(g1, B, 250, 20)text t1{text="1"}at(t1, B, 310, 8)input g0(G0)at(g0, B, 310, 20)text tG{text="<- buffer goal: rope on = release only while buffer < goal"}at(tG, B, 370, 24)"TI CD4585B"(A0=Q0, A1=Q1, A2=Q2, A3=Q3, B0=G0, B1=G1, B2=G2, B3=G3, EQIN=VCC, LTIN=GND, GTIN=GND, LT=QLT, EQ=QEQ, GT=QGT)"TI CD4585B"(A0=Q4, A1=Q5, A2=Q6, A3=Q7, B0=GND, B1=GND, B2=GND, B3=GND, LTIN=QLT, EQIN=QEQ, GTIN=QGT, LT=LOW)reconnect(NDONE.C = ROPE)reconnect(NDONE.I = NROPE)reconnect(SRST.E = LOW)reconnect(SRST.F = NROPE)reconnect(SRST.L = ROK)reconnect(A5.C = RELS)reconnect(A5.D = ROK)reconnect(A5.K = RELR)reconnect(src.RELEASE = RELR)Не получается? Что-то не работает →