如何使用cpppo写入compactlogix plc?

问题描述:

我对编程非常陌生,所以请耐心等待。我正在尝试使用覆盆子pi 3与L35E compactlogix进行通信来制作小型HMI程序。我已经使用C#编写的visual studio express。这是我第一次使用覆盆子。我已经在网上阅读,python运作得很好。我还在学习我周围的Python和Linux的方式,但发现网上的代码,我可以使用此代码从PLC读取标签:如何使用cpppo写入compactlogix plc?

from __future__ import print_function 

from cpppo.history import timestamp 

from cpppo.server.enip import client 

host = "10.10.10.48" 

tags = [ "Bit1", "Bit2", "Timer.PRE" ] 

with client.connector(host=host) as conn: 

    for index,descr,op,reply,status,value in conn.pipeline(
      operations=client.parse_operations(tags), depth=2): 
     print("%s: %20s: %s" % (timestamp(), descr, value)) 

我承认我只是在孔复制这一点,我可以找到我所想的一切。我知道这其中的大部分内容,但我无法在网上找到很多关于cpppo的信息,也无法知道如何写入标签。任何帮助将非常感激。

要启动一个最小的“模拟”的CompactLogix PLC主机的一些标签:

$ python -m cpppo.server.enip -v real=REAL reals=REAL[100] dint=DINT dints=DINT[100] 

现在,读/写一些标签,我会建议使用cpppo.server.enip.get_attribute“代理” API ,因为它可能是读/写*的Logix PLC的最简单快捷的方式:

$ python 
>>> from cpppo.server.enip.get_attribute import proxy 
>>> with proxy("localhost") as via: 
... list(via.write(["dint=10","dint","reals[0-3]","reals[1]=1.234","reals[0-3]","reals[1]=4.567"],"reals[0-3]")) 
... 
     dint=10 == True 
      dint == 10 
     reals[0-3] == 0.0, 4.56699991226, 0.0, 0.0 
    reals[1]=1.234 == True 
     reals[0-3] == 0.0, 1.23399996758, 0.0, 0.0 
    reals[1]=4.567 == True 
[True, [10], [0.0, 4.566999912261963, 0.0, 0.0], True, [0.0, 1.2339999675750732, 0.0, 0.0], True] 
>>> 

请注意,这不会与MicroLogix的PLC(或简单的,非路由CIP设备,如Allen-Bradley公司的PowerFlex工作);对于这些,请使用proxy_simple类。例如,请参阅cpppo/server/enip/ab.py。