TOPCConnection - Exemples

TOPCConnection = class (TObject)Interface de TOPCConnectionExemples 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');