init
This commit is contained in:
commit
b03a7cc1fe
12
Pipfile
Normal file
12
Pipfile
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[[source]]
|
||||||
|
name = "pypi"
|
||||||
|
url = "https://pypi.org/simple"
|
||||||
|
verify_ssl = true
|
||||||
|
|
||||||
|
[dev-packages]
|
||||||
|
|
||||||
|
[packages]
|
||||||
|
minimalmodbus = "*"
|
||||||
|
|
||||||
|
[requires]
|
||||||
|
python_version = "3.7"
|
||||||
36
Pipfile.lock
generated
Normal file
36
Pipfile.lock
generated
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"_meta": {
|
||||||
|
"hash": {
|
||||||
|
"sha256": "d358730ee44b90784a6f9963013552670e5e6dec3c8d7bb5d885ce3e568ca43a"
|
||||||
|
},
|
||||||
|
"pipfile-spec": 6,
|
||||||
|
"requires": {
|
||||||
|
"python_version": "3.7"
|
||||||
|
},
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"name": "pypi",
|
||||||
|
"url": "https://pypi.org/simple",
|
||||||
|
"verify_ssl": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"minimalmodbus": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:5c55b1e26131e1f3b7fe55b950f8abb8a2396b77f73bc0a513cc3ef0051db526",
|
||||||
|
"sha256:ae979fa98887185d6ba9389e84038d49580a39241d969d098331ac225dd1b9ff"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==1.0.2"
|
||||||
|
},
|
||||||
|
"pyserial": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:6e2d401fdee0eab996cf734e67773a0143b932772ca8b42451440cfed942c627",
|
||||||
|
"sha256:e0770fadba80c31013896c7e6ef703f72e7834965954a78e71a3049488d4d7d8"
|
||||||
|
],
|
||||||
|
"version": "==3.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"develop": {}
|
||||||
|
}
|
||||||
77
app.py
Normal file
77
app.py
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
'''
|
||||||
|
The app will try to start charging
|
||||||
|
and show the DC bus voltage, battery voltage and charging current
|
||||||
|
stop charging in 30 seconds
|
||||||
|
'''
|
||||||
|
from minimalmodbus import Instrument, MODE_RTU
|
||||||
|
import serial
|
||||||
|
import time
|
||||||
|
|
||||||
|
VERSION = '0.1.0'
|
||||||
|
UNIT = 16
|
||||||
|
|
||||||
|
MODBUS_FC_READ_SINGLE_COIL = int("0x01", 16)
|
||||||
|
MODBUS_FC_READ_SINGLE_DISCRETE = int("0x02", 16)
|
||||||
|
MODBUS_FC_READ_HOLDING_REGISTERS = int("0x03", 16)
|
||||||
|
MODBUS_FC_READ_INPUT_REGISTERS = int("0x04", 16)
|
||||||
|
MODBUS_FC_WRITE_SINGLE_REGISTER = int("0x06", 16)
|
||||||
|
|
||||||
|
enable_charger_address = 0
|
||||||
|
dc_bus_voltage_adddress = 30
|
||||||
|
batery_voltage_address = 32
|
||||||
|
current_address = 31
|
||||||
|
|
||||||
|
def run():
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(description='xnergy charger control demo')
|
||||||
|
|
||||||
|
parser.add_argument('port', type=str,
|
||||||
|
help='The serial port(RS485) that connect to xnergy RCU')
|
||||||
|
|
||||||
|
# parser.add_argument('-P', '--parallel', type=int, nargs='*', choices=(17, 18, 19),
|
||||||
|
# help='set to parallel mode, parameter is the unit id, can be used multiple times')
|
||||||
|
|
||||||
|
parser.add_argument('-v', '--verbose', action='count', default=0,
|
||||||
|
help='verbose mode, show more information')
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
instrument = Instrument(port=args.port, mode=MODE_RTU, slaveaddress=UNIT)
|
||||||
|
instrument.serial.baudrate = 9600
|
||||||
|
# start charging
|
||||||
|
instrument.write_bit(registeraddress=enable_charger_address, value=1)
|
||||||
|
print('Start Charging, will stop charging in 30 seconds')
|
||||||
|
|
||||||
|
counter = 0
|
||||||
|
while True:
|
||||||
|
dc_bus_voltage = instrument.read_registers(registeraddress=dc_bus_voltage_adddress, number_of_registers=1,
|
||||||
|
functioncode=MODBUS_FC_READ_INPUT_REGISTERS)
|
||||||
|
batery_voltage = instrument.read_registers(registeraddress=batery_voltage_address, number_of_registers=1,
|
||||||
|
functioncode=MODBUS_FC_READ_INPUT_REGISTERS)
|
||||||
|
current = instrument.read_registers(registeraddress=current_address, number_of_registers=1,
|
||||||
|
functioncode=MODBUS_FC_READ_INPUT_REGISTERS)
|
||||||
|
|
||||||
|
print(
|
||||||
|
str(counter) + ' '
|
||||||
|
'DC BUS voltage: ' + str(dc_bus_voltage) + ' '
|
||||||
|
'Battery voltage: ' + str(batery_voltage) + ' '
|
||||||
|
'Current: ' + str(current)
|
||||||
|
, end='\r', flush=True)
|
||||||
|
|
||||||
|
counter += 1
|
||||||
|
if counter > 30:
|
||||||
|
break
|
||||||
|
time.sleep(1)
|
||||||
|
print()
|
||||||
|
|
||||||
|
# stop charging
|
||||||
|
instrument.write_bit(registeraddress=enable_charger_address, value=0)
|
||||||
|
print('Stop Charging')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
run()
|
||||||
Loading…
x
Reference in New Issue
Block a user