Certains d'entre vous utilisent PLCSIM advanced ? Je viens de l'utiliser pour de la simulation hors ligne, et j'avoue qu'une fois lancé, c'est plutôt efficace !
Ca permet d'avoir la simulation qui tourne sur un PC indépendant, et d'être à plusieurs à bosser (comme sur un automate). Mais le gros avantage, c'est qu'on peut tout piloter en C# et C++.
Personnellement, je programme en C# et j'ai :
- 1 thread qui met à jour automatiquement les entrées de feedback des relais en fonction des sorties.
- 1 thread qui met à jour automatiquement les entrées des capteurs de position en fonction des ordres actionneurs.
Pour ceux qui l'utilisent, vous en faites quoi ?
Un petit exemple pour ceux qui sont curieux :
Code : Tout sélectionner
/*
* Created by SharpDevelop.
* User: Virtual
* Date: 16/08/2018
* Time: 21:51
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Threading;
using Siemens.Simatic.Simulation.Runtime;
namespace CPU1515F
{
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Starting simulation");
//Use it for local instance
//IInstance myInstance = SimulationRuntimeManager.CreateInterface("Golf8");
//Use it for remote instance
IRemoteRuntimeManager myRemoteInstance = SimulationRuntimeManager.RemoteConnect("192.168.1.101:50000");
IInstance myInstance = myRemoteInstance.CreateInterface("1515F");
//Update tag list from API
Console.WriteLine("Tags synchronization");
myInstance.UpdateTagList();
//Start a thread to synchronize feedbacks inputs
Thread tFeedbacks = new Thread(()=>synchroFeedbacks(myInstance));
tFeedbacks.Start();
//Allow the user to quit simulation
Console.WriteLine("Simulation running");
Console.WriteLine("Press any key to quit . . . ");
Console.ReadKey(true);
}
static void synchroFeedbacks(IInstance myInstance)
{
while(true){
//Keep %I and %Q opposite
myInstance.WriteBool("FB_KA1", !myInstance.ReadBool("KA1"));
}
}
}
}