Annexure E: Python Code Examples - Camax Powercom3 User Manual

Undercover modbus unit
Table of Contents

Advertisement

Annexure E: Python Code Examples

readInstrumentation.py
import sys
import getopt
import struct
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
def getFloatBigEndian(client,unit, address):
regs = client.read_input_registers(address=address, count=2, unit=unit).registers
ii = regs[0] * 0x10000 + regs[1]
f = struct.unpack('f', struct.pack('I', ii))
return f[0]
def getFloatArray(client,unit,address,count):
values = []
startAddress = address
for i in xrange(0, count):
f = getFloatBigEndian(client=client,unit=unit, address=startAddress)
values.append(f)
startAddress = startAddress + 2;
return values
if name == ' main ':
labels = ['Ptot', 'Pa', 'Pb', 'Pc', 'Qtot', 'Qa', 'Qb', 'Qc', 'Stot', 'Sa', 'Sb', 'Sc', 'IaMag', 'IbMag', 'IcMag', 'Freq', 'Va', 'Vb', 'Vc', 'PFtot',
'PFa', 'PFb', 'PFc', 'IaAng', 'IbAng', 'IcAng', 'VaAng', 'VbAng', 'VcAng']
optlist, arglist = getopt.getopt(sys.argv[1:], 'p:a:')
serialPort = None
address = None
for option, value in optlist:
if option == '-p':
elif option == '-a':
if serialPort is None or address is None:
print "Usage: python readInstrumentation.py -p <serial port> -a <modbus address>"
sys.exit()
client = ModbusClient(method='rtu', port=serialPort, parity='N', baudrate=9600, timeout=0.1)
values = getFloatArray(client=client,unit=address, address=100, count=29)
for ndx in range(len(values)):
print labels[ndx], '\t', values[ndx]
serialPort = str(value)
address = int(value)
Page 17

Advertisement

Table of Contents
loading

Table of Contents