2016-09-20 49 views
1

私はプログラミングにとても慣れていますので、私にご負担ください。私はL35Eのコンパクトログと通信するためにラズベリーパイ3を使用して小さな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オンラインについてはあまり見つけられず、タグに書き込む方法を理解できません。どんな助けも非常に高く評価されるでしょう。

答えて

0

の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(または、そのようなアレン・ブラドリーのPowerFlexような単純な、非ルーティングCIPのデバイスでは動作しないことに注意してください);これらのためには、proxy_simpleクラスを使用します。例については、cpppo/server/enip/ab.pyを参照してください。

関連する問題