TOPCConnection - Exemples
| TOPCConnection = class (TObject) | Interface de TOPCConnection | Exemples de TOPCConnection |
uses SysUtils, OPCConnection, System.Info;
var strIPServeurOPC : String = '127.0.0.1:1341';
// ProgID du serveur OPC (fourni dans la documentation du serveur)
var strProgIDServeurOPC : String = 'ICONICS.SimulatorOPCDA.2';
// CommaText des variables OPC à requêter
var varList := new TStrings;
varList.Add('MaCategorie1.MonChamp1');
varList.Add('MaCategorie1.MonChamp2');
varList.Add('MaCategorie2.MonChamp1');
varList.Add('MaCategorie2.MonChamp2');
var timeout : Integer;
var opc : TOPCConnection;
// Exemples de lectures
timeout := SystemMilliseconds + 5000; // connection timeout = 5s
opc := TOPCConnection.Create(strIPServeurOPC, strProgIDServeurOPC, varList.CommaText);
// On attend un peu pour laisser à la connexion le temps de s'établir
while True do begin
Sleep(10);
if opc.ConnectedAndIdentified then
break;
if SystemMilliseconds > timeout then begin
ErrorDlg('Connexion impossible avec QubesRouter');
exit;
end;
end;
// On récupère les temps basés sur l'heure locale
opc.TimeStampMode:=tsmLocal;
// On demande au QubesRouteur de demander au serveur OPC de mettre à jour
// ses données concernant les variables qui nous intéressent
// (on laisse 1000 ms au serveur OPC pour sa mise à jour)
opc.Update(1000);
// Récupération des données du premier champ
var field := 'MaCategorie1.MonChamp1';
PrintLn(opc.ValueAsString(field));
PrintLn(opc.ValueTimeStamp(field));
PrintLn(opc.ValueQuality(field));
// On demande au QubesRouteur de maintenir sa connexion au serveur OPC
// sur ces variables pendant 60 secondes
opc.DisconnectKeepAlive(60);
//*******************************
// Exemples d'écritures
//*******************************
timeout := SystemMilliseconds + 5000; // connection timeout = 5s
opc := TOPCConnection.Create(strIPServeurOPC, strProgIDServeurOPC, varList.CommaText);
// On attend un peu pour laisser à la connexion le temps de s'établir
while True do begin
Sleep(10);
if opc.ConnectedAndIdentified then
break;
if SystemMilliseconds > timeout then begin
ErrorDlg('Connexion impossible avec QubesRouter');
exit;
end;
end;
// On écrit les différentes données en fonction de leur format
opc.WriteBooleanValue('MaCategorie1.MonChamp1', True);
opc.WriteIntegerValue('MaCategorie1.MonChamp2', 12);
opc.WriteFloatValue('MaCategorie2.MonChamp1', 70.5);
opc.WriteStringValue('MaCategorie2.MonChamp2', 'Test');
var strIPServeurOPC : String = '127.0.0.1:1341';
// ProgID du serveur OPC (fourni dans la documentation du serveur)
var strProgIDServeurOPC : String = 'ICONICS.SimulatorOPCDA.2';
// CommaText des variables OPC à requêter
var varList := new TStrings;
varList.Add('MaCategorie1.MonChamp1');
varList.Add('MaCategorie1.MonChamp2');
varList.Add('MaCategorie2.MonChamp1');
varList.Add('MaCategorie2.MonChamp2');
var timeout : Integer;
var opc : TOPCConnection;
// Exemples de lectures
timeout := SystemMilliseconds + 5000; // connection timeout = 5s
opc := TOPCConnection.Create(strIPServeurOPC, strProgIDServeurOPC, varList.CommaText);
// On attend un peu pour laisser à la connexion le temps de s'établir
while True do begin
Sleep(10);
if opc.ConnectedAndIdentified then
break;
if SystemMilliseconds > timeout then begin
ErrorDlg('Connexion impossible avec QubesRouter');
exit;
end;
end;
// On récupère les temps basés sur l'heure locale
opc.TimeStampMode:=tsmLocal;
// On demande au QubesRouteur de demander au serveur OPC de mettre à jour
// ses données concernant les variables qui nous intéressent
// (on laisse 1000 ms au serveur OPC pour sa mise à jour)
opc.Update(1000);
// Récupération des données du premier champ
var field := 'MaCategorie1.MonChamp1';
PrintLn(opc.ValueAsString(field));
PrintLn(opc.ValueTimeStamp(field));
PrintLn(opc.ValueQuality(field));
// On demande au QubesRouteur de maintenir sa connexion au serveur OPC
// sur ces variables pendant 60 secondes
opc.DisconnectKeepAlive(60);
//*******************************
// Exemples d'écritures
//*******************************
timeout := SystemMilliseconds + 5000; // connection timeout = 5s
opc := TOPCConnection.Create(strIPServeurOPC, strProgIDServeurOPC, varList.CommaText);
// On attend un peu pour laisser à la connexion le temps de s'établir
while True do begin
Sleep(10);
if opc.ConnectedAndIdentified then
break;
if SystemMilliseconds > timeout then begin
ErrorDlg('Connexion impossible avec QubesRouter');
exit;
end;
end;
// On écrit les différentes données en fonction de leur format
opc.WriteBooleanValue('MaCategorie1.MonChamp1', True);
opc.WriteIntegerValue('MaCategorie1.MonChamp2', 12);
opc.WriteFloatValue('MaCategorie2.MonChamp1', 70.5);
opc.WriteStringValue('MaCategorie2.MonChamp2', 'Test');