Simplemente use C# como ejemplo de comunicación con Siemens plc. Expertos, por favor den un ejemplo.
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 p>
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;
}