python的plc通讯库

pycomm的Python项目详细描述


Pycomm是一个包,其中包括一组用于与可编程逻辑控制器通信的模块。 目前,软件包中的第一个模块是AB-Comm。

测试

库当前正在python 2.6、2.7上进行测试

https://travis-ci.org/ruscito/pycomm.svg?branch=master

设置

该软件包可以从

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是根据麻省理工学院的许可证发行的

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android:收到无声短信?   java Android清单内部类应使用$,而不是   是否有方法使用java客户端从Amqp 0.9.1 RabbitMq代理获取绑定到队列的所有头?   比较2个int数组中匹配的数字   java如何模拟可选的自动连接字段   java在第一次尝试保存数据后,在关闭程序后无法打开   批处理文件重命名–从列表中插入文本(在Python或Java中)   递归如何在Java中递归地附加两个链表?   java EditText在特定Android设备上不起作用   序列化Java序列化:每个文件一个对象   java AES CTR如何附加到CipherOutputStream?   java Apache Commons CSV不会忽略缺少的列   java查询bean为空,如何让它填充?   java BEAM:ORACLE连接器:数字数据类型:非法参数类型异常   tomcat7 java远程调试Tomcat应用程序:为什么JVM不监听?   底部表单中的java应用程序流,带有片段   Android中txt文件数据与输入字符串的java比较   java将多个JAR上载到gradle中的repo   java会话。getAttribute在禁用Cookie时返回null   java如何向ImageView添加项目列表