Using a source input to read a source output

I have ran into a situation that requires the expertise of the Arduino hobbyists, even though this is not particularly an Arduino question. I just find these forums to be fantastic at answering questions!

So, onward we go.

I have a PLC that has inputs that are sourcing (24VDc, .5mA).

I need to detect a couple things with these inputs:
(1). That a pin is at 24VDC (it is actually wired to the same power supply that runs the PLC).
(2). That a mechanical relay has closed. When the relay is closed the wire downstream of the relay is at 24VDC (the input to the relay is connected to the same power supply.

How can I measure these 2 situations with the sourcing inputs. If i hook them directly to that which i want to monitor they simply always read 24VDC (from themselves or from the thing i am trying to measure), so I was thinking, "a transistor."

I have attached a diagram of what I think might work. If you agree that this is the right approach, any suggestions on an actual transistor that i should use?

Thanks for teaching this fool!

You are correct that as a sourcing input, relaying the pin to ground would close the loop and change the input from high to low. Unfortunately though, I cannot simply do that. This device exists to test to an electrical control panel and confirm that this other panel is wire correctly. Some of the lines that are to be tested read either 0 or 24V (these lines I am testing are themselves sources due to the nature of the panel I am testing).

If I wire the input channel on the PLC to the channel on the electrical board i am looking to read, the voltage at the PLC input pin remains high (as there is no sink). That is why I was thinking of using a transistor as a switch in which the PLC input shorts to ground when the transistor's base is powered (from the control panel circuit I am testing).

I apologize for the confusion and appreciate your willingness to try and help me despite my lack of clarity.

First, to respond to your understanding of what I said:
A) Yes, I do have a system I am monitoring. It is a rather complex control panel.
B) System M does have nodes that are either 24VDC or 0. The system I am monitoring has it's own PLC in it. The nodes I am monitoring are the outputs of that PLC.
C). Yes, I am using a PLC ("P") that are internally pulled up to 24VDC.
D). Yes, you are understanding correctly. As I wired it up I found that whether or not the system "M" is outputting 24VDC or 0VDC the plc "P" inputs read 24VDC. This is, I believe, because both of them are pulled up and there is no path to ground.
E). There is a typo in the drawing. That is intended to be 24VDC. It is the power supply used to power the PLC "P" as well as the system "M".
F). The transistor is my best guess at what I can use to deal with the problem that should up in D. It provides a method to pull down the "P" input and uses the node from "M" that really I want to sense as the Base for the transistor.
G&H). You are correct. That relay is part of system "M" and is activated or not by a different mess of events. In essence, that is what I am attempting to detect is either open or closed.

1)The connections at the bottom of the PLC are the power connection into the PLC (V+ and GND).
2). The relay is controlled by "M" "has a set of it's own inputs that it is sensing, performing logic upon and then opening or closing the relay.
3). The 2VDC should be 24VDC and it powers pretty much everything, the PLC "P", the system "M", and is the power passing through the relay.
4). I cannot put the relay in place between the P input and ground because the relay is embedded in system "M". The only reason I showed the relay was because I didn't know if I needed a diode across it (to protect the transistor) and/or if I need a resistor between the power supply and the base of the transistor.

5). Are they sharing ground? Well, some of the inputs are. Others are not. However, I could change things a little and make them share the same ground if it helps.

As for your final comment, I did not build the system with a transistor at all. However, I did not realize that the PLC input was internally pulled up (sourcing), I thought it was a "sink" or internal pulled down. The issue I have is that I cannot change the system "M" whose nodes can only be monitored by a "sinking" input channel in P. Since I am stuck with internal pulled up inputs in P, I am looking to build a little circuit that can deal with this. My ide was using a transistor as a switch, but need to know if i require any resistors, diodes, etc to prevent causing some sort of damage or failure.


I have redrawn the specific question. We are getting off-track I think.

New Drawing.jpg

I understand that the top won't work. That is the point of the whole question. That is what i currently have. I CANNOT change the bottom line to ground. It MUST be 24VDC+. The question is what to add in the yellow box to make it the input node A will change from 24VDC to 0 when the switch is closed.

The bottom circuit is my best guess as to what might work. The question I really need answered is, can I use a transistor as a switch that grounds the input node (A), when the switch (between B and C) is closed? and do i need a resistor somewhere? Nevermind why it closes.

My concern is that without a resistor in between the switch and the transistor, the transistor could pull too much current.

I understand it is confusing but I really don't want to give you the entire circuit diagram because it includes literally hundreds and hundreds of elements. It is only this one silly little problem that i need resolved.