スクリプトをコピーするには...
サンプルの右上に表示される
下記のアイコンを左クリックすると
スクリプトだけが別窓で開くので、
右クリックメニューの[すべて選択]→[コピー]をしてください。

スクリプトを貼り付けるには...
スクリプトの編集ウィンドウにあるメニューで[編集]→[張り付け]をしてください。

1.完成予定図
このページのスクリプトサンプルを使用した場合のビュワー動画です。
どのようなことが出来るのか、はじめに映像でご確認ください。
2.レイアウトを作成する
センサーと警報機、遮断機を図のように配置してください。
踏切への列車進入を検知させるセンサーは踏切から少し距離を置いて、
列車脱出を検知させるセンサーは踏切の近くに配置すると、
よりリアルな踏切の挙動になります。
なお、解説をわかりやすくするため、
レイアウト画面の左側を上り方面、右側を下り方面とします。
↓

踏切の警報機と遮断機には、固有の名前を設定します。
左図の警報機の名称には、「踏切1-警報機A」と入力してください。

↓

左図の遮断機の名称には、「踏切1-遮断機A」と入力してください。

↓

左図の警報機の名称には、「踏切1-警報機B」と入力してください。

↓

左図の遮断機の名称には、「踏切1-遮断機B」と入力してください。

3.スクリプトを記述する

下記の踏切スクリプトをコピーして貼り付けてください。
▼ 踏切スクリプト
01 | //変数を用意 |
02 | Var SIGN |
03 | Var LINE-1 |
04 | Var LINE-2 |
05 | Var LINE-3 |
06 | Var LINE-4 |
07 |
08 | //踏切を閉鎖 |
09 | BeginFunc IN |
10 | Var STATUS |
11 | GetCrossingSign STATUS |
12 | ifeq STATUS SIGN |
13 | SetCrossingSign 3 |
14 | else |
15 | if< STATUS 3 |
16 | xor SIGN 3 |
17 | SetCrossingSign SIGN |
18 | SetCrossingStatus 2 |
19 | endif |
20 | endif |
21 | EndFunc |
22 |
23 | //踏切を開放 |
24 | BeginFunc OUT |
25 | Var STATUS |
26 | GetCrossingSign STATUS |
27 | Var LINE-L |
28 | add LINE-L LINE-1 |
29 | add LINE-L LINE-3 |
30 | Var LINE-R |
31 | add LINE-R LINE-2 |
32 | add LINE-R LINE-4 |
33 | ifeq STATUS 3 |
34 | ifzero LINE-L |
35 | xor SIGN 3 |
36 | SetCrossingSign SIGN |
37 | endif |
38 | ifzero LINE-R |
39 | xor SIGN 3 |
40 | SetCrossingSign SIGN |
41 | endif |
42 | endif |
43 | ifeq STATUS 2 |
44 | ifzero LINE-L |
45 | set SIGN 0 |
46 | SetCrossingSign SIGN |
47 | SetCrossingStatus 1 |
48 | endif |
49 | endif |
50 | ifeq STATUS 1 |
51 | ifzero LINE-R |
52 | set SIGN 0 |
53 | SetCrossingSign SIGN |
54 | SetCrossingStatus 1 |
55 | endif |
56 | endif |
57 | EndFunc |

下記の踏切スクリプトをコピーして貼り付けてください。
▼ 踏切スクリプト
1 | //遮断機を下降 |
2 | BeginFunc IN |
3 | SetCrossingStatus 2 |
4 | EndFunc |
5 |
6 | //遮断機を上昇 |
7 | BeginFunc OUT |
8 | SetCrossingStatus 1 |
9 | EndFunc |

下記の踏切スクリプトをコピーして貼り付けてください。
▼ 踏切スクリプト
01 | //変数を用意 |
02 | Var SIGN |
03 |
04 | //踏切を閉鎖 |
05 | BeginFunc IN |
06 | Var STATUS |
07 | GetCrossingSign STATUS |
08 | ifeq STATUS SIGN |
09 | SetCrossingSign 3 |
10 | else |
11 | if< STATUS 3 |
12 | xor SIGN 3 |
13 | SetCrossingSign SIGN |
14 | SetCrossingStatus 2 |
15 | endif |
16 | endif |
17 | EndFunc |
18 |
19 | //踏切を開放 |
20 | BeginFunc OUT |
21 | Var STATUS |
22 | GetCrossingSign STATUS |
23 | Var LINE-L |
24 | add LINE-L 踏切1-警報機A.LINE-1 |
25 | add LINE-L 踏切1-警報機A.LINE-3 |
26 | Var LINE-R |
27 | add LINE-R 踏切1-警報機A.LINE-2 |
28 | add LINE-R 踏切1-警報機A.LINE-4 |
29 | ifeq STATUS 3 |
30 | ifzero LINE-L |
31 | xor SIGN 3 |
32 | SetCrossingSign SIGN |
33 | endif |
34 | ifzero LINE-R |
35 | xor SIGN 3 |
36 | SetCrossingSign SIGN |
37 | endif |
38 | endif |
39 | ifeq STATUS 1 |
40 | ifzero LINE-L |
41 | set SIGN 0 |
42 | SetCrossingSign SIGN |
43 | SetCrossingStatus 1 |
44 | endif |
45 | endif |
46 | ifeq STATUS 2 |
47 | ifzero LINE-R |
48 | set SIGN 0 |
49 | SetCrossingSign SIGN |
50 | SetCrossingStatus 1 |
51 | endif |
52 | endif |
53 | EndFunc |

下記の踏切スクリプトをコピーして貼り付けてください。
▼ 踏切スクリプト
1 | //遮断機を下降 |
2 | BeginFunc IN |
3 | SetCrossingStatus 2 |
4 | EndFunc |
5 |
6 | //遮断機を上昇 |
7 | BeginFunc OUT |
8 | SetCrossingStatus 1 |
9 | EndFunc |

図の部分に配置したセンサーへスクリプトを記述します。
下記のセンサースクリプトをコピーして貼り付けてください。
▼ センサースクリプト
01 | //列車の先頭を検知 |
02 | SetSensorMode 0 |
03 |
04 | //センサーイベント |
05 | Var ctrl-crs |
06 | SetEventSensor CTRL-CRS ctrl-crs |
07 |
08 | //踏切の閉鎖制御 |
09 | BeginFunc CTRL-CRS |
10 | set 踏切1-警報機A.LINE-1 1 |
11 | set 踏切1-警報機A.SIGN 1 |
12 | set 踏切1-警報機B.SIGN 2 |
13 | call 踏切1-警報機A IN |
14 | call 踏切1-警報機B IN |
15 | ifeq 踏切1-警報機A.SIGN 2 |
16 | call 踏切1-遮断機A IN |
17 | call 踏切1-遮断機B IN |
18 | endif |
19 | EndFunc |

図の部分に配置したセンサーへスクリプトを記述します。
下記のセンサースクリプトをコピーして貼り付けてください。
▼ センサースクリプト
01 | //列車の先頭を検知 |
02 | SetSensorMode 1 |
03 |
04 | //センサーイベント |
05 | Var ctrl-crs |
06 | SetEventSensor CTRL-CRS ctrl-crs |
07 |
08 | //踏切の開放制御 |
09 | BeginFunc CTRL-CRS |
10 | set 踏切1-警報機A.LINE-1 0 |
11 | set 踏切1-警報機A.SIGN 2 |
12 | set 踏切1-警報機B.SIGN 1 |
13 | call 踏切1-警報機A OUT |
14 | call 踏切1-警報機B OUT |
15 | ifeq 踏切1-警報機A.SIGN 0 |
16 | call 踏切1-遮断機A OUT |
17 | call 踏切1-遮断機B OUT |
18 | endif |
19 | EndFunc |

図の部分に配置したセンサーへスクリプトを記述します。
下記のセンサースクリプトをコピーして貼り付けてください。
▼ センサースクリプト
01 | //列車の先頭を検知 |
02 | SetSensorMode 0 |
03 |
04 | //センサーイベント |
05 | Var ctrl-crs |
06 | SetEventSensor CTRL-CRS ctrl-crs |
07 |
08 | //踏切の閉鎖制御 |
09 | BeginFunc CTRL-CRS |
10 | set 踏切1-警報機A.LINE-2 1 |
11 | set 踏切1-警報機A.SIGN 2 |
12 | set 踏切1-警報機B.SIGN 1 |
13 | call 踏切1-警報機A IN |
14 | call 踏切1-警報機B IN |
15 | ifeq 踏切1-警報機A.SIGN 1 |
16 | call 踏切1-遮断機A IN |
17 | call 踏切1-遮断機B IN |
18 | endif |
19 | EndFunc |

図の部分に配置したセンサーへスクリプトを記述します。
下記のセンサースクリプトをコピーして貼り付けてください。
▼ センサースクリプト
01 | //列車の先頭を検知 |
02 | SetSensorMode 1 |
03 |
04 | //センサーイベント |
05 | Var ctrl-crs |
06 | SetEventSensor CTRL-CRS ctrl-crs |
07 |
08 | //踏切の開放制御 |
09 | BeginFunc CTRL-CRS |
10 | set 踏切1-警報機A.LINE-2 0 |
11 | set 踏切1-警報機A.SIGN 1 |
12 | set 踏切1-警報機B.SIGN 2 |
13 | call 踏切1-警報機A OUT |
14 | call 踏切1-警報機B OUT |
15 | ifeq 踏切1-警報機A.SIGN 0 |
16 | call 踏切1-遮断機A OUT |
17 | call 踏切1-遮断機B OUT |
18 | endif |
19 | EndFunc |

図の部分に配置したセンサーへスクリプトを記述します。
下記のセンサースクリプトをコピーして貼り付けてください。
▼ センサースクリプト
01 | //列車の先頭を検知 |
02 | SetSensorMode 0 |
03 |
04 | //センサーイベント |
05 | Var ctrl-crs |
06 | SetEventSensor CTRL-CRS ctrl-crs |
07 |
08 | //踏切の閉鎖制御 |
09 | BeginFunc CTRL-CRS |
10 | set 踏切1-警報機A.LINE-3 1 |
11 | set 踏切1-警報機A.SIGN 1 |
12 | set 踏切1-警報機B.SIGN 2 |
13 | call 踏切1-警報機A IN |
14 | call 踏切1-警報機B IN |
15 | ifeq 踏切1-警報機A.SIGN 2 |
16 | call 踏切1-遮断機A IN |
17 | call 踏切1-遮断機B IN |
18 | endif |
19 | EndFunc |

図の部分に配置したセンサーへスクリプトを記述します。
下記のセンサースクリプトをコピーして貼り付けてください。
▼ センサースクリプト
01 | //列車の先頭を検知 |
02 | SetSensorMode 1 |
03 |
04 | //センサーイベント |
05 | Var ctrl-crs |
06 | SetEventSensor CTRL-CRS ctrl-crs |
07 |
08 | //踏切の開放制御 |
09 | BeginFunc CTRL-CRS |
10 | set 踏切1-警報機A.LINE-3 0 |
11 | set 踏切1-警報機A.SIGN 2 |
12 | set 踏切1-警報機B.SIGN 1 |
13 | call 踏切1-警報機A OUT |
14 | call 踏切1-警報機B OUT |
15 | ifeq 踏切1-警報機A.SIGN 0 |
16 | call 踏切1-遮断機A OUT |
17 | call 踏切1-遮断機B OUT |
18 | endif |
19 | EndFunc |

図の部分に配置したセンサーへスクリプトを記述します。
下記のセンサースクリプトをコピーして貼り付けてください。
▼ センサースクリプト
01 | //列車の先頭を検知 |
02 | SetSensorMode 0 |
03 |
04 | //センサーイベント |
05 | Var ctrl-crs |
06 | SetEventSensor CTRL-CRS ctrl-crs |
07 |
08 | //踏切の閉鎖制御 |
09 | BeginFunc CTRL-CRS |
10 | set 踏切1-警報機A.LINE-4 1 |
11 | set 踏切1-警報機A.SIGN 2 |
12 | set 踏切1-警報機B.SIGN 1 |
13 | call 踏切1-警報機A IN |
14 | call 踏切1-警報機B IN |
15 | ifeq 踏切1-警報機A.SIGN 1 |
16 | call 踏切1-遮断機A IN |
17 | call 踏切1-遮断機B IN |
18 | endif |
19 | EndFunc |

図の部分に配置したセンサーへスクリプトを記述します。
下記のセンサースクリプトをコピーして貼り付けてください。
▼ センサースクリプト
01 | //列車の先頭を検知 |
02 | SetSensorMode 1 |
03 |
04 | //センサーイベント |
05 | Var ctrl-crs |
06 | SetEventSensor CTRL-CRS ctrl-crs |
07 |
08 | //踏切の開放制御 |
09 | BeginFunc CTRL-CRS |
10 | set 踏切1-警報機A.LINE-4 0 |
11 | set 踏切1-警報機A.SIGN 1 |
12 | set 踏切1-警報機B.SIGN 2 |
13 | call 踏切1-警報機A OUT |
14 | call 踏切1-警報機B OUT |
15 | ifeq 踏切1-警報機A.SIGN 0 |
16 | call 踏切1-遮断機A OUT |
17 | call 踏切1-遮断機B OUT |
18 | endif |
19 | EndFunc |
4.ビュワーで動作確認する

ビュワーを起動して、列車に踏切を通過させて動作を確認してください。
もし、ビュワーが起動できない場合や、
ご自身のレイアウトに合わせて改造したい場合など、
ご不明な点やご質問がありましたら、下記までお気軽にご連絡ください。