Reading OPC Values from AB PLC

jojoguy10

Member
Join Date
Feb 2022
Location
Anderson, SC
Posts
3
I have an OPC server running that signals when a break is happening for the shift. The OPC servis and the PLC are both connected to our Ignition SCADA software. I want to have my PLC be aware of when a break is happening to perform different functions (i.e. turning a light a different color). I'm aware that Ignition can write to the PLC tags directly, but I don't want to have to send out a status signal for every PLC when we start getting more systems running. I would rather have the PLC "ping" the OPC tag to get the status.

Is there a way for a PLC to read an OPC server tag?

I'm running a CompactLogix L16ER PLC with no extra modules.

Thanks!
 
You want each PLC to be aware that its not talking to Ignition anymore ? Is that the goal?
Either find a changing value that is being sent to each PLC (SCADA Master Time perhaps) and monitor that for changes, or create a random number generator in Ignition and send that.
I imagine using sockets you might be able to read from an OPC client, but that's a lot of work for this kind of test.
 
You want each PLC to be aware that its not talking to Ignition anymore ?

No, he is asking for every PLC to access a single item in an OPC server. He does not say which flavor of OPC. In essence, every PLC be configured as an OPC client, subscribe to a single item in an OPC server, all PLCs access the same item, so all PLCs know the employees are on a "break".
 
Last edited:
I could wrong but I think the OP is misunderstanding how the system works.

1. OPC only respond to OPC client. PLC can't (typically) be a OPC client.
2. Ignition doesn't write to PLC "directly", it goes through the OPC. Ignition is an OPC client. It will ask the OPC to do task for it, like reading and writing to the PLC.

I'm not really understanding the question. What is keeping track of the break? the PLC or some PC based system? If it's some other system or Ignition, then you need a script in Ignition to write that info to the PLC (through OPC)
 
i could wrong but i think the op is misunderstanding how the system works.

1. Opc only respond to opc client. Plc can't (typically) be a opc client.
2. Ignition doesn't write to plc "directly", it goes through the opc. Ignition is an opc client. It will ask the opc to do task for it, like reading and writing to the plc.

I'm not really understanding the question. What is keeping track of the break? The plc or some pc based system? If it's some other system or ignition, then you need a script in ignition to write that info to the plc (through opc)
+1
 
Some other brands of logic controllers have built in OPC Server or Client functions onboard, but Rockwell never has. They stick with individual or optimized tag read/write functions, and leave OPC to the SCADA/HMI/ERP systems.

If I had an OPC Server as part of my timekeeping or resource planning system and needed to distribute its data around to various PLCs, I might choose an "OPC Mirror". Such utilities can act as an OPC Client reading from an OPC Server, then use their PLC protocol drivers to write to multiple PLCs.

Ignition can surely be configured to perform that function too.

In the very rare circumstances where a PLC used a Message instruction to communicate with an OPC Server, I've seen it called an "Unsolicited Topic". Kepware had this feature where an A-B PLC could use PLC-2 style data table reads and writes to communicate with an OPC Server that was then being polled by other OPC Clients. It was really a way to reduce network traffic on low-capacity network links and I don't think it applies to the application as described in jojoguy10's original post.

If you gave this to me as a "do this without touching Ignition, the OPC Server, or the PLC programs" then I would plop a Raspberry Pi onto a DIN rail and start configuring Node-Red node-red-contrib-opc-da items, and imagining the looks on the faces of my successors wondering "where the hell is this data coming from ?".
 
Thanks for all of the replies! Let me try to clarify my situation.

Yes, we're using Ignition as our SCADA and Ignition talks to the AB PLCs with the Ignition driver (I believe through OPC UA). We have a separate system that keeps track of the schedule (i.e. when a break is happening and what shift is currently working, etc.) It's basically an Andon board system. That system runs an OPC server that Ignition can talk to via OPC DA.

My question is (and it may have already been answered by harryting), can an AB PLC read from the Andon board system so that each PLC can know when a break is happening (a simple bit or something like that)? It sounds like AB PLCs can't act as OPC clients, just servers, but let me know if I'm wrong. If that's the case, I'll go with having Ignition send out a bit or random number to each individual PLC of when a break is happening.

Thanks!
 
I am thinking that you would need to setup an OPC connection to each PLC anyway, and test that each connection works.
What could be more fitting than having a standard interface that broadcasts basic data to all PLCs. In this way you test the connection, which you have to do anyway, and you get the desired shift or break info to all PLCs.

edit, this coud also be used to distribute a central time. Which is very important to sync data logs, error logs etc.
 
Since the Ignition system has an OPC client, perhaps Ignition could run a minimal TCP (or UDP?) socket server process and the AB PLCs could all use the same bespoke AIO socket client to query that break socket server that Ignition is running.

In fact, since "break" a boolean, could the Ignition system run the socket server only when the break is active? That simplifies the AOI which would then not need to actually read anything, and it could return 1 when the connection is made, and return 0 if there is an error i.e. the connection is refused.

BRK => port 21811 (B=2; R=18; K=11).

Pie in the sky, I know, but at least that way each PLC is dependent only on the Ignition and Andon systems.
 
I did it long time ago with FTVIEW SE, we had an OPC server from Videojet called clarinet , when a video jet printer change printing due to production requirements , we received that info from clarinet and ftview se passed that info to a compact logix , then that compact logix read barcodes that were being printed by video jet printer. This way our inventory was correct. and we knew when the change was done. The printing code used by clarinet was the same as the code read by the compact logix.
If I can remain this was called indirect tags.
 
Last edited:

Similar Topics

I have searched and searched, and can't find what I am looking for. I have a Kepware OPC server, with the manufacturing suite license installed...
Replies
9
Views
2,948
Is there a way to get a Red Lion Graphite panel to read from Kepware? I know they have OPCworx but they tell me that just talks between RedLion...
Replies
5
Views
2,707
Hello guys , i'm stuck and can't figure out how to make a communication between foxrtu station (soft to configure FOXBORO SCD2200 RTU with...
Replies
1
Views
1,988
Currently, we are using RSLinx OEM for an OPC server and connecting to an L35 CompactLogix. I am reading correct data for some tags in the...
Replies
2
Views
5,043
I'm in the beginning processes of creating an app in C# and want to be able to view tag names in an AB compact logix. Is there a way I can do this...
Replies
3
Views
3,173
Back
Top Bottom