Det ‘mekaniske’ sprog

GOPA udmærker sig ved at bruge et simpelt “Mekanisk” programmeringssprog.

Programmerne laves ved, at man sammenkobler nogle mekaniske objekter.
Der er tale om fjederbelastede stifter og “faldende mursten”.

Sekvenseren
Et af de centrale objekter hedder sekvenseren, det er en lodret skinne,
som en tung rød klods (murstenen) kan glide ned ad ved hjælp af tyngdekraften:

meka1

På grund af tyngdekraften ville den røde klods glide ned til bunden, hvis vi
ikke havde monteret en fjederbelastet stift i venstre side, et såkaldt “input
objekt”:

meka2

Den røde mursten hviler på input-objektets stift, og kan derfor ikke glide ned.
Input-objektet udtrykker en ydre betingelse, f.ex en indgang hos en relæbox.
På højre side af sekvenseren kan man montere de såkaldte “output objekter”,
disse udfører en aktivitet, når den røde mursten trykker den fjederbelastede
stift ind i objektet. Det kan f.ex. være at tænde for en udgang i en relæbox:

meka3

En 45 graders afslibning på output-objektets stift, vil få den faldende mursten
til at trykke stiften mod højre, d.v.s. ind i objektet. Når dette sker, vil den
ydre aktivitet, som output-objektet udtrykker, finde sted – f.ex. start af en motor.

meka4

Eksempel: En sekvenser i arbejde
Trin 1: Murstenen hviler på input-objektet for startknap:

meka5

Trin 2: Der trykkes på den ydre startknap, hvilket får det
øverste input-objekt til at trække stiften mod venstre:

meka6

Trin 3: Murstenen er ikke længere understøttet af stiften, og glider derfor ned,
og lander på det næste input objekt. Derved trykker murstenen stiften ind i
output-objektet, hvilket får motoren til at starte:

meka7

Trin 4: Der trykkes på den ydre stopknap, hvilket får det nederste input-objekt
til at trække stiften mod venstre:

meka8

Murstenen er ikke længere understøttet og vil falde videre. Derved hopper
output-objektets fjederbelastede stift ud igen, hvilket får motoren til at stoppe:

meka9

Generelt for sekvenseren er at betingelser (input) monteres på venstre side,
mens aktiviteter (output) monteres på højre side.
Input-objekter vil trække stiften ind i objektet når den ydre betingelse er opfyldt.
Output-objekter vil selv sætte en ydre aktivitet i gang, når man trykker stiften ind
i objektet.

Mekaniske gates
Når flere betingelser skal være opfyldt på samme tid, har vi “gates” som modsvarer
de AND og OR gates, som kendes fra andre sprog:
AND gaten: De fjederbelastede stifter støder mod pladen fra venstre. Pladen, og
dermed udgangsstiften vil først bevæge sig mod venstre, når begge stifter trækkes
mod venstre:

meka10

OR gaten: De fjederbelastede stifter er udformet som “kroge”, der griber fat i pladen
fra bagsiden. Her vil pladen, og dermed udgangsstiften bevæge sig mod venstre, hvis
blot en af stifterne bevæges mod venstre:

meka11

Sidste eksempel viser, hvordan man håndterer analoge data. Princippet er det samme,
betingelser til venstre, aktivitet til højre:

meka12

Denne beskrivelse er kun en smagsprøve. Ved at højreklikke på linien herunder og
vælge “gem som” (save as), kan man downloade en selvudpakkende .doc fil, hvor alle
objekterne beskrives.

Download KJSPEC (36.244 bytes)