-
Notifications
You must be signed in to change notification settings - Fork 331
/
LocoIO.shtml
272 lines (225 loc) · 11.1 KB
/
LocoIO.shtml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="en">
<head>
<meta name="generator" content=
"HTML Tidy for Mac OS X (vers 31 October 2006 - Apple Inc. build 15.17), see www.w3.org">
<title>JMRI LocoIO Programmer Tools (deprecated)</title>
<!-- Style -->
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<link rel="stylesheet" type="text/css" href="/css/default.css" media="screen">
<link rel="stylesheet" type="text/css" href="/css/print.css" media="print">
<link rel="icon" href="/images/jmri.ico" type="image/png">
<link rel="home" title="Home" href="/">
<!-- /Style -->
</head>
<body>
<!--#include virtual="/Header" -->
<div id="mBody">
<!--#include virtual="Sidebar.shtml" -->
<div id="mainContent">
<h1>JMRI LocoIO Programmer Tools (deprecated)</h1>
<p><strong>The standalone LocoIO Programmer tool is no longer
supported. The preferred method to program a LocoIO board as
of JMRI 3 is via <a href=
"../../apps/DecoderPro/index.shtml">DecoderPro</a> with a
dedicated decoder file.</strong><br>
<em>The following entry is only shown as reference for JMRI
versions before 3.0.</em></p>
<p>JMRI contains a tool to simplify programming the LocoIO
accessory input/output/controller board. This tool was
greatly updated by John Plocher for JMRI release 1.8.</p>
<p>The <a href="#curent">first section</a> of this page is
John's description of the current LocoIO programmer. The
<a href="#older">second part</a> of the page contains
instructions for the older programmer, which is still
available. <a name="current" id="current"></a></p>
<h2>Using the second LocoIO Programmer</h2>
<p>The second version <strong>(no longer supported)</strong>
<em>only</em> dealt with SV1 & SV2 (address/subaddress)
and SV3-SV50 (primary mode, value1 and value2 for ports
1-16). In particular, it did <em>not</em> address SV0 (board
level configuration), SV51-SV98 (alternate Opcodes) or
SV101-124 (servo config).</p>
<p>Usage model:</p>
<ul>
<li>Enter a LocoIO address and sub-address</li>
<li>Click on "probe" button</li>
<li>If a locoIO is found at that address, its firmware
version is displayed (the Monitor LocoNet window will show
all the LocoIO's that responded to the probe request if you
need to refresh your memory)</li>
<li>If you wish to change the address of a locoIO board,
you MUST ensure that it is the ONLY LocoIO-based board
connected to the LocoNet, as the address is set via a
broadcast message. A popup will remind you of this. If you
ignore it, then ALL of the LocoIO's on your LocoNet will be
reprogrammed with the same new address.</li>
<li>"read all" reads all the CV values from the LocoIO
specified. "write all" writes them all out</li>
<li>The individual read/write buttons do the same, but for
only one port at a time.</li>
<li>"capture" extracts the address out of the next turnout
or occupancy sensor LocoNet message it sees and uses it as
the address of the selected port.</li>
</ul>
<!-- No longer supported, so no usage for a To Do list here -->
<!-- <p>
To-Do list:
<ul>
<li>Need UI to configure the various SV0 states.
<li>Write a "change address" routine that takes both the
old and new addresses and does the change without using a
broadcast address.
<li>Write a set of config data out to a text file in the
form used by Hans Deloofs standalone Windows programmer, and read it back when
requested.
</ul>
-->
<a name="older" id="older"></a>
<h2>Using the first LocoIO Programmer</h2><a href=
"images/locoio.gif"><img src="images/locoio.gif" width="100"
height="50"></a>
<p>There was an older LocoIO programmer, which is still
available in JMRI. This section contains the instructions for
that programmer.</p>
<p>The programmer provides a table-based interface for
configuring <a href=
"http://www.locobuffer.com/LocoIO/LocoIO.htm">John Jabour's
LocoIO board</a>, a powerful component for building CTC
boards and control panels. (More information on the board is
available at <a href=
"http://www.locobuffer.com/LocoIO/LocoIO.htm">http://www.locobuffer.com/LocoIO/LocoIO.htm</a>)</p>
<p>A LocoIO board has 16 signal pins, each of which can be
programmed as an input or output, and to do a number of
different things. The board is also sometimes described as
having 16 channels.</p>
<p>The channels are configured via LocoNet messages. The
LocoIO programmer uses a table to represent the configuration
of each channel.</p>
<p>The "Action" column is used to select how the channel
behaves. Click in a cell to be given a menu of available
choices. Currently, the choices are:</p>
<div class="list">
<dl>
<dt class="left"><dfn>"Toggle switch controls
turnout"</dfn></dt>
<dd class="first">
<p>Generate a OPC_SW_REQ to close/throw a turnout when
a toggle switch changes state. When the input goes
high, a "close" command is sent; when the input goes
low, a "throw" command is sent. The channel
configuration value is 0x0F.</p>
</dd>
<dt class="left"><dfn>"Input low flips
turnout"</dfn></dt>
<dd>
<p>Generate a OPC_SW_REQ LocoNet message when the input
goes low. This is intended for use with a momentary
pushbutton. The command sent will alternate the
position of the addressed turnout or signal; if "close"
was last sent, a "throw" will be sent now and
vice-versa. The channel configuration value is
0x2F.</p>
</dd>
<dt class="left"><dfn>"Input high flips
turnout"</dfn></dt>
<dd>
<p>Generate a OPC_SW_REQ LocoNet message when the input
goes high. This is intended for use with a momentary
pushbutton. The command sent will alternate the
position of the addressed turnout or signal; if "close"
was last sent, a "throw" will be sent now and
vice-versa. The channel configuration value is
0x6F.</p>
</dd>
<dt class="left"><dfn>"Status message sets
output"</dfn></dt>
<dd>
<p>Drive an output from OPC_INPUT_REP input status
messages on the LocoNet. The output goes high when an
"input high" message is received, and goes low when an
"input low" message is received. These messages are
also used for block occupancy status; the output will
go high when the block is occupied, and low when its
empty. The channel configuration value is 0XC0.</p>
</dd>
<dt class="left"><dfn>"Turnout close cmd sets
output"</dfn></dt>
<dd>
<p>Drive an output on the LocoIO board from received
OPC_SW_REQ commands. The channel configuration value is
0x80. This adjusts the address field to look for a
command that sets the turnout "closed".</p>
</dd>
<dt class="left"><dfn>"Turnout throw cmd sets
output"</dfn></dt>
<dd>
<p>Drive an output on the LocoIO board from received
OPC_SW_REQ commands. The channel configuration value is
0x80. This adjusts the address field to look for a
command that sets the turnout "thrown".</p>
</dd>
</dl>
</div>
<p>The "Hex Value1,Value2" column sets the address that the
LocoIO board will use for LocoNet communications. This
contains a hexadecimal representation of the two
configuration values described in John Jabour's LocoIO
programming guide. You generally won't need to figure out
these addresses, as the <span class="button">capture</span>
buttons will find them for you.</p>
<p>We're also planning to have a "User Address" column that
will show the human-readable address for turnouts and
sensors. For turnout messages, this is the same number that
you would use on your throttle. For block occupancy messages,
this is the block number. For input status messages, this is
the input number, which is twice the number of the associated
turnout, plus one if its a DS54 "switch" input.</p>
<p>The <span class="button">Read</span> button reads from the
LocoIO board via the LocoNet and shows the current
configuration for that pin. The <span class=
"button">Write</span> button stores the current settings to
the LocoIO board.</p>
<p>The <span class="button">Capture</span> button provides an
easier way to find a needed LocoNet address. Configure the
input and output for a particular pin, then press the
<span class="button">Capture</span> button. The address in
the next LocoNet message of the right type will be put in the
address column.</p>
<p>For example, if you have a channel set to act when a
"Turnout closed status message" is received, press the
<span class="button">Capture</span> button and use your
throttle to command the correct turnout Closed.</p>
<p>As another example, if the channel is configured to send a
"Send throw turnout command", press the <span class=
"button">Capture</span> button and use your throttle to
command the correct turnout Thrown.</p>
<p>At the bottom of the table are some general controls. The
LocoIO address field sets the address of the board being
programmed. LocoIO processors are sent with an address of
1051 programmed; see below for how to change that. Address
"0" is a global address which any LocoIO board will respond
to; make sure you have only one connected when you use
that!</p>
<p>The <span class="button">Set address</span> button will
use the global address to configure a specific address into a
LocoIO board. Again, make sure you have only one connected
(This button is disabled in the current version while we sort
out a problem).</p>
<p>The <span class="button">Open...</span> and <span class=
"button">Save...</span> buttons are not yet implemented. They
will eventually allow you to load and store configuration
files.</p>
<p>The <span class="button">Read All</span> and <span class=
"button">Write All</span> buttons read or write all of the
channels, and are just a convenience.</p>
<p>Status messages during capture/read/write are displayed at
the bottom of the window. If no response is heard from the
LocoIO unit, the operation will be retried until it succeeds
or until you close the window.</p>
</div><!-- Close #list -->
<!--#include virtual="/Footer" -->
</div><!-- closes #mainContent-->
<!-- closes #mBody-->
</body>
</html>