59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
from cpppo.server.enip.get_attribute import proxy_simple
|
|
import logging
|
|
|
|
class VFD_COMM(proxy_simple):
|
|
'''A simple (non-routing) CIP device with one parameter with a
|
|
shortcut name: 'A Sensor Parameter' '''
|
|
PARAMETERS = dict(proxy_simple.PARAMETERS,
|
|
at_reference = proxy_simple.parameter('@0x2A/1/3', 'BOOL', "I/O"),
|
|
net_ref = proxy_simple.parameter('@0x2A/1/4', 'BOOL', "I/O"),
|
|
drive_mode = proxy_simple.parameter('@0x2A/1/6', 'SINT', "mode"),
|
|
speed_actual = proxy_simple.parameter('@0x2A/1/7', 'INT', "Hz"),
|
|
speed_ref = proxy_simple.parameter('@0x2A/1/8', 'INT', "Hz"),
|
|
torque_actual = proxy_simple.parameter('@0x2A/1/0x0B', 'INT', "Nm"),
|
|
torque_ref = proxy_simple.parameter('@0x2A/1/0x0C', 'INT', "Nm"),
|
|
speed_scale = proxy_simple.parameter('@0x2A/1/0x16', 'SINT', "Nm"),
|
|
torque_scale = proxy_simple.parameter('@0x2A/1/0x18', 'SINT', "Nm"),
|
|
ref_from_net = proxy_simple.parameter('@0x2A/1/0x1D', 'BOOL', "I/O")
|
|
)
|
|
|
|
|
|
class Vacon100:
|
|
def __init__(self, ip_address):
|
|
self.ip_address = ip_address
|
|
self.cpppo_proxy = VFD_COMM(ip_address)
|
|
|
|
def read_ACDCDriveOBj(self):
|
|
try:
|
|
vals_wanted = [
|
|
"At Reference",
|
|
"Net Ref",
|
|
"Drive Mode",
|
|
"Speed Actual",
|
|
"Speed Ref",
|
|
"Torque Actual",
|
|
"Torque Ref",
|
|
"Speed Scale",
|
|
"Torque Scale",
|
|
"Ref From Net"
|
|
]
|
|
params = self.cpppo_proxy.parameter_substitution(vals_wanted)
|
|
vals = self.cpppo_proxy.read(params)
|
|
val_list = list(vals)
|
|
for x in range(0, len(vals_wanted)):
|
|
print("{}: {}".format(vals_wanted[x], val_list[x][0]))
|
|
return(vals)
|
|
except Exception as exc:
|
|
logging.warning("Access to remote CIP device failed: %s", exc)
|
|
self.cpppo_proxy.close_gateway(exc=exc)
|
|
raise
|
|
|
|
|
|
def main():
|
|
vacon_100 = Vacon100("192.168.1.11")
|
|
print(vacon_100.read_ACDCDriveOBj())
|
|
|
|
if __name__ == '__main__':
|
|
import sys
|
|
sys.exit(int(main() or 0))
|