Hi
I’m having a machine where I would like to extract production data from somehow. The machine is over 20 years old and at the HMI PC I can find a PVI Monitor which seems to be the link between the PLC and the HMI.
The PviMon.exe has version 1.53
I can see in the help for the PVI Monitor, that I have the following options to start a server that uses the PVI:
- OPC-Server
- DDE-Server
- WWDDE-Server
- Web Server
If I turn on logging from PviMon I can see entries like this:
>>> 07-09-2025 23:00:44.309 SvIntf.GetRequ S=0050 Pn=lnina2/com1//RHE_S_38 Svc=RD Dl=1 Offs=-1
>>> 07-09-2025 23:00:44.309 SvIntf.Accept S=0050 Pn=lnina2/com1//RHE_S_38 Svc=RD
>>> 07-09-2025 23:00:44.579 SvIntf.PutReadData S=0050 Pn=lnina2/com1//RHE_S_38 Len=1 Offs=0
. 00
>>> 07-09-2025 23:00:44.579 SvIntf.Quit S=0050 Pn=lnina2/com1//RHE_S_38 Svc=RD
My first try is the OPC-Server since this is what I’ve used for the same task on other machines, but for those it was OPC UA.
I’ve executed PviOPC.exe /RegServer as per the documentation
I can then launch PviOPC.exe but can’t connect to/find it.
!!!Apparently, I connected to some kind of PVI OPC server on this PC!!!
I successfully connect from another computer with kassl dOPC DA Client using COM (it finds the server automatically)
The OPC-Server is discovered as
B&R.PviOPC.2
BR PVI OPC DA _EA SERVER
However, I can not see any tags, except some default system tags.
This make sense, since I haven’t configured which tags that should be exposed on the OPC-Server.
This is where I need help.
I tried to configure (see below), but I don’t think I succeeded.
PN: @/Pvi
PD: LM=100 TC=15
PN: @/Pvi/LNINA2 OT=line
PD: CD=LnIna2
LD: EV=""
PN: @/Pvi/LNINA2/COM1 OT=device
PD: CD="/IF=Com1 /BD=57600 /RS=232 PA=2"
LD: EV=""
PN: @/Pvi/LNINA2/COM1/RHE_S_38 OT=pvar
PD: CD=PV1 RF=250 AT=RW
LD: VT=i32
From the PviMon’s log, I can see that PviOPC client attached and some “CreateRequ” & “CreateResp“ lines
>> 07-09-2025 23:00:42.557 Comm.ClientAttach CId=8b830004 Name=PviOPC.exe ComType=0 TC=15 TR=0 PT=0 LM=100
>> 07-09-2025 23:00:42.587 Comm.CreateRequ CId=8b830004 RId=80000001 Name='@Pvi/LNINA2' OT=Line PDesc=(CD=LnIna2) CDesc=() Msg=(NULL)
>> 07-09-2025 23:00:42.587 Comm.CreateResp C=009f RId=80000001 Msg=(CBA:100051a0,1)
>> 07-09-2025 23:00:42.587 Comm.CreateRequ CId=8b830004 RId=80000002 Name='@Pvi/LNINA2/COM1' OT=Device PDesc=(CD="/IF=Com1 /BD=57600 /RS=232 /PA=2") CDesc=() Msg=(NULL)
>> 07-09-2025 23:00:42.587 Comm.CreateResp C=00a0 RId=80000002 Msg=(CBA:100051a0,2)
>> 07-09-2025 23:00:42.587 Comm.CreateRequ CId=8b830004 RId=80000003 Name='@Pvi/LNINA2/COM1/RHE_S_38' OT=Pvar PDesc=(CD=PV1 RF=250 AT=rw) CDesc=(VT=i32 EV=) Msg=(CB:0041fb10,0)
>> 07-09-2025 23:00:42.587 Comm.CreateResp C=00a1 RId=80000003 Msg=(CBA:100051a0,3)
I don’t have access to the source-code of the PLC or HMI-application (written in Borland Delphi).
I have a few paradox db-files where I can detect some variables/tags and it looks like the tag in my examples above (RHE_S_38) is a boolean if that helps for the configuration.
Please advice me how to proceed further
Regards
Niclas Rådström