Урок 1. Линия и лампы
В этом уроке на холсте появится маленький цех: источник выдаёт детали, пять станков по очереди их обрабатывают, сток собирает готовое. Над каждым станком — лампа: горит, пока станок работает. Выпуск идёт от генератора, одна деталь в секунду, и линия сразу оживает.
1.1. Идея: цех на одной площадке
Весь цех стоит на площадке — прямоугольнике, который собирает ноги всех деталей на себе и выводит их на свой край. Ноги станков и ламп не надо искать среди лент: все они по периметру площадки, у каждой подписано, чья она (m1.BUSY, D1.In), а метка висит снаружи. Внутри — только механика и пульт, снаружи — электроника.
1.2. Идея: сбалансированная линия
Каждый станок обрабатывает деталь ровно за 1 секунду. Источник выдаёт деталь раз в секунду. Значит, каждый станок успевает ровно столько, сколько ему подают, — ни больше, ни меньше. Такую линию называют сбалансированной: мощности всех участков равны спросу. Кажется, что лучше и не придумать: никто не простаивает, никто не завален.
Пока станки работают как часы, так и есть. В уроке 4 мы дадим им «кубик» — и увидим, что из этого выйдет.
1.3. Идея: лампа — нога BUSY
У станка три ноги сверху: START, BUSY, READY. BUSY = 1, пока станок обрабатывает деталь. Лампа просто подключена к BUSY через метку: B1 … B5. Горит — работает, погасла — ждёт детали.
Генератор 1 Гц выдаёт CK. Источник выпускает деталь по фронту RELEASE — значит, RELEASE = CK: каждая секунда — новая деталь.
1.4. Сборка
Микросхем в этом уроке нет. Вставь урок через Cmd+I (текст — в конце урока). Появятся:
- площадка с цехом: источник → лента → станок 1 → … → станок 5 → длинная быстрая лента → сток;
- пять ламп над станками;
- генератор 1 Гц и питание VCC, GND — снаружи площадки.
Последняя лента длиннее остальных и едет вдвое быстрее: в уроке 2 на ней встанет ИК-пара, и детали должны проходить мимо неё с зазором.
1.5. Проверка
- Включи питание.
- Каждую секунду из источника выходит деталь и едет к первому станку.
- Лампы загораются по очереди — «бегущая волна» слева направо, и дальше горят ровно: каждый станок всё время занят.
- В стоке растёт число готовых деталей.
| Что смотришь | Что видно |
|---|---|
| источник | число выпущенных растёт раз в секунду |
| лампы D1…D5 | зажглись по очереди и горят |
| сток | первая деталь — примерно через 13 секунд |
Щёлкни по кубику на одном станке (два раза — до оранжевого): его лампа начнёт мигать, а лампы следующих станков — гаснуть. Это и есть тема урока 4.
Вставка урока 1 (Cmd+I)
# Lesson 1 — the line and its lamps. A base with the factory: source -> 5 machines -> sink.# Each machine takes 1 s per part. Release comes straight from a 1 Hz clock: one part a second.# The lamps on the base light while their machine is working (BUSY).power(VCC)ground(GND)base B{w=860, h=400, hideUnused=true}msource src{color=red}(RELEASE=CK)at(src, B, 40, 185)mbelt b0{len=60}(RUN=VCC)mount(b0, src.out)mmachine m1{time=1, cap=3}(BUSY=B1)mount(m1.in, b0.end)mbelt b1{len=60}(RUN=VCC)mount(b1, m1.out)mmachine m2{time=1, cap=3}(BUSY=B2)mount(m2.in, b1.end)mbelt b2{len=60}(RUN=VCC)mount(b2, m2.out)mmachine m3{time=1, cap=3}(BUSY=B3)mount(m3.in, b2.end)mbelt b3{len=60}(RUN=VCC)mount(b3, m3.out)mmachine m4{time=1, cap=3}(BUSY=B4)mount(m4.in, b3.end)mbelt b4{len=60}(RUN=VCC)mount(b4, m4.out)mmachine m5{time=1, cap=3}(BUSY=B5)mount(m5.in, b4.end)# the last belt is longer and fast (160): parts reach the sink with a wide gap — the IR pair of lesson 2 counts each onembelt b5{len=120, spd=160}(RUN=VCC)mount(b5, m5.out)msink skmount(sk.in, b5.end)led d1(B1)at(d1, B, 150, 110)led d2(B2)at(d2, B, 270, 110)led d3(B3)at(d3, B, 390, 110)led d4(B4)at(d4, B, 510, 110)led d5(B5)at(d5, B, 630, 110)clock{rt=1}(CK)Не получается? Что-то не работает →