Red de conocimiento informático - Computadora portátil - Simplemente use C# como ejemplo de comunicación con Siemens plc. Expertos, por favor den un ejemplo.

Simplemente use C# como ejemplo de comunicación con Siemens plc. Expertos, por favor den un ejemplo.

Hashtable hitemsID=new Hashtable(17); // Se utiliza para registrar el nombre del proyecto y el número de ID del proyecto

private Guidate iidRequiredInterface;

private int hClientGroup = 0;

private int hClientItem = 0; //Número de proyecto

2. Crea un servidor y escribe el método Open()

//Crea una interfaz de servidor OPC.

////

// Devuelve mensaje de error

// Si es verdadero, la creación es exitosa; de lo contrario, la creación falla

método public bool Open () public bool Open(error de cadena de salida)

{

error=""; bool Success=true;

Escriba svrComponenttyp;

//Obtener la interfaz COM del servidor OPC

iidRequiredInterface = typeof(IOPCItemMgt).GUID;

svrComponenttyp = System.Type.GetTypeFromProgID(serverType);

try

try

p>

{

//Crear interfaz

pIOPCServer = (IOPCServer)System.Activator.CreateInstance( s)Activator.CreateInstance(svrComponenttyp);

error="";

}

catch (System.Exception err) //captura el mensaje de error

{

error ="Mensaje de error:" err.Message; Success=false;

}

Devuelve verdadero;

}

3.La función Agregar se utiliza para agregar un grupo en el servidor

// Agregar grupo

// Nombre del grupo

/// Si se debe activar al crear un grupo

///// Frecuencia de actualización del grupo (milisegundos)

//// Devolver mensaje de error

/////////////// //////////////////////////// Si es cierto, la adición se realiza correctamente; de ​​lo contrario, la adición falla

public bool AddGroup(string groupName, int bActive, int updateRate, out string error)

{

error= "";

int dwLCID = 0x407; // El idioma local es inglés

int pRevUpdateRate;

float deadband = 0;

//Manejo de memoria COM no administrada

GCHandle hDeadband;

IntPtr pTimeBi

as = IntPtr.Zero;

hDeadband = GCHandle.Alloc(deadband, GCHandleType.

prueba

{

pIOPCServer.AddGroup( groupName, //Nombre del grupo

bActive, //Si el grupo estaba activo cuando se creó

updateRate, //Frecuencia de actualización del grupo (milisegundos)

hClientGroup , //Número de cliente

pTimeBias, //No se usa aquí

(IntPtr) hDeadband,

dwLCID, //Idioma local

out nSvrGroupID, //El número de identificación del grupo utilizado al eliminar el grupo

out pRevUpdateRate, //El intervalo mínimo de notificación devuelto cuando las variables en el grupo cambian

ref iidRequiredInterface,

out pobjGroup1);/Apunta a la interfaz solicitada

hClientGroup=hClientGroup 1;

int groupID=nSvrGroupID;

groupsID. Add(groupName, groupID);

}

catch (System.Exception err) //captura el mensaje de error

{

error ="Mensaje de error:" err.Message;

}

Finalmente

{

if (hDeadband.IsAllocated) hDeadband .Free ();

}

si (error=="")

devuelve verdadero;

si no

devuelve falso;

}