Huber Pilot ONE User manual



! "#""$%&'("&"$&)''

*
"#""$%&'("&"$&)'' !

+
#%$$&
&$ ,
-"'.&,
") ,
",
/(('%!
/(#0$ !
&'!
&'1#$&!
!
* 1#$&2
+ 13)2
, "$1&.2
! "$1&.1#$&2
2 45
5 41#$&5
5
&$1($5
&
* )(&
* )(
* 3(
* 3('&"
+
+ /(#0$6."3."$3"/(('&$"3&7
+ 8#0$68/(('&7*
+ /(#0$6/(('&7 +
+* "/(#0$6/(('&7,
++ #/(#0$6'#&(('&72
++ #//(('#0$2
++
#9#0$
5
+, /($#0$6&$"3"%(%('4"":75
! "#""$%&'("&"$&)''

,
&$
$;&" !(&$#"&$'$&"3"&&<"'
6=#(7$#'$)34"$&""$%"&$"&$&%
>(6&#.7
-"'.&
8%"&$?(&$"&$$@=#(A3B'.'
"$%((3"&3"&$&$''"&&&$'"
#"&$'$"&$%@=#(A"&($'&?&
$"$"&$
")
&$$&
"
"&"$$("$&($$%$=#$(&$$&4""$%
&$'('"&."C"$'&$%&$
$4"($%'4"3&$(&"$&$'4$3%$"&$$"$"&$D
%("''$$%&'>($$&$&$'
"
3'"$'$$&"333$#%'"E"/(3
"#""$%&'("&"$&)'' !

!
/(('%
$&"333"&$''"(('&4#'''$$$"#
$%""$$(("."$$=#$(&$$&'$($&"''$%($"D
$%"&$'&"#&$&''"(('&'$"%
/(#0$
/(#0$(3&$"$%&/(#0$(&$#$'$&$"$%
($&":&$"$%?3@$$A?@('#&$A@&"A
($ &":&$($"&'&
($&":&$@;#&"$4A@A6'%$7&":&$$(&&3"&3$'.
&($"33&.3?".&@ A''"$&$&$'"4'
&$"3&'@A&$&$(%
($*&":&.$$.&)6D'%$7.$$3(
&'69&7
/(#0$.&."$&$"3&("$((%$#.'"$."3."$$
"&$&$?&&$&4#0$&'&"#'#.63$#/(#0$%$D
((''8"&$&$7=.4?"%$/(#0$"&&'."$('#&$&"$%?
#$&4$#&'
)(&F
com = Com("ethernet", 2.5)
3$&/(#0$%$$."$($% +&
&'
send(message)
(('&'&$&$"3$"'"@(&&3A$$&$'"$%
)(F
com.send("{M00****\r\n")
<"&$$&$"$
&'1#$&
send_bytes(message)
(('&'&$#$$"'"@(&&3A$$&$'"D
$%
$F"&&'#&'%'#&/
)(F
com.send_bytes(bytearray([0 00, 0 00, 0 00, 0 00, 0 00, 0 02, 0 FF, 0 41])
&$
('#&(("$&$%
check(e pression)
(('"4&&$"3$'%"%($&$'"$%
'4":&"$3"&$$$)$$"'")&&"%$&$.'$($?(&&3
"&3$''$&"$$"3"&$("$'
$(#%$&")&&""&4":'$$&"4'%($"$D
%"3'
)(&F
com.check(’{M01’)
&.$$:&$%$&%$$&$"3@GA($
com.check("\[S01G")
&.$$$&$"3&$$&."$@HEA6"&$&$7
! "#""$%&'("&"$&)''

2
1#$&
check_bytes(e pected)
(('"4&#$%($&$'"$%'4":&
"$3"&$$#$$"'")$'%$&$.'$($?(&&3"&3D
$''$&"$$"3"&$("$'
$F"&&'#&'%'#&/
)(&F
com.check_bytes(bytearray([0 00, 0 00, 0 00, 0 00, 0 00, 0 02, 0 FF, 0 41])
&
.$"4'#$"&<$$)$'#$
13)
check_rege (e pression)
(('.&"$(('
check
?#$$'"I"&$$
$&&')&&"(#3)&&"
&$$$$&$"3"&:)'."$@A."3"&3$'"%$&.'&$
($&"$''
&"%$'&$#&"''&"3)&&"&4"'"(('&F
&<#$H(&$#''##&&6JH7&"$$."&"&&"''$%$3D
)&&"'"&$&$4"$"$%J"$&%"&$&$6H'&$#&'."$J7
)(&F
com.check_rege (r"TI [0-9]")
&"%$:&$$.$&"4'("$?%D
.'#&'$(#%(5&$$.@HKA$%$3)&&"?
$(&$$#:)'."$@JA
"$1&.
print_answer
"4&&$"3%($&$'"$%$'%"'$$&"$
)(&F
com.send("SP?\r\n")
<"&$$&$"$L6"&$&$7
com.print_answer()
''"&&$&."4'$$&
"$1&.1#$&
print_answer_bytes
"4&#$%($&$''$$&"$
$F"&&'#&'%'#&/
)(&F
com.send_bytes(bytearray([0 00, 0 00, 0 00, 0 00, 0 00, 0 02, 0 FF, 0 41])
com.print_answer_bytes()
''"&&$&."4'$$&
"#""$%&'("&"$&)'' !

5
4
recv
'&&$"3%($&$'"$%%'&'$%$%."3
''"&F
'%""&"4'
.&"($
$ +,$&."4'4"$&""$%."$$'%"
&%%$&$$.'"&?(&&3"&3$''$&"$$("$&
)(&F
com.send("{M00****\r\n")
<"&$$&$"$
s = com.recv()
"4&$&&%($"$%
print("Received answer was: " + s)
'$$&$&&
41#$&
recv_bytes
'&#$%($&$'"$%%'&'$%$
%."3''"&F
'%""&"4'
.&"($
&%"($?(&&3"&3$''$&"$$("$&
$F"&&'#&'%'#&/
)(&F
com.send_bytes(bytearray([0 00, 0 00, 0 00, 0 00, 0 00, 0 02, 0 FF, 0 41])
ba = com.recv_bytes()
open(first, second)
&"$%%'$$&("&&"$&%($&F
$$F9"&$($F''&&$#&'$''&&$'4"
&'($"&$$$$
'#&/F9"&$($F''&&$#&'$''&&$'4"
&'($"&$$$$
""$%F9"&$($F$&'%(("&""$%("$&$%D
."3&F
'-"'.&$$/($D$"&?%/?%/ ?
'")$'4"$#&'%(("6M'4MC?M'4MC8?L7
&'($"&$#'$
)(&F
com.open("192.168.0.1", 8081)
&$22$$$''&&
5 ,2
com.open("192.168.0.1", 502)
&$+ $$$''&&
5 ,2
com.open(0, 9600)
&4"/."$5,8'
com.open("/dev/ttyACM0", 9600)
&4"M'4MC/&'&":"&
$<"'
com.open("/dev/ttyS0", 115200)
&4"M'4MC6/'")7."$+
8'
&$1($
&'$&$$(."$"&#$'"%$("$$$D
$&"4'(4
set_timeout(time)
"&&":'"&'&"%&%
&'&
)(&F
! "#""$%&'("&"$&)''

com.set_timeout(2.5)
$&($% +&'&
com.set_timeout(1)
$&($%&'
&
close()
&&$"$%&'%(("'&&"$$$&&$(
)(&F
com.close()
"$%"&&''('4"#$$&&$(3"
"#""$%&'("&"$&)'' !

*)(&
%."3)(&$$<"&$"$$($'$$&$&&4"$
&""$%&$&&"4"&.&
* )(
3(
1 from softcheck.logic import Com
2 import time
3
4 def script():
5
6 com = Com("serial", 2.5) #timeout should be specified in the constructor
7 com.open(0, 9600) #open COM1 with 9600 (address not defined)
8 # com.open("/dev/ttyACM0", 9600) #open usb port
9 # com.open("192.168.0.126", 8101) #open ethernet
10 com.set_timeout(2.3)
11
12
13 while 1:
14
15 print("")
16 print("Ask for the internal temperature and print out the answer.")
17 com.send("{M01****\r\n")
18 com.print_answer()
19
20
21 print("")
22 print("Ask for the internal temperature and check the first four chars.")
23 print("Output is only generated in case of an error.")
24 com.send("{M01****\r\n")
25 com.check("{S01")
26
27 print("")
28 print("Ask for the internal temperature and check the answer with a
rege .")
29 print("Output is only generated in case of an error.")
30 com.send("{M01****\r\n")
31 com.check_rege (r"{S01[0-9a-fA-F]*")
32
33 print("")
34 print("Ask for the internal temperature and print out a
formatted string as answer")
35 com.send("{M01****\r\n")
36 answer = com.recv()
37 answer = answer[:-2]
38 print("received answer: " + answer)
39
40 time.sleep(5)
41 com.close()
42
43 script()
3('&"
(&$"($$"&%$&(3('&"#'#.
F'&$"#'&"#'"$$&"$"&(&$$$#3""3%&"$
! "#""$%&'("&"$&)''

F'&$$"#"$$(%&"&&(<"&"$%$%
$$'%$&"$
*F"&"':&%$$$"&$&<%$$&$3(("&%&D
$#
,F/$&/(#0$
/N"&(&$#('#%"3$"$%
!OF&$"$%%(("."$$'4"&"&"&$4"&)(&%
$(("&4"#
F":&$($&"$3$&(&&3'#$&"%$"&D
"4'%($"$%'"3$'."$"$&$(D"$"&)(?
&'&
!? *??+F'&&$"34"$"$%"&)(<"&$"$$($
2FP"&&$&&"4'%($"$%$$&
+F'&(&&3%($"$%'&.$"$($&G
F'&(&&3%($"$%'&.$"$($&$$&%'3)D
&&"
,O2F"4&&$"3%($"$%'&$&"$"$4"#@&.A?(4&JJ$
$'%$"'."$&$&&$$&
*F-"$+&'&#%$"&&$$'
*F/&&$"$%"&%(&$#'$)"$%$&"$#%$("3
$&"$
*F/&$$&$%"$&%(&$&$)$(':'""*
"#""$%&'("&"$&)'' !

+
+ /(#0$6."3."$3"/(('&$"3&7
Namespace: from softcheck.logic import Com
To construct a new Com class - which is used for communication with the device - the
following arguments are needed:
Ethernet: Com("ethernet", TIMEOUT)
ModbusTCP: Com(“modbustcp”, TIMEOUT)
Serial interface: Com("serial", TIMEOUT)
E ample: com = Com("serial", 2.1)
As 3rd parameter the verbosity level can be given. "1" means that the program e -
plains what goes wrong in case of an error. "2" means that the sent and received
strings will be printed and "3" prints the time information for each command also.
4th parameter: When set to True (default), the program throws an e ception in case of
an error, otherwise the program goes on.
open:
opens the chosen interface.
Ethernet: The first parameter us the IP address, the second one the port.
Serial interface: The first parameter is the port number (0 for COM1), the second one
the baud rate
E ample: com.open("192.169.253.1", 8101) # open Ethernet socket
E ample2: com.open(0, 9600) #opens Com1 with 9600 Baud
E ample3: com.open('/dev/ttyACM0', 9600) # open ACM driver
send:
Sends a command to the interface. CR and LF have to be noted also
E ample: send("TI? /r/n")
send_bytes:
(for ModbusTCP usage)
Sends a bytearray to the interface
E ample: send_bytes(bytearray([0 00, 0 00, 0 00, 0 00, 0 00, 0 02, 0 FF, 0 41]))
check():
checks the start of the message received from the interface.
E ample: check("TI ")
E ample2: check("[S01G")
check_bytes:
(for ModbusTCP usage)
checks if the received bytearray from the interface matches the e pected bytearray
E ample: check_bytes(bytearray([0 00, 0 00, 0 00, 0 00, 0 00, 0 02, 0 FF, 0 41]))
check_rege ():
Checks the answer received from the interface. Regular E pressions can be used here.
For easier work with regular E pressions it is advisable to use an "r" in Front of
the E pression. Attention should be payed also to the notation: When there are char-
acters like '[' in the command (LAI), they must be escaped: "\["
E ample: check_rege ("TI ")
E ample2: check_rege ("\[S01G")
close:
The chosen interface is closed.
E ample: com.close()
recv:
Receives the answer from the interface.
This command is helpful when the answer from the interface should be processed fur-
ther. No check takes place.
E ample: str = com.recv()
recv_bytes:
(for ModbusTCP usage)
! "#""$%&'("&"$&)''

*
Recveis the answer from the interface as a bytearray
This command is helpful when the answer from the interface should be processed fur-
ther. No check takes place.
E ample: ba = com.recv_bytes()
get_runtime:
Returns the runtime of the last command that has been received. The runtime is the
time of a command send till echo (if there is an echo).
E ample: runtime = com.get_runtime()
get_ma _runtime:
Returns the ma imum runtime of all the commands that has been send and received.
E ample: ma _runtime = com.get_ma _runtime()
get_min_runtime:
Returns the minimum runtime of all the commands that has been send and received.
E ample: min_runtime = com.get_min_runtime()
get_avg_runtime:
Returns the average runtime of all the commands that has been send and received.
E ample: avg_runtime = com.get_avg_runtime()
get_nr_cmds_sent:
Returns the number of commands sent since the initialization of the Com object
E ample: nr_commands = com.get_nr_cmds_sent()
get_nr_answers:
Returns the number of answers received since the initialization of the Com object
E ample: nr_answers = com.get_nr_answers()
get_nr_timeouts:
Returns the number of timeouts occurred since the initialization of the Com object
E ample: nr_timeouts = com.get_nr_timeouts()
get_std_deviation:
Returns the standard deviation from the runtime
E ample: std_dev = com.get_std_deviation()
+ 8#0$68/(('&7
Namespace: from softcheck.pb_commands import PbCom
To construct a new PbCom class - which is used for communication with PB commands
with the device - the following arguments are needed:
E ample: pb = PbCom(com)
E ample2: pb = PbCom(com, 1)
The 1st parameter must be a configured Com object.
As 2nd parameter the verbosity level can be given. "1" means that the program e -
plains what goes wrong in case of an error.
3rd parameter: When set to True (default), the program throws an e ception in case of
an error, otherwise the program goes on.
int2he str:
converts the value of an pb command to a he string.
The first argument is the number, the second gives the number of bytes used for
transformation
Return value is the he string.
pb.int2he str(number, 16)
check:
checks if the value of a pb command is like e pected
The first argument is the value of the command to check, the second the value of the
PB command e pected.
Return value True if check is o.k.
pb.check(30, 1)
check_range:
checks if the value of the pb command is within the range e pected
"#""$%&'("&"$&)'' !

+
The first argument is the value of the command to check, the second the minimum and
the third the ma imum value.
Return value True if check is o.k.
pb.check_range(30, 0, 32767)
send:
sends a pb command with a certain value
The first argument is the PB command to send, the second one the value.
pb.send(30, 5)
request:
Requests the value of a command. The function only sends a request to the remote.
As argument the command number must be given.
pb.request(30)
request_echo:
sends a request command and waits for the answer from the remote.
As argument the command number must be given.
pb.request_echo(30)
get_bit:
gets the value of a given bit position in a command value (sends request command and
e tracts information).
The first argument is the command number, the second the bit position.
Return value is the value of the bit position
get_bit(10, 12)
set_bit:
sets a bit to 1 on a given bit position (and sends the command)
First argument is the command number, the second one is the bit position
Return value is the value of the bit position that has been set
set_bit(10, 12)
clear_bit:
clears a bit to 0 on a given bit position (and sends the command)
First argument is the command number, the second one is the bit position
Return value is the value of the bit position
clear_bit(10, 12)
more complete E ample:
----------------------
from softcheck.logic import Com
from softcheck.logic import CommunicationTimeout
from softcheck.pb_commands import PbCom
com = Com("serial", 2.1, 3)
com.open(0, 9600) #open COM1 with 9600 (address not defined)
pb = PbCom(com)
print("check status bits ...")
status_tempering = pb.get_bit(10, 0)
status_circulation = pb.get_bit(10, 1)
print("check setpoint …")
min_setpoint = pb.request_echo(48)
setpoint = pb.request_echo(0)
pb.send(0, min_setpoint)
pb.check(0, min_setpoint)
print("check internal temp. ...")
pb.request(1)
pb.check_range(1, -27400, 32700)
com.close()
+ /(#0$6/(('&7
Namespace: from softcheck.pp_commands import PpCom
To construct a new PpCom class - which is used for communication with PP commands
with the device - the following arguments are needed:
E ample: pp = PpCom(com)
E ample2: pp = PpCom(com, 1)
The 1st parameter must be a configured Com object.
! "#""$%&'("&"$&)''

,
As 2nd parameter the verbosity level can be given. "1" means that the program e -
plains what goes wrong in case of an error.
3rd parameter: When set to True (default), the program throws an e ception in case of
an error, otherwise the program goes on.
check:
checks if the value of a pp command is like e pected
The first argument is the command to check, the second the value of the PP command
e pected.
Return value True if check is o.k.
pp.check("SP", 2000)
check_range:
checks if the value of the pb command is within the range e pected
The first argument the command to check, the second the minimum and the third the
ma imum value.
Return value True if check is o.k.
pp.check_range("TI", 1000, 1500)
send:
sends a pp command with a certain value
The first argument is the PP command to send, the second one the value.
pp.send("SP", 1500)
change_to:
changes the command given to the value given (sends the value to the Circulator and
checks the answer for correctness)
The first argument is the command string and the second the value to be set.
pp.change_to("SP", 2000):
request:
Requests the value of a command. The function only sends a request to the remote.
As argument the command string must be given.
pp.request("TI")
request_echo:
sends a request command and waits for the answer from the remote.
As argument the command string must be given.
pp.request_echo("TI")
more complete E ample:
----------------------
from softcheck.logic import Com
from softcheck.logic import CommunicationTimeout
from softcheck.pp_commands import PpCom
com = Com("serial", 2.1, 3)
com.open(0, 9600) #open COM1 with 9600 (address not defined)
pp = PpCom(com)
internal_temp = pp.request_echo("TI")
pp.request("TI")
pp.check_range("TI", 500, 6000)
pp.request("TE")
pp.check_range("TE", 0, 7000)
pp.change_to("CA", 1)
time.sleep(30)
com.close()
+* "/(#0$6/(('&7
Namespace: from softcheck.lai_commands import LaiCom
To construct a new LaiCom class - which is used for communication with Lai commands
with the device - the following arguments are needed:
E ample: lai = LaiCom(com, 1)
E ample2: lai = LaiCom(com, 1, 1)
The 1st parameter must be a configured Com object.
The 2nd parameter is the slave address that the Circulator uses.
"#""$%&'("&"$&)'' !

!
As 3rd parameter the verbosity level can be given. "1" means that the program e -
plains what goes wrong in case of an error.
4th parameter: When set to True (default), the program throws an e ception in case of
an error, otherwise the program goes on.
int2he :
converts a value to a LAI he string (without 0 and leading zeros)
The 1st parameter is the value that is given (integer)
The 2nd parameter are the number of bytes the result should use
As return value one can get the he string without leading 0 and leading zeros
lai.int2he (1500, 2)
he 2int:
converts a LAI he string (value) to an integer
The first parameter is the he string that is to be converted to an int (e.g. re-
ceived from peer)
If the second parameter is True the returned value will be signed (default), if False
it will be unsigned
the return value is the int value of the given he string
lai.he 2int("A012") # signed value
lai.he 2int("A012", False) # unsigned value
send:
sends a LAI command with a certain value
The first argument is the LAI command to send, the second one the value.
lai.send("G", "E0****")
check:
checks if the value of a LAI command is like e pected
The first argument is the command to check, the second the value of the LAI command
e pected.
Return value True if check is o.k.
lai.send("V")
lai.check("Pilot ONE-Trainee V1.0")
check_rege :
checks if the value of a LAI command is like e pected
The first argument is the command to check, the second the regular e pression of the
LAI command e pected.
Return value True if check is o.k.
lai.send("G", "C0****")
# O: off, 0: no Alarm, tttt: setpoint, iiii: internal temp., dddd: e ternal temp.
lai.check_rege (r"O0[0-9A-F]{4}[0-9A-F]{4}[0-9A-F]{4}")
check_he :
checks if the he value (string) of a lai command is like e pected
The first argument is a he value (part of the LAI command) to check, the second the
int value to compare against the he _string
Return value True if check is o.k.
lai.send("G", "C0****")
# O: off, 0: no Alarm, tttt: setpoint, iiii: internal temp., dddd: e ternal temp.
lai.check_rege (r"O0[0-9A-F]{4}[0-9A-F]{4}[0-9A-F]{4}")
string = lai.get_last_value()
lai.check_he (string[2:6], 1500)
check_he _range:
checks if the he value (string) of a lai command is in the range e pected
The 1st argument is a he value (part of the LAI command) to check
The 2nd parameter is the minimum value allowed and the 3rd parameter is the ma imum
value allowed
Returns True if everything is o.k., False otherwise
lai.send("G", "C0****")
# O: off, 0: no Alarm, tttt: setpoint, iiii: internal temp., dddd: e ternal temp.
lai.check_rege (r"O0[0-9A-F]{4}[0-9A-F]{4}[0-9A-F]{4}")
string = lai.get_last_value()
lai.check_he _range(string[6:10], 1000, 3000)
get_last_value:
Returns the last value received. This can be useful if one sends a string with
"send", checks the received string with "check" and wants to use the answer further.
see above
! "#""$%&'("&"$&)''

2
change_to:
Changes the command/value pair given and ensures that set correctly
1st parameter is the command to be sent (send and check if really set)
2nd parameter is the value to be set
lai.change_to("I", slave_address)
request_echo:
Sends a request command and waits for the answer from the remote.
As argument the command string must be given.
string = lai.request_echo("L", "********")
more complete E ample:
----------------------
from softcheck.logic import Com
from softcheck.logic import CommunicationTimeout
from softcheck.lai_commands import LaiCom
com = Com("serial", 2.5, 3)
com.open(0, 9600) #open COM1 with 9600 (address not defined)
lai = LaiCom(com, 1)
lai.send("V")
lai.check("Pilot ONE-Trainee V1.0")
lai.send("G", "C0****")
# O: off, 0: no Alarm, tttt: setpoint, iiii: internal temp., dddd: e ternal temp.
lai.check_rege (r"[OC]0[0-9A-F]{4}[0-9A-F]{4}[0-9A-F]{4}")
string = lai.get_last_value()
setpoint = 2000
lai.check_he (string[2:6], setpoint)
min_int_temp = 200 # 2°C
ma _int_temp = 5000 # 50°C
min_e t_temp = 500 # 5°C
ma _e t_temp = 6000 # 60°C
lai.check_he _range(string[6:10], min_int_temp, ma _int_temp)
lai.check_he _range(string[10:14], min_e t_temp, ma _e t_temp)
time.sleep(1)
lai.send("G", "O0****")
lai.check_rege (r"[OC]0[0-9A-F]{4}[0-9A-F]{4}[0-9A-F]{4}")
com.close()
++ #/(#0$6'#&(('&7
Namespace: from softcheck.mb_commands import MbCom
To construct a new MbCom class - which is used for communication with Modbus commands
with the device - the following arguments are needed:
The 1st parameter must be a configured Com object.
As 2nd parameter the protocol mode can be given. Only "tcp" is supported.
As 3rd parameter the the verbosity level can be given. "1" means that the program e -
plains what goes wrong in case of an error. "2" means that the sent and received
strings will be printed and "3" prints the time information for each command also.
4th parameter: When set to True (default), the program throws an e ception in case of
an error, otherwise the program goes on.
E ample: mb = MbCom(com, "tcp")
request:
sends the MbTCPCommand object as a bytearray
E ample: mb.request(MbTCPCommand(bytearray([0 41]), 0 FF)
requst_echo:
sends the MbTCPCommand object as a byte array and waits for the received MbTCPCommand
E ample: recv_obj = mb.request_echo(MbTCPCommand(bytearray([0 41]), 0 FF))
check:
checks if two MbTCPCommand objects are equal
send_obj = MbTCPCommand(bytearray([0 41]), 0 FF)
recv_obj = MbTCPCommand(bytearray([0 41]), 0 FF)
E ample: ret = mb.check(send_obj, recv_obj)
"#""$%&'("&"$&)'' !

5
request_echo_check:
sends the MbTCPCommand object as a byte array and waits for the received MbTCPCommand
after that the received MbTCPCommand object is compared with the e pected object
send_obj = MbTCPCommand(bytearray([0 41]), 0 FF)
e pected_recv_obj = MbTCPCommand(bytearray([0 41]), 0 FF)
E ample: ret = mb.request_echo_check(send_obj, e pected_recv_obj)
#//(('#0$
Namespace: from softcheck.mb_commands import MbTCPCommand
To construct a new MbTCPCommand class - which is used for ModbusTCP commands - the
following arguments are needed:
The 1st parameter is the bytearray of user_data. This must be at least the modbus
function code.
As 2nd parameter the unit identifier (1 byte) has to be set.
As 3rd parameter the transaction identifier (2 bytes) can be specified.
As 4th parameter the protocol identifier (2 bytes) can be specified. ModbusTCP needs
0 0000 for protocol identifier.
E ample: mb_command = MbTCPCommand(bytearray([0 41]), 0 FF)
#9#0$
Namespace: from softcheck.mb_commands import MbFunc
Class contains static methods specially for the huber defined modbus functions
+, /($#0$6&$"3"%(%('4""
:7
Namespace: from softcheck.logic import ComStore
With this object data traces can be stored in a file.
E ample:
comstore = ComStore(filename + ".t t")
com.send("TI?\r\n")
com.store_string(comstore, "TI?\r\n")
com.store_answer(comstore)
store_string:
This command saves a arbitrary string in a file maintained by the ComStore object.
com.store_string(comstore, "TI?\r\n")
store_answer:
This command saves the answer from a device in a file maintained by the ComStore ob-
ject.
com.store_answer(comstore)
! "#""$%&'("&"$&)''

"#""$%&'("&"$&)'' +,
Other manuals for Pilot ONE
4
Table of contents