python的plc通讯库
pycomm的Python项目详细描述
Pycomm是一个包,其中包括一组用于与可编程逻辑控制器通信的模块。 目前,软件包中的第一个模块是AB-Comm。
设置
该软件包可以从
Github:
git clone https://github.com/ruscito/pycomm.git cd pycomm sudo python setup.py install
PYPI:
pip install pycomm
AB U通信
ab_comm是一个模块,它包含一组类,用于使用以太网/ip协议连接罗克韦尔可编程逻辑控制器。 “CLX”类可用于与CompactLogix、ControlLogix PLC通信 “SLC”可用于与Micrologix或SLC可编程逻辑控制器通信
我试图遵循cip规范第1卷和第2卷以及Rockwell Automation Publication 1756-PM020-EN-P - November 2012。
有关与ControlLogix PLC的通信,请参阅以下代码段:
from pycomm.ab_comm.clx import Driver as ClxDriver import logging if __name__ == '__main__': logging.basicConfig( filename="ClxDriver.log", format="%(levelname)-10s %(asctime)s %(message)s", level=logging.DEBUG ) c = ClxDriver() if c.open('172.16.2.161'): print(c.read_tag(['ControlWord'])) print(c.read_tag(['parts', 'ControlWord', 'Counts'])) print(c.write_tag('Counts', -26, 'INT')) print(c.write_tag(('Counts', 26, 'INT'))) print(c.write_tag([('Counts', 26, 'INT')])) print(c.write_tag([('Counts', -26, 'INT'), ('ControlWord', -30, 'DINT'), ('parts', 31, 'DINT')])) # To read an array r_array = c.read_array("TotalCount", 1750) for tag in r_array: print (tag) # reset tha array to all 0 w_array = [] for i in xrange(1750): w_array.append(0) c.write_array("TotalCount", "SINT", w_array) c.close()
有关与Micrologix plc的通信,请参阅以下代码片段:
from pycomm.ab_comm.slc import Driver as SlcDriver import logging if __name__ == '__main__': logging.basicConfig( filename="SlcDriver.log", format="%(levelname)-10s %(asctime)s %(message)s", level=logging.DEBUG ) c = SlcDriver() if c.open('172.16.2.160'): print c.read_tag('S:1/5') print c.read_tag('S:60', 2) print c.write_tag('N7:0', [-30, 32767, -32767]) print c.write_tag('N7:0', 21) print c.read_tag('N7:0', 10) print c.write_tag('F8:0', [3.1, 4.95, -32.89]) print c.write_tag('F8:0', 21) print c.read_tag('F8:0', 3) print c.write_tag('B3:100', [23, -1, 4, 9]) print c.write_tag('B3:100', 21) print c.read_tag('B3:100', 4) print c.write_tag('T4:3.PRE', 431) print c.read_tag('T4:3.PRE') print c.write_tag('C5:0.PRE', 501) print c.read_tag('C5:0.PRE') print c.write_tag('T4:3.ACC', 432) print c.read_tag('T4:3.ACC') print c.write_tag('C5:0.ACC', 502) print c.read_tag('C5:0.ACC') c.write_tag('T4:2.EN', 0) c.write_tag('T4:2.TT', 0) c.write_tag('T4:2.DN', 0) print c.read_tag('T4:2.EN', 1) print c.read_tag('T4:2.TT', 1) print c.read_tag('T4:2.DN',) c.write_tag('C5:0.CU', 1) c.write_tag('C5:0.CD', 0) c.write_tag('C5:0.DN', 1) c.write_tag('C5:0.OV', 0) c.write_tag('C5:0.UN', 1) c.write_tag('C5:0.UA', 0) print c.read_tag('C5:0.CU') print c.read_tag('C5:0.CD') print c.read_tag('C5:0.DN') print c.read_tag('C5:0.OV') print c.read_tag('C5:0.UN') print c.read_tag('C5:0.UA') c.write_tag('B3:100', 1) print c.read_tag('B3:100') c.write_tag('B3/3955', 1) print c.read_tag('B3/3955') c.write_tag('N7:0/2', 1) print c.read_tag('N7:0/2') print c.write_tag('O:0.0/4', 1) print c.read_tag('O:0.0/4') c.close()
未来
这个包正在开发中。 模块“ab_comm.clx”和“ab_comm.slc”目前已完成,但将来还将添加其他驱动程序。
谢谢
提前感谢您的反馈和建议
许可证
Pycomm是根据麻省理工学院的许可证发行的