mirror of
				https://github.com/stargieg/bacnet-stack
				synced 2025-10-26 23:35:52 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			190 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| BACnet Tools are binary demo application command line
 | |
| utilities that use BACnet/IP to perform a variety of
 | |
| BACnet services. Some tools use BACnet WhoIs to bind to
 | |
| devices, but can also use a static binding file address_cache.
 | |
| 
 | |
| Most of the tools have help (--help option), and use
 | |
| environment variables to configure the datalink.
 | |
| 
 | |
| The Client Tools use WhoIs to bind to target devices.
 | |
| The WhoIs can be eliminated by using the address_cache
 | |
| file, which is read by each client tool from the current
 | |
| working directory.  Having the device address from the
 | |
| address_cache file will greatly improve the throughput
 | |
| and speed of the client tools. The address_cache file
 | |
| can be generated using the standard output of the bacwi tool.
 | |
| 
 | |
| EXAMPLE:
 | |
| bacwi -1 > address_cache
 | |
| 
 | |
| Client Tools
 | |
| ------------
 | |
| bacarf - BACnet AtomicReadFile service
 | |
| bacawf - BACnet AtomicWriteFile service
 | |
| bacdcc - BACnet DeviceCommunicationControl service
 | |
| bacepics - BACnet EPICS for Device object.
 | |
| bacrd - BACnet ReinitializeDevice service
 | |
| bacrp - BACnet ReadProperty service
 | |
| bacrpm - BACnet ReadPropertyMultiple service
 | |
| bacscov - BACnet SubscribeCOV service
 | |
| bacts - BACnet TimeSynchronization service
 | |
| bacucov - BACnet UnconfirmedChangeOfValue service
 | |
| bacupt - BACnet UnconfirmedPrivateTransfer service
 | |
| bacwh - BACnet WhoHas service
 | |
| bacwi - BACnet WhoIs service
 | |
| bacwp - BACnet WriteProperty service
 | |
| 
 | |
| Server Tools
 | |
| ------------
 | |
| bacserv - BACnet Device Simulator
 | |
| 
 | |
| Router Tools
 | |
| ------------
 | |
| baciamr - BACnet I-Am-Router to Network message
 | |
| bacinitr - BACnet Initialize Router message
 | |
| bacwir - BACnet Who-Is Router to Network message
 | |
| 
 | |
| MS/TP Tools
 | |
| ------------------
 | |
| mstpcap - a tool that is used for capturing MS/TP traffic
 | |
| from an RS-485 serial adapter and saving the packets
 | |
| in a file for viewing by Wireshark.
 | |
| 
 | |
| mstpcrc - calculates Header CRC or Data CRC for ascii hex or decimal input.
 | |
| Optionally takes the input and saves it to a PCAP format file for viewing
 | |
| in Wireshark.
 | |
| 
 | |
| Environment Variables
 | |
| ---------------------
 | |
| BACNET_APDU_TIMEOUT - set this value in milliseconds to change
 | |
|     the APDU timeout.  APDU Timeout is how much time a client
 | |
|     waits for a response from a BACnet device. Default is 3000ms.
 | |
| 
 | |
| BACNET_APDU_RETRIES - indicate the maximum number of times that
 | |
|     an APDU shall be retransmitted.
 | |
| 
 | |
| BACNET_IFACE - set this value to dotted IP address (Windows) of
 | |
|     the interface (see ipconfig command on Windows) for which you
 | |
|     want to bind.  On Linux, set this to the /dev interface
 | |
|     (i.e. eth0, arc0).  Default is eth0 on Linux, and the default
 | |
|     interface on Windows.  Hence, if there is only a single network
 | |
|     interface on Windows, the applications will choose it, and this
 | |
|     setting will not be needed.
 | |
| 
 | |
| BACNET_IP_PORT - UDP/IP port number (0..65534) used for BACnet/IP
 | |
|     communications.  Default is 47808 (0xBAC0).
 | |
| 
 | |
| BACNET_BBMD_PORT - UDP/IP port number (0..65534) used for Foreign
 | |
|     Device Registration.  Defaults to 47808 (0xBAC0).
 | |
| 
 | |
| BACNET_BBMD_TIMETOLIVE - number of seconds used in Foreign Device
 | |
|     Registration (0..65535). Defaults to 60000 seconds.
 | |
| 
 | |
| BACNET_BBMD_ADDRESS - dotted IPv4 address of the BBMD or Foreign Device
 | |
|     Registrar.
 | |
| 
 | |
| Example Usage
 | |
| -------------
 | |
| You can communicate with the virtual BACnet Device by using the other BACnet
 | |
| command line tools.  If you are using the same PC, you can use BBMD/FD
 | |
| (Foreign Device registration) to do this - use the bvlc script.  You can
 | |
| monitor the interaction and bytes on the wire using Wireshark.  Here is
 | |
| an example usage for Window and for Linux.
 | |
| 
 | |
| Windows
 | |
| -------
 | |
| The BACnet tools are used from the Command Prompt, or CMD.EXE.
 | |
| From the command prompt window, start the simulated BACnet device:
 | |
| c:\> bacserv 1234
 | |
| 
 | |
| From another command prompt window, use ipconfig to determine the
 | |
| network interface IP address that bacserv is using:
 | |
| c:\> ipconfig
 | |
| 
 | |
| Use the default IP address to configure the BBMD and Foreign Device
 | |
| environment variables:
 | |
| c:\> bvlc.bat 192.168.0.42
 | |
| 
 | |
| bvlc.bat batch file configures environment variables to use BACnet/IP
 | |
| port 47809 for any subsequent BACnet tools run from that command prompt window,
 | |
| and enables the BBMD Foreign Device Registration.
 | |
| 
 | |
| Perform a device discovery:
 | |
| c:\> bacwi -1
 | |
| 
 | |
| Read all the required properties from the Device 1234 and display their values:
 | |
| c:\> bacepics -v 1234
 | |
| 
 | |
| Read the Object_Identifier property from the Device 1234:
 | |
| c:\> bacrp 1234 8 1234 75
 | |
| 
 | |
| Write 100.0 (REAL=4 datatype) to Device 1234 Analog Output (1) One (1)
 | |
| at priority 16 with no index (-1).
 | |
| c:\> bacwp 1234 1 1 85 16 -1 4 100.0
 | |
| 
 | |
| Each tool has help:
 | |
| c:\> bacrp --help
 | |
| 
 | |
| Linux
 | |
| -----
 | |
| To use the tools from the command line, you need to use the path to the command,
 | |
| or include the path in your PATH environment variable.  The dot "." means current
 | |
| directory.  The "/" is used to separate directories. "./" means the path starts
 | |
| from the current directory.
 | |
| 
 | |
| When the tools are built from the Makefile, they are copied to the bin/ directory.
 | |
| So from the root of the project you could run the tools like this using a terminal
 | |
| window:
 | |
| $ make clean all
 | |
| $ ./bin/bacserv 1234
 | |
| 
 | |
| In another terminal window use ifconfig to determine the network interface IP
 | |
| address that bacserv is using:
 | |
| $ ifconfig
 | |
| 
 | |
| Use that address (likely from eth0) to configure the BBMD and Foreign Device
 | |
| environment variables:
 | |
| $./bin/bvlc.sh 192.168.0.42
 | |
| bvlc.sh script configures environment variables to use BACnet/IP
 | |
| port 47809 for any subsequent BACnet tools run from that shell,
 | |
| and enables the BBMD Foreign Device Registration.
 | |
| 
 | |
| Perform a device discovery:
 | |
| $ ./bin/bacwi -1
 | |
| 
 | |
| Read all the required properties from the Device 1234 and display their values:
 | |
| $ ./bin/bacepics -v 1234
 | |
| 
 | |
| Read the Object_Identifier property from the Device 1234:
 | |
| $ ./bin/bacrp 1234 8 1234 75
 | |
| 
 | |
| Write 100.0 (REAL=4 datatype) to Device 1234 Analog Output (1) One (1)
 | |
| at priority 16 with no index (-1).
 | |
| $ ./bin/bacwp 1234 1 1 85 16 -1 4 100.0
 | |
| 
 | |
| Each tool has help:
 | |
| $ ./bin/bacrp --help
 | |
| 
 | |
| Source Code
 | |
| -----------
 | |
| The source code and makefiles for the bacnet-tools is included in the
 | |
| BACnet Protocol Stack library and can be found at:
 | |
| http://bacnet.sourceforge.net/
 | |
| 
 | |
| The bacnet-tools source is located in bacnet-stack/demo/project where:
 | |
| bacarf - bacnet-stack/demo/readfile
 | |
| bacawf - bacnet-stack/demo/writefile
 | |
| bacdcc - bacnet-stack/demo/dcc
 | |
| bacepics - bacnet-stack/demo/epics
 | |
| bacrd - bacnet-stack/demo/reinit
 | |
| bacrp - bacnet-stack/demo/readprop
 | |
| bacrpm - bacnet-stack/demo/readpropm
 | |
| bacscov - bacnet-stack/demo/scov
 | |
| bacts - bacnet-stack/demo/timesync
 | |
| bacucov - bacnet-stack/demo/ucov
 | |
| bacupt - bacnet-stack/demo/uptransfer
 | |
| bacwh - bacnet-stack/demo/whohas
 | |
| bacwi - bacnet-stack/demo/whois
 | |
| bacwp - bacnet-stack/demo/writeprop
 | |
| bacserv - bacnet-stack/demo/server
 | |
| etc. | 
