PLCSIM advanced

Forum traitant des automates industriels de marque Siemens.
Avatar de l’utilisateur
Ronan
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 112
Inscription : 17 juil. 2017, 07:37
Localisation : Saint-Nazaire
Contact :

PLCSIM advanced

Message par Ronan »

Salut !

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"));	
			}
		}
	}
}
Avatar de l’utilisateur
sinced
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1230
Inscription : 13 oct. 2015, 16:56

Re: PLCSIM advanced

Message par sinced »

Juste pour la simulation, tu crées du code ? ça doit être des programmes costauds
Avatar de l’utilisateur
Ronan
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 112
Inscription : 17 juil. 2017, 07:37
Localisation : Saint-Nazaire
Contact :

Re: PLCSIM advanced

Message par Ronan »

sinced a écrit : 17 août 2018, 09:21 Juste pour la simulation, tu crées du code ? ça doit être des programmes costauds
Oui, mais c'est nettement plus rapide et efficace qu'avec les scnénarios PLCSIM.
C'est des programmes conséquents oui, avec robots, beaucoup d'actionneurs et safety.
Avatar de l’utilisateur
sinced
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1230
Inscription : 13 oct. 2015, 16:56

Re: PLCSIM advanced

Message par sinced »

OK je comprend
Répondre