Simple APP to read and write data to ROCKWELL PLC (1756-A10/A)

試著忘記壹切 提交于 2020-01-03 05:43:14

问题


I'm looking for a simple way, if that's even possible, to make an app that can read/write to tags in a ROCKWELL PLC.

What I need is a simple window that allows me to type the PLC IP (they are all connected to the network) so I can connect to the device, a container that loads all the PLC current tags, and the ability to read and/or write to those tags.

I consider myself a beginner when it comes to PLC and Java programming, so I would like to know if guys can assist me somehow. I said JAVA because it's the programming language that I know a little, but it doesn't matter if there's another one that is better to use, like VBA.

The GUI isn't really the issue here, but to connect to the device and manipulate it's variables.


回答1:


If you know the Tag names in the Rockwell ControlLogix PLC, you can quickly read and write their values from a Python program (from Windows, Mac or Linux hosts), using https://github.com/pjkundert/cpppo. To install it, run, install Python 2 or 3, and run:

pip install cpppo pytz

Lets assume that your Rockwell ControlLogix PLC is at domain name "controller" in your local network (or, just use its IP address in host = "192.168.1.2" below), and that it contains a Tag named scada containing an array of 11 or more elements of CIP type INT:

from __future__ import print_function
from cpppo.history import timestamp
from cpppo.server.enip import client

host = "controller" # Or, simply use an IP address, eg: 192.168.1.2
tags = [ "scada[0-10]", "scada[1]=99", "scada[0-10]" ]

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 ))

Assuming that the Tag scada exists, you'll see something like:

2015-05-25 14:35:15.891: Single Read  Tag  scada[0-10]: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
2015-05-25 14:35:15.897: Single Write Tag  scada[1-1]: True
2015-05-25 14:35:15.915: Single Read  Tag  scada[0-10]: [0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0]

If you don't have a Rockwell ControlLogix PLC around, you can simulate one (for the purposes of reading/writing Tag data, at least), by running:

python -m cpppo.server.enip --print -v scada=INT[100]



回答2:


Here you can find a librairy which will allow you to communicate with a Rockwell PLC. (look at TuxPLC for more detail --> documentation is in french)

Here you will find an adaptation of TuxPLC in python (which is very simple to understand if you are a beginner)

https://github.com/gaynertechnical/python-tuxeip

Example of reading then writing data in PLC (Be carefull when you proceed to you test) Read carefully the documentation in TuxEip folder ( https://github.com/leicht/TuxPLC )




回答3:


I am familiar with two useful libraries in Python that allow connection to a PLC with tag writing and reading. They both work well and I have tried them out.

OpenOPC allows connection, tag reading and writing in a short Python program. It is best for Rockwell, assuming that you have Rockwell's RSLinx program running in the background to give your OPC server - make sure you use the same OPC topic to address tags in the PLC as what you set up on RSLinx. You will end up with something like:

import OpenOPC
opc_client = OpenOPC.client()
opc_client.connect('RS Linx Remote OPC Server')
result = opc_client.read('[OPC_topic]tag_name')  # read a tag
opc_client.write('[OPC_topic]tag_name', value)  # write a tag
opc_client.close()

If for some reason you can't use RSLinx, there's another way to do it in Python using pycomm:

from pycomm.ab_comm.clx import Driver
clx_driver = Driver()
clx_driver.open(ip_address)
result = clx_driver.read_tag(tag_name)  # read tag
clx_driver.write_tag(tag_name, value)  #write tag
clx_driver.close()

Hope this helps - I know you'd prefer an answer in Java, but Python is what I've done this with before. Hopefully someone else can come along with a Java-specific answer.



来源:https://stackoverflow.com/questions/25294373/simple-app-to-read-and-write-data-to-rockwell-plc-1756-a10-a

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!