Hex Artifact Content
Not logged in

Artifact dfb81d0a3824ec7072dea5e25b22121637cec361:

Wiki page [modbus] by chw 2020-11-05 14:56:19.
0000: 44 20 32 30 32 30 2d 31 31 2d 30 35 54 31 34 3a  D 2020-11-05T14:
0010: 35 36 3a 31 39 2e 36 31 34 0a 4c 20 6d 6f 64 62  56:19.614.L modb
0020: 75 73 0a 50 20 31 33 38 64 31 36 31 64 64 39 37  us.P 138d161dd97
0030: 38 61 31 30 64 32 37 39 36 62 31 37 62 37 36 62  8a10d2796b17b76b
0040: 66 38 62 61 37 39 30 39 61 64 37 38 36 0a 55 20  f8ba7909ad786.U 
0050: 63 68 77 0a 57 20 35 34 33 39 0a 3c 68 32 3e 6d  chw.W 5439.<h2>m
0060: 6f 64 62 75 73 20 63 6f 6d 6d 61 6e 64 3c 2f 68  odbus command</h
0070: 32 3e 0d 0a 0d 0a 3c 68 33 3e 4e 61 6d 65 3c 2f  2>....<h3>Name</
0080: 68 33 3e 0d 0a 0d 0a 3c 62 3e 6d 6f 64 62 75 73  h3>....<b>modbus
0090: 3c 2f 62 3e 20 2d 20 54 63 6c 20 69 6e 74 65 72  </b> - Tcl inter
00a0: 66 61 63 65 20 74 6f 20 6c 69 62 6d 6f 64 62 75  face to libmodbu
00b0: 73 0d 0a 0d 0a 3c 68 33 3e 53 79 6e 6f 70 73 69  s....<h3>Synopsi
00c0: 73 3c 2f 68 33 3e 0d 0a 0d 0a 3c 74 74 3e 70 61  s</h3>....<tt>pa
00d0: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 54 63  ckage require Tc
00e0: 6c 20 38 2e 36 3c 2f 74 74 3e 3c 62 72 3e 0d 0a  l 8.6</tt><br>..
00f0: 3c 74 74 3e 70 61 63 6b 61 67 65 20 72 65 71 75  <tt>package requ
0100: 69 72 65 20 6d 6f 64 62 75 73 3c 2f 74 74 3e 3c  ire modbus</tt><
0110: 62 72 3e 0d 0a 3c 74 74 3e 6d 6f 64 62 75 73 3a  br>..<tt>modbus:
0120: 3a 6e 65 77 20 3c 69 3e 63 6d 64 20 68 6f 73 74  :new <i>cmd host
0130: 20 73 65 72 76 69 63 65 3c 2f 69 3e 3c 2f 74 74   service</i></tt
0140: 3e 3c 62 72 3e 0d 0a 3c 74 74 3e 6d 6f 64 62 75  ><br>..<tt>modbu
0150: 73 3a 3a 6e 65 77 20 3c 69 3e 63 6d 64 20 73 65  s::new <i>cmd se
0160: 72 69 61 6c 20 62 61 75 64 20 70 61 72 69 74 79  rial baud parity
0170: 20 64 61 74 61 20 73 74 6f 70 20 3f 73 6c 61 76   data stop ?slav
0180: 65 5f 61 64 64 72 3f 3c 2f 69 3e 3c 2f 74 74 3e  e_addr?</i></tt>
0190: 3c 62 72 3e 0d 0a 3c 74 74 3e 3c 69 3e 63 6d 64  <br>..<tt><i>cmd
01a0: 3c 2f 69 3e 20 64 65 73 74 72 6f 79 3c 2f 74 74  </i> destroy</tt
01b0: 3e 3c 62 72 3e 0d 0a 3c 74 74 3e 3c 69 3e 63 6d  ><br>..<tt><i>cm
01c0: 64 3c 2f 69 3e 20 63 6f 6e 6e 65 63 74 3c 2f 74  d</i> connect</t
01d0: 74 3e 3c 62 72 3e 0d 0a 3c 74 74 3e 3c 69 3e 63  t><br>..<tt><i>c
01e0: 6d 64 3c 2f 69 3e 20 63 6c 6f 73 65 3c 2f 74 74  md</i> close</tt
01f0: 3e 3c 62 72 3e 0d 0a 3c 74 74 3e 3c 69 3e 63 6d  ><br>..<tt><i>cm
0200: 64 3c 2f 69 3e 20 73 65 74 63 68 61 6e 20 3c 69  d</i> setchan <i
0210: 3e 63 68 61 6e 3c 2f 69 3e 3c 2f 74 74 3e 3c 62  >chan</i></tt><b
0220: 72 3e 0d 0a 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f  r>..<tt><i>cmd</
0230: 69 3e 20 72 65 73 70 6f 6e 73 65 5f 74 69 6d 65  i> response_time
0240: 6f 75 74 20 3c 69 3e 3f 6d 73 3f 3c 2f 69 3e 3c  out <i>?ms?</i><
0250: 2f 74 74 3e 3c 62 72 3e 0d 0a 3c 74 74 3e 3c 69  /tt><br>..<tt><i
0260: 3e 63 6d 64 3c 2f 69 3e 20 73 65 72 69 61 6c 5f  >cmd</i> serial_
0270: 6d 6f 64 65 20 3c 69 3e 3f 6d 6f 64 65 3f 3c 2f  mode <i>?mode?</
0280: 69 3e 3c 2f 74 74 3e 3c 62 72 3e 0d 0a 3c 74 74  i></tt><br>..<tt
0290: 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 20 72 65 61 64  ><i>cmd</i> read
02a0: 5f 62 69 74 73 20 3c 69 3e 61 64 64 72 20 3f 6e  _bits <i>addr ?n
02b0: 75 6d 62 65 72 3f 3c 2f 69 3e 3c 2f 74 74 3e 3c  umber?</i></tt><
02c0: 62 72 3e 0d 0a 3c 74 74 3e 3c 69 3e 63 6d 64 3c  br>..<tt><i>cmd<
02d0: 2f 69 3e 20 72 65 61 64 5f 69 6e 70 75 74 5f 62  /i> read_input_b
02e0: 69 74 73 20 3c 69 3e 61 64 64 72 20 3f 6e 75 6d  its <i>addr ?num
02f0: 62 65 72 3f 3c 2f 69 3e 3c 2f 74 74 3e 3c 62 72  ber?</i></tt><br
0300: 3e 0d 0a 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69  >..<tt><i>cmd</i
0310: 3e 20 72 65 61 64 5f 72 65 67 69 73 74 65 72 73  > read_registers
0320: 20 3c 69 3e 61 64 64 72 20 3f 6e 75 6d 62 65 72   <i>addr ?number
0330: 3f 3c 2f 69 3e 3c 2f 74 74 3e 3c 62 72 3e 0d 0a  ?</i></tt><br>..
0340: 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 20 72  <tt><i>cmd</i> r
0350: 65 61 64 5f 69 6e 70 75 74 5f 72 65 67 69 73 74  ead_input_regist
0360: 65 72 73 20 3c 69 3e 61 64 64 72 20 3f 6e 75 6d  ers <i>addr ?num
0370: 62 65 72 3f 3c 2f 69 3e 3c 2f 74 74 3e 3c 62 72  ber?</i></tt><br
0380: 3e 0d 0a 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69  >..<tt><i>cmd</i
0390: 3e 20 77 72 69 74 65 5f 62 69 74 20 3c 69 3e 61  > write_bit <i>a
03a0: 64 64 72 20 76 61 6c 75 65 3c 2f 69 3e 3c 2f 74  ddr value</i></t
03b0: 74 3e 3c 62 72 3e 0d 0a 3c 74 74 3e 3c 69 3e 63  t><br>..<tt><i>c
03c0: 6d 64 3c 2f 69 3e 20 77 72 69 74 65 5f 72 65 67  md</i> write_reg
03d0: 69 73 74 65 72 20 3c 69 3e 61 64 64 72 20 76 61  ister <i>addr va
03e0: 6c 75 65 3c 2f 69 3e 3c 2f 74 74 3e 3c 62 72 3e  lue</i></tt><br>
03f0: 0d 0a 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 3e  ..<tt><i>cmd</i>
0400: 20 77 72 69 74 65 5f 62 69 74 73 20 3c 69 3e 61   write_bits <i>a
0410: 64 64 72 20 76 61 6c 75 65 20 2e 2e 2e 3c 2f 69  ddr value ...</i
0420: 3e 3c 2f 74 74 3e 3c 62 72 3e 0d 0a 3c 74 74 3e  ></tt><br>..<tt>
0430: 3c 69 3e 63 6d 64 3c 2f 69 3e 20 77 72 69 74 65  <i>cmd</i> write
0440: 5f 72 65 67 69 73 74 65 72 73 20 3c 69 3e 61 64  _registers <i>ad
0450: 64 72 20 76 61 6c 75 65 20 2e 2e 2e 3c 2f 69 3e  dr value ...</i>
0460: 3c 2f 74 74 3e 3c 62 72 3e 0d 0a 3c 74 74 3e 3c  </tt><br>..<tt><
0470: 69 3e 63 6d 64 3c 2f 69 3e 20 73 65 74 5f 73 6c  i>cmd</i> set_sl
0480: 61 76 65 20 3c 69 3e 73 6c 61 76 65 5f 61 64 64  ave <i>slave_add
0490: 72 3c 2f 69 3e 3c 2f 74 74 3e 3c 62 72 3e 0d 0a  r</i></tt><br>..
04a0: 0d 0a 3c 68 33 3e 44 65 73 63 72 69 70 74 69 6f  ..<h3>Descriptio
04b0: 6e 3c 2f 68 33 3e 0d 0a 0d 0a 54 68 69 73 20 70  n</h3>....This p
04c0: 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 73 20  ackage provides 
04d0: 61 20 54 63 6c 20 69 6e 74 65 72 66 61 63 65 20  a Tcl interface 
04e0: 74 6f 20 6c 69 62 6d 6f 64 62 75 73 20 28 73 65  to libmodbus (se
04f0: 65 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a  e <a href="http:
0500: 2f 2f 6c 69 62 6d 6f 64 62 75 73 2e 6f 72 67 22  //libmodbus.org"
0510: 3e 68 74 74 70 3a 2f 2f 6c 69 62 6d 6f 64 75 73  >http://libmodus
0520: 2e 6f 72 67 3c 2f 61 3e 29 20 75 73 69 6e 67 20  .org</a>) using 
0530: 46 66 69 64 6c 20 61 6e 64 20 54 63 6c 4f 4f 2e  Ffidl and TclOO.
0540: 0d 0a 0d 0a 3c 68 33 3e 43 6f 6d 6d 61 6e 64 73  ....<h3>Commands
0550: 3c 2f 68 33 3e 0d 0a 0d 0a 3c 74 74 3e 6d 6f 64  </h3>....<tt>mod
0560: 62 75 73 3a 3a 6e 65 77 20 3c 69 3e 63 6d 64 20  bus::new <i>cmd 
0570: 68 6f 73 74 20 73 65 72 76 69 63 65 3c 2f 69 3e  host service</i>
0580: 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 43 72 65  </tt>....    Cre
0590: 61 74 65 73 20 61 20 6e 65 77 20 63 6f 6d 6d 61  ates a new comma
05a0: 6e 64 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69  nd <tt><i>cmd</i
05b0: 3e 3c 2f 74 74 3e 20 77 68 69 63 68 20 69 6d 70  ></tt> which imp
05c0: 6c 65 6d 65 6e 74 73 20 61 20 4d 6f 64 62 75 73  lements a Modbus
05d0: 2d 54 43 50 20 20 63 6f 6e 6e 65 63 74 69 6f 6e  -TCP  connection
05e0: 20 6f 62 6a 65 63 74 20 74 6f 20 74 68 65 20 67   object to the g
05f0: 69 76 65 6e 20 3c 74 74 3e 3c 69 3e 68 6f 73 74  iven <tt><i>host
0600: 3c 2f 69 3e 3c 2f 74 74 3e 20 28 49 50 20 61 64  </i></tt> (IP ad
0610: 64 72 65 73 73 20 6f 72 20 68 6f 73 74 6e 61 6d  dress or hostnam
0620: 65 29 20 61 6e 64 20 3c 74 74 3e 3c 69 3e 73 65  e) and <tt><i>se
0630: 72 76 69 63 65 3c 2f 69 3e 3c 2f 74 74 3e 20 28  rvice</i></tt> (
0640: 73 79 6d 62 6f 6c 69 63 20 6f 72 20 6e 75 6d 65  symbolic or nume
0650: 72 69 63 20 54 43 50 20 70 6f 72 74 29 2e 20 46  ric TCP port). F
0660: 75 72 74 68 65 72 20 6f 70 65 72 61 74 69 6f 6e  urther operation
0670: 73 20 6f 6e 20 20 74 68 61 74 20 6f 62 6a 65 63  s on  that objec
0680: 74 20 61 72 65 20 63 61 72 72 69 65 64 20 6f 75  t are carried ou
0690: 74 20 62 79 20 69 6e 76 6f 6b 69 6e 67 20 6d 65  t by invoking me
06a0: 74 68 6f 64 73 20 6f 6e 20 3c 74 74 3e 3c 69 3e  thods on <tt><i>
06b0: 63 6d 64 3c 2f 69 3e 3c 2f 74 74 3e 2e 0d 0a 0d  cmd</i></tt>....
06c0: 0a 3c 74 74 3e 6d 6f 64 62 75 73 3a 3a 6e 65 77  .<tt>modbus::new
06d0: 20 3c 69 3e 63 6d 64 20 73 65 72 69 61 6c 20 62   <i>cmd serial b
06e0: 61 75 64 20 70 61 72 69 74 79 20 64 61 74 61 20  aud parity data 
06f0: 73 74 6f 70 20 3f 73 6c 61 76 65 5f 61 64 64 72  stop ?slave_addr
0700: 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20  ?</i></tt>....  
0710: 20 20 43 72 65 61 74 65 73 20 61 20 6e 65 77 20    Creates a new 
0720: 63 6f 6d 6d 61 6e 64 20 3c 74 74 3e 3c 69 3e 63  command <tt><i>c
0730: 6d 64 3c 2f 69 3e 3c 2f 74 74 3e 20 77 68 69 63  md</i></tt> whic
0740: 68 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 20 4d  h implements a M
0750: 6f 64 62 75 73 2d 52 54 55 20 63 6f 6e 6e 65 63  odbus-RTU connec
0760: 74 69 6f 6e 20 6f 62 6a 65 63 74 20 6f 6e 20 74  tion object on t
0770: 68 65 20 73 65 72 69 61 6c 20 6c 69 6e 65 20 3c  he serial line <
0780: 74 74 3e 3c 69 3e 73 65 72 69 61 6c 3c 2f 69 3e  tt><i>serial</i>
0790: 3c 2f 74 74 3e 20 77 69 74 68 20 70 61 72 61 6d  </tt> with param
07a0: 65 74 65 72 73 20 3c 74 74 3e 3c 69 3e 62 61 75  eters <tt><i>bau
07b0: 64 3c 2f 69 3e 3c 2f 74 74 3e 20 72 61 74 65 2c  d</i></tt> rate,
07c0: 20 3c 74 74 3e 3c 69 3e 70 61 72 69 74 79 3c 2f   <tt><i>parity</
07d0: 69 3e 3c 2f 74 74 3e 20 28 4e 3d 6e 6f 6e 65 2c  i></tt> (N=none,
07e0: 20 20 4f 3d 6f 64 64 2c 20 45 3d 65 76 65 6e 29    O=odd, E=even)
07f0: 2c 20 3c 74 74 3e 3c 69 3e 64 61 74 61 3c 2f 69  , <tt><i>data</i
0800: 3e 3c 2f 74 74 3e 20 62 69 74 73 2c 20 61 6e 64  ></tt> bits, and
0810: 20 3c 74 74 3e 3c 69 3e 73 74 6f 70 3c 2f 69 3e   <tt><i>stop</i>
0820: 3c 2f 74 74 3e 20 62 69 74 73 2e 20 54 68 65 20  </tt> bits. The 
0830: 6f 70 74 69 6f 6e 61 6c 20 70 61 72 61 6d 65 74  optional paramet
0840: 65 72 20 3c 74 74 3e 3c 69 3e 73 6c 61 76 65 5f  er <tt><i>slave_
0850: 61 64 64 72 3c 2f 69 3e 3c 2f 74 74 3e 20 73 70  addr</i></tt> sp
0860: 65 63 69 66 69 65 73 20 74 68 65 20 4d 6f 64 62  ecifies the Modb
0870: 75 73 2d 52 54 55 20 20 73 6c 61 76 65 20 61 64  us-RTU  slave ad
0880: 64 72 65 73 73 20 61 6e 64 20 64 65 66 61 75 6c  dress and defaul
0890: 74 73 20 74 6f 20 7a 65 72 6f 2e 20 46 75 72 74  ts to zero. Furt
08a0: 68 65 72 20 6f 70 65 72 61 74 69 6f 6e 73 20 6f  her operations o
08b0: 6e 20 74 68 61 74 20 6f 62 6a 65 63 74 20 61 72  n that object ar
08c0: 65 20 63 61 72 72 69 65 64 20 6f 75 74 20 62 79  e carried out by
08d0: 20 69 6e 76 6f 6b 69 6e 67 20 6d 65 74 68 6f 64   invoking method
08e0: 73 20 6f 6e 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c  s on <tt><i>cmd<
08f0: 2f 69 3e 3c 2f 74 74 3e 2e 0d 0a 0d 0a 3c 74 74  /i></tt>.....<tt
0900: 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 20 64 65 73 74  ><i>cmd</i> dest
0910: 72 6f 79 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20  roy</tt>....    
0920: 44 65 73 74 72 6f 79 73 20 74 68 65 20 63 6f 6e  Destroys the con
0930: 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 20 3c  nection object <
0940: 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 3c 2f 74  tt><i>cmd</i></t
0950: 74 3e 2c 20 72 65 6c 65 61 73 65 73 20 72 65 73  t>, releases res
0960: 6f 75 72 63 65 73 20 61 6e 64 20 63 6c 6f 73 65  ources and close
0970: 73 20 63 6f 6d 6d 75 6e 69 63 61 74 69 6f 6e 73  s communications
0980: 20 6c 69 6e 6b 73 2e 0d 0a 0d 0a 3c 74 74 3e 3c   links.....<tt><
0990: 69 3e 63 6d 64 3c 2f 69 3e 20 63 6f 6e 6e 65 63  i>cmd</i> connec
09a0: 74 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 43 6f  t</tt>....    Co
09b0: 6e 6e 65 63 74 73 20 74 68 65 20 63 6f 6e 6e 65  nnects the conne
09c0: 63 74 69 6f 6e 20 6f 62 6a 65 63 74 20 3c 74 74  ction object <tt
09d0: 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 3c 2f 74 74 3e  ><i>cmd</i></tt>
09e0: 20 74 6f 20 69 74 73 20 70 65 65 72 20 28 61 20   to its peer (a 
09f0: 54 43 50 20 73 65 72 76 65 72 20 66 6f 72 20 4d  TCP server for M
0a00: 6f 64 62 75 73 2d 54 43 50 20 6f 72 20 61 20 73  odbus-TCP or a s
0a10: 65 72 69 61 6c 20 6c 69 6e 65 20 66 6f 72 20 4d  erial line for M
0a20: 6f 64 62 75 73 2d 52 54 55 29 2e 0d 0a 0d 0a 3c  odbus-RTU).....<
0a30: 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 20 63 6c  tt><i>cmd</i> cl
0a40: 6f 73 65 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20  ose</tt>....    
0a50: 43 6c 6f 73 65 73 20 74 68 65 20 63 6f 6e 6e 65  Closes the conne
0a60: 63 74 69 6f 6e 20 28 65 69 74 68 65 72 20 74 68  ction (either th
0a70: 65 20 73 6f 63 6b 65 74 20 6f 72 20 74 68 65 20  e socket or the 
0a80: 73 65 72 69 61 6c 20 6c 69 6e 65 29 20 6f 66 20  serial line) of 
0a90: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f  the connection o
0aa0: 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 63 6d 64  bject <tt><i>cmd
0ab0: 3c 2f 69 3e 3c 2f 74 74 3e 2e 0d 0a 0d 0a 3c 74  </i></tt>.....<t
0ac0: 74 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 20 73 65 74  t><i>cmd</i> set
0ad0: 63 68 61 6e 20 3c 69 3e 63 68 61 6e 3c 2f 69 3e  chan <i>chan</i>
0ae0: 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 4f 6e 20  </tt>....    On 
0af0: 50 4f 53 49 58 20 70 6c 61 74 66 6f 72 6d 73 2c  POSIX platforms,
0b00: 20 74 68 69 73 20 6d 65 74 68 6f 64 20 64 75 70   this method dup
0b10: 6c 69 63 61 74 65 73 20 74 68 65 20 6f 70 65 72  licates the oper
0b20: 61 74 69 6e 67 20 73 79 73 74 65 6d 20 68 61 6e  ating system han
0b30: 64 6c 65 20 6f 66 20 74 68 65 20 54 63 6c 20 63  dle of the Tcl c
0b40: 68 61 6e 6e 65 6c 20 3c 74 74 3e 3c 69 3e 63 68  hannel <tt><i>ch
0b50: 61 6e 3c 2f 69 3e 3c 2f 74 74 3e 20 61 6e 64 20  an</i></tt> and 
0b60: 77 72 61 70 73 20 69 74 20 69 6e 74 6f 20 74 68  wraps it into th
0b70: 65 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 3e  e <tt><i>cmd</i>
0b80: 3c 2f 74 74 3e 20 63 6f 6e 6e 65 63 74 69 6f 6e  </tt> connection
0b90: 20 6f 62 6a 65 63 74 2e 20 54 68 65 20 54 63 6c   object. The Tcl
0ba0: 20 63 68 61 6e 6e 65 6c 20 63 61 6e 20 62 65 20   channel can be 
0bb0: 63 6c 6f 73 65 64 20 69 6d 6d 65 64 69 61 74 65  closed immediate
0bc0: 6c 79 20 61 66 74 65 72 20 74 68 69 73 20 6f 70  ly after this op
0bd0: 65 72 61 74 69 6f 6e 2e 20 44 65 70 65 6e 64 69  eration. Dependi
0be0: 6e 67 20 6f 6e 20 20 74 68 65 20 63 6f 6e 73 74  ng on  the const
0bf0: 72 75 63 74 6f 72 2c 20 74 68 65 20 20 6f 70 65  ructor, the  ope
0c00: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 68 61  rating system ha
0c10: 6e 64 6c 65 20 6d 75 73 74 20 70 72 6f 76 69 64  ndle must provid
0c20: 65 20 73 6f 63 6b 65 74 20 6f 72 20 74 74 79 20  e socket or tty 
0c30: 73 65 6d 61 6e 74 69 63 73 20 66 6f 72 20 66 75  semantics for fu
0c40: 72 74 68 65 72 20 49 2f 4f 20 6d 65 74 68 6f 64  rther I/O method
0c50: 73 20 6f 6e 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c  s on <tt><i>cmd<
0c60: 2f 69 3e 3c 2f 74 74 3e 20 74 6f 20 73 75 63 63  /i></tt> to succ
0c70: 65 65 64 2e 20 4f 6e 20 57 69 6e 64 6f 77 73 20  eed. On Windows 
0c80: 70 6c 61 74 66 6f 72 6d 73 2c 20 74 68 69 73 20  platforms, this 
0c90: 6d 65 74 68 6f 64 20 69 73 20 6e 6f 74 20 73 75  method is not su
0ca0: 70 70 6f 72 74 65 64 2e 0d 0a 0d 0a 3c 74 74 3e  pported.....<tt>
0cb0: 3c 69 3e 63 6d 64 3c 2f 69 3e 20 72 65 73 70 6f  <i>cmd</i> respo
0cc0: 6e 73 65 5f 74 69 6d 65 20 3c 69 3e 3f 6d 73 3f  nse_time <i>?ms?
0cd0: 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20  </i></tt>....   
0ce0: 20 20 51 75 65 72 69 65 73 20 6f 72 20 73 65 74    Queries or set
0cf0: 73 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 74  s the response t
0d00: 69 6d 65 6f 75 74 20 6f 6e 20 74 68 65 20 63 6f  imeout on the co
0d10: 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 20  nnection object 
0d20: 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 3c 2f  <tt><i>cmd</i></
0d30: 74 74 3e 2e 20 54 68 65 20 74 69 6d 65 6f 75 74  tt>. The timeout
0d40: 20 69 73 20 73 70 65 63 69 66 69 65 64 20 69 6e   is specified in
0d50: 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 2e 0d 0a   milliseconds...
0d60: 0d 0a 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 3e  ..<tt><i>cmd</i>
0d70: 20 73 65 72 69 61 6c 5f 6d 6f 64 65 20 3c 69 3e   serial_mode <i>
0d80: 3f 6d 6f 64 65 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d  ?mode?</i></tt>.
0d90: 0a 0d 0a 20 20 20 20 20 51 75 65 72 69 65 73 20  ...     Queries 
0da0: 6f 72 20 73 65 74 73 20 52 53 2d 32 33 32 20 6f  or sets RS-232 o
0db0: 72 20 52 53 2d 34 38 35 20 6d 6f 64 65 20 6f 6e  r RS-485 mode on
0dc0: 20 74 68 65 20 4d 6f 64 62 75 73 2d 52 54 55 20   the Modbus-RTU 
0dd0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 20 6f 62 6a 65  connection  obje
0de0: 63 74 20 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f  ct  <tt><i>cmd</
0df0: 69 3e 3c 2f 74 74 3e 2e 20 46 6f 72 20 52 53 2d  i></tt>. For RS-
0e00: 32 33 32 20 6d 6f 64 65 20 6d 75 73 74 20 62 65  232 mode must be
0e10: 20 30 2c 20 66 6f 72 20 52 53 2d 34 38 35 20 69   0, for RS-485 i
0e20: 74 20 6d 75 73 74 20 62 65 20 31 2e 0d 0a 0d 0a  t must be 1.....
0e30: 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 20 72  <tt><i>cmd</i> r
0e40: 65 61 64 5f 62 69 74 73 20 3c 69 3e 61 64 64 72  ead_bits <i>addr
0e50: 20 3f 6e 75 6d 62 65 72 3f 3c 2f 69 3e 3c 2f 74   ?number?</i></t
0e60: 74 3e 0d 0a 0d 0a 20 20 20 20 20 52 65 61 64 73  t>....     Reads
0e70: 20 3c 74 74 3e 3c 69 3e 6e 75 6d 62 65 72 3c 2f   <tt><i>number</
0e80: 69 3e 3c 2f 74 74 3e 20 63 6f 69 6c 20 73 74 61  i></tt> coil sta
0e90: 74 75 73 20 62 69 74 73 20 73 74 61 72 74 69 6e  tus bits startin
0ea0: 67 20 77 69 74 68 20 61 64 64 72 65 73 73 20 3c  g with address <
0eb0: 74 74 3e 3c 69 3e 61 64 64 72 3c 2f 69 3e 3c 2f  tt><i>addr</i></
0ec0: 74 74 3e 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e  tt> from the con
0ed0: 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 20 3c  nection object <
0ee0: 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 3c 2f 74  tt><i>cmd</i></t
0ef0: 74 3e 2e 20 4e 75 6d 62 65 72 20 64 65 66 61 75  t>. Number defau
0f00: 6c 74 73 20 74 6f 20 6f 6e 65 2e 0d 0a 0d 0a 3c  lts to one.....<
0f10: 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 20 72 65  tt><i>cmd</i> re
0f20: 61 64 5f 69 6e 70 75 74 5f 62 69 74 73 20 3c 69  ad_input_bits <i
0f30: 3e 61 64 64 72 20 3f 6e 75 6d 62 65 72 3f 3c 2f  >addr ?number?</
0f40: 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 20  i></tt>....     
0f50: 52 65 61 64 73 20 3c 74 74 3e 3c 69 3e 6e 75 6d  Reads <tt><i>num
0f60: 62 65 72 3c 2f 69 3e 3c 2f 74 74 3e 20 69 6e 70  ber</i></tt> inp
0f70: 75 74 20 73 74 61 74 75 73 20 62 69 74 73 20 73  ut status bits s
0f80: 74 61 72 74 69 6e 67 20 77 69 74 68 20 61 64 64  tarting with add
0f90: 72 65 73 73 20 3c 74 74 3e 3c 69 3e 61 64 64 72  ress <tt><i>addr
0fa0: 3c 2f 69 3e 3c 2f 74 74 3e 20 66 72 6f 6d 20 74  </i></tt> from t
0fb0: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62  he connection ob
0fc0: 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c  ject <tt><i>cmd<
0fd0: 2f 69 3e 3c 2f 74 74 3e 2e 20 4e 75 6d 62 65 72  /i></tt>. Number
0fe0: 20 64 65 66 61 75 6c 74 73 20 74 6f 20 6f 6e 65   defaults to one
0ff0: 2e 0d 0a 0d 0a 3c 74 74 3e 3c 69 3e 63 6d 64 3c  .....<tt><i>cmd<
1000: 2f 69 3e 20 72 65 61 64 5f 72 65 67 69 73 74 65  /i> read_registe
1010: 72 73 20 3c 69 3e 61 64 64 72 20 3f 6e 75 6d 62  rs <i>addr ?numb
1020: 65 72 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a  er?</i></tt>....
1030: 20 20 20 20 20 52 65 61 64 73 20 3c 74 74 3e 3c       Reads <tt><
1040: 69 3e 6e 75 6d 62 65 72 3c 2f 69 3e 3c 2f 74 74  i>number</i></tt
1050: 3e 20 68 6f 6c 64 69 6e 67 20 72 65 67 69 73 74  > holding regist
1060: 65 72 73 20 73 74 61 72 74 69 6e 67 20 77 69 74  ers starting wit
1070: 68 20 61 64 64 72 65 73 73 20 3c 74 74 3e 3c 69  h address <tt><i
1080: 3e 61 64 64 72 3c 2f 69 3e 3c 2f 74 74 3e 20 66  >addr</i></tt> f
1090: 72 6f 6d 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  rom the connecti
10a0: 6f 6e 20 6f 62 6a 65 63 74 20 3c 74 74 3e 3c 69  on object <tt><i
10b0: 3e 63 6d 64 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 4e  >cmd</i></tt>. N
10c0: 75 6d 62 65 72 20 64 65 66 61 75 6c 74 73 20 74  umber defaults t
10d0: 6f 20 6f 6e 65 2e 0d 0a 0d 0a 3c 74 74 3e 3c 69  o one.....<tt><i
10e0: 3e 63 6d 64 3c 2f 69 3e 20 72 65 61 64 5f 69 6e  >cmd</i> read_in
10f0: 70 75 74 5f 72 65 67 69 73 74 65 72 73 20 3c 69  put_registers <i
1100: 3e 61 64 64 72 20 3f 6e 75 6d 62 65 72 3f 3c 2f  >addr ?number?</
1110: 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 20  i></tt>....     
1120: 52 65 61 64 73 20 3c 74 74 3e 3c 69 3e 6e 75 6d  Reads <tt><i>num
1130: 62 65 72 3c 2f 69 3e 3c 2f 74 74 3e 20 69 6e 70  ber</i></tt> inp
1140: 75 74 20 72 65 67 69 73 74 65 72 73 20 73 74 61  ut registers sta
1150: 72 74 69 6e 67 20 77 69 74 68 20 61 64 64 72 65  rting with addre
1160: 73 73 20 3c 74 74 3e 3c 69 3e 61 64 64 72 3c 2f  ss <tt><i>addr</
1170: 69 3e 3c 2f 74 74 3e 20 66 72 6f 6d 20 74 68 65  i></tt> from the
1180: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65   connection obje
1190: 63 74 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69  ct <tt><i>cmd</i
11a0: 3e 3c 2f 74 74 3e 2e 20 4e 75 6d 62 65 72 20 64  ></tt>. Number d
11b0: 65 66 61 75 6c 74 73 20 74 6f 20 6f 6e 65 2e 0d  efaults to one..
11c0: 0a 0d 0a 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69  ...<tt><i>cmd</i
11d0: 3e 20 77 72 69 74 65 5f 62 69 74 20 3c 69 3e 61  > write_bit <i>a
11e0: 64 64 72 20 76 61 6c 75 65 3c 2f 69 3e 3c 2f 74  ddr value</i></t
11f0: 74 3e 0d 0a 0d 0a 20 20 20 20 20 57 72 69 74 65  t>....     Write
1200: 73 20 3c 74 74 3e 3c 69 3e 76 61 6c 75 65 3c 2f  s <tt><i>value</
1210: 69 3e 3c 2f 74 74 3e 20 69 6e 74 6f 20 74 68 65  i></tt> into the
1220: 20 63 6f 69 6c 20 73 74 61 74 75 73 20 62 69 74   coil status bit
1230: 20 77 69 74 68 20 61 64 64 72 65 73 73 20 3c 74   with address <t
1240: 74 3e 3c 69 3e 61 64 64 72 3c 2f 69 3e 3c 2f 74  t><i>addr</i></t
1250: 74 3e 20 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 63  t> on the connec
1260: 74 69 6f 6e 20 6f 62 6a 65 63 74 20 3c 74 74 3e  tion object <tt>
1270: 3c 69 3e 63 6d 64 3c 2f 69 3e 3c 2f 74 74 3e 2e  <i>cmd</i></tt>.
1280: 0d 0a 0d 0a 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f  ....<tt><i>cmd</
1290: 69 3e 20 77 72 69 74 65 5f 72 65 67 69 73 74 65  i> write_registe
12a0: 72 20 3c 69 3e 61 64 64 72 20 76 61 6c 75 65 3c  r <i>addr value<
12b0: 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20  /i></tt>....    
12c0: 20 57 72 69 74 65 73 20 3c 74 74 3e 3c 69 3e 76   Writes <tt><i>v
12d0: 61 6c 75 65 3c 2f 69 3e 3c 2f 74 74 3e 20 69 6e  alue</i></tt> in
12e0: 74 6f 20 74 68 65 20 68 6f 6c 64 69 6e 67 20 72  to the holding r
12f0: 65 67 69 73 74 65 72 20 77 69 74 68 20 61 64 64  egister with add
1300: 72 65 73 73 20 3c 74 74 3e 3c 69 3e 61 64 64 72  ress <tt><i>addr
1310: 3c 2f 69 3e 3c 2f 74 74 3e 20 6f 6e 20 74 68 65  </i></tt> on the
1320: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65   connection obje
1330: 63 74 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69  ct <tt><i>cmd</i
1340: 3e 3c 2f 74 74 3e 2e 0d 0a 0d 0a 3c 74 74 3e 3c  ></tt>.....<tt><
1350: 69 3e 63 6d 64 3c 2f 69 3e 20 77 72 69 74 65 5f  i>cmd</i> write_
1360: 62 69 74 73 20 3c 69 3e 61 64 64 72 20 76 61 6c  bits <i>addr val
1370: 75 65 20 2e 2e 2e 3c 2f 69 3e 3c 2f 74 74 3e 0d  ue ...</i></tt>.
1380: 0a 0d 0a 20 20 20 20 20 57 72 69 74 65 73 20 6f  ...     Writes o
1390: 6e 65 20 6f 72 65 20 6d 6f 72 65 20 76 61 6c 75  ne ore more valu
13a0: 65 73 20 69 6e 74 6f 20 74 68 65 20 63 6f 69 6c  es into the coil
13b0: 20 73 74 61 74 75 73 20 62 69 74 73 20 73 74 61   status bits sta
13c0: 72 74 69 6e 67 20 77 69 74 68 20 61 64 64 72 65  rting with addre
13d0: 73 73 20 3c 74 74 3e 3c 69 3e 61 64 64 72 3c 2f  ss <tt><i>addr</
13e0: 69 3e 3c 2f 74 74 3e 20 6f 6e 20 74 68 65 20 63  i></tt> on the c
13f0: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
1400: 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 3c   <tt><i>cmd</i><
1410: 2f 74 74 3e 2e 0d 0a 0d 0a 3c 74 74 3e 3c 69 3e  /tt>.....<tt><i>
1420: 63 6d 64 3c 2f 69 3e 20 77 72 69 74 65 5f 72 65  cmd</i> write_re
1430: 67 69 73 74 65 72 73 20 3c 69 3e 61 64 64 72 20  gisters <i>addr 
1440: 76 61 6c 75 65 20 2e 2e 2e 3c 2f 69 3e 3c 2f 74  value ...</i></t
1450: 74 3e 0d 0a 0d 0a 20 20 20 20 20 57 72 69 74 65  t>....     Write
1460: 73 20 6f 6e 65 20 6f 72 65 20 6d 6f 72 65 20 76  s one ore more v
1470: 61 6c 75 65 73 20 69 6e 74 6f 20 74 68 65 20 68  alues into the h
1480: 6f 6c 64 69 6e 67 20 72 65 67 69 73 74 65 72 73  olding registers
1490: 20 73 74 61 72 74 69 6e 67 20 77 69 74 68 20 61   starting with a
14a0: 64 64 72 65 73 73 20 3c 74 74 3e 3c 69 3e 61 64  ddress <tt><i>ad
14b0: 64 72 3c 2f 69 3e 3c 2f 74 74 3e 20 6f 6e 20 74  dr</i></tt> on t
14c0: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62  he connection ob
14d0: 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c  ject <tt><i>cmd<
14e0: 2f 69 3e 3c 2f 74 74 3e 2e 0d 0a 0d 0a 3c 74 74  /i></tt>.....<tt
14f0: 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 20 73 65 74 5f  ><i>cmd</i> set_
1500: 73 6c 61 76 65 20 3c 69 3e 3f 73 6c 61 76 65 5f  slave <i>?slave_
1510: 61 64 64 72 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a  addr?</i></tt>..
1520: 0d 0a 20 20 20 20 20 53 65 74 73 20 74 68 65 20  ..     Sets the 
1530: 73 6c 61 76 65 20 61 64 64 72 65 73 73 20 66 6f  slave address fo
1540: 72 20 4d 6f 64 62 75 73 2d 52 54 55 20 6f 6e 20  r Modbus-RTU on 
1550: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f  the connection o
1560: 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 63 6d 64  bject <tt><i>cmd
1570: 3c 2f 69 3e 3c 2f 74 74 3e 20 74 6f 20 3c 74 74  </i></tt> to <tt
1580: 3e 3c 69 3e 73 6c 61 76 65 5f 61 64 64 72 3c 2f  ><i>slave_addr</
1590: 69 3e 3c 2f 74 74 3e 2e 0d 0a 0a 5a 20 62 65 65  i></tt>....Z bee
15a0: 35 32 35 37 62 64 66 64 63 65 38 35 34 64 30 32  5257bdfdce854d02
15b0: 37 32 34 62 66 39 34 65 39 35 39 63 36 0a        724bf94e959c6.