Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Réseaux
Réseaux Réseaux, wifi, routeurs,...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/03/2006, 17h02   #1
Invité de passage
 
Inscription : mars 2006
Messages : 3
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 3
Points : 0
Points : 0
Par défaut PB : Récup° de l'Heure du PC puis envoi sur adress IP fixe ?

Bonjour à toutes et à tous,

Pourriez vous m'aider svp ?

Voilà mon pb :

- je cherche à savoir comment faire pour récupérer l'heure de mon ordinateur, l'encapsuler ensuite en modbus, puis la transmettre sur une adresse IP fixe que j'aurais choisi via le port Ethernet.

- je voudrais que l'heure soit envoyé toutes les minutes à cette adresse.

- je voudrais réaliser un .exe que je ferais tourner en tâche de fond.

J'ai très peu de connaissances en langage C, mais je pense que c'est le langage à utiliser ...

Merci d'avance de votre aide.

Pour plus de renseignement concernant ma question etc ... n'hésitez pas à me contacter.

Merci d'avance de votre aide ...

Cordialement.

CC_TiGeR
CC_TiGeR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2006, 18h43   #2
Rédacteur

 
Avatar de Louis-Guillaume Morand
 
Homme Louis-Guillaume MORAND
Consultant @ Microsoft
Inscription : mars 2003
Messages : 10 712
Détails du profil
Informations personnelles :
Nom : Homme Louis-Guillaume MORAND
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant @ Microsoft
Secteur : Conseil

Informations forums :
Inscription : mars 2003
Messages : 10 712
Points : 15 945
Points : 15 945
ce n'est pas à nous de te contacter pour avoir plus de renseignements. resoudre le probleme ou non, j'ai envie de te dire que tout le monde s'en fout.

PAR CONTRE, si tu exposes toi meme, clairement le probleme avec toutes les informations necessaires, alors nous nous ferons un plaisir de t'aider par altruisme et non plus interet comme le laisse entendre la fin de ton message
Louis-Guillaume Morand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2006, 09h49   #3
Invité de passage
 
Inscription : mars 2006
Messages : 3
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 3
Points : 0
Points : 0
Bonjour,

Désolé si ma question était mal formulée et si je me suis mal exprimé, je reprends avec quelques explications...

Voilà je travail actuellement avec un collègue sur un automatisme Schneider Electric (MICOM).

Je cherche à faire la mise à l'heure de cet automatisme toutes les minutes en envoyant l'heure du PC sur lequel je suis vers cet appareil.

- Premier problème : Je ne sais pas comment récupérer l'heure sur le PC local.

Ensuite il faut que je réussisse à mettre l'heure au format suivant :

- L'heure est codée sur 8 octets.

0000 0000 AAAA AAAA
0000 MMMM 000J JJJJ
000H HHHH 00mm mmmm
ssss ssss ssss ssss

s : millisecondes
m : minutes
H : heure
J : jour
M : mois
A : année

Ensuite le but est de faire en sorte que cette heure soit au format MODBUS avec tout ce qui s'en suit. (CRC, BIT DE STOP, PARITE, ETC...)

Enfin j'envoi le tout sur une adresse qui doit être paramétrable car je dois écrire les 4 octets à une adresse donnée dans cet automate.

Voilà, j'espère que ma question est plus claire ... Je n'ai pas de connaissance en programmation dans ce domaine, je suis plutot électrotechnicien haute tension .... J'espère que les explications et les recherches que j'ai effectuées pour détailler ma demande vous permettront de mieux comprendre ma demande ...

Désolé de vous avoir vexé si tel a été le cas .... Ce n'était pas mon but ... si vous me donnez des pistes pour savoir comment commencer je pourrais incrémenter ce post en espérant que cela serve à quelqu'un d'autre ....
CC_TiGeR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2006, 10h52   #4
Modérateur
 
Avatar de ggnore
 
Inscription : juillet 2004
Messages : 2 245
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : juillet 2004
Messages : 2 245
Points : 1 902
Points : 1 902
système d'exploitation du pc ?
il existe :
- sous dos/windows , la variable d'anvironnement %date%
- sous linux, la commande date

tu peux aussi te renseigner du côté des serveurs ntpdate.
__________________
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
ggnore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2006, 11h06   #5
Inscrit
 
Avatar de bilb0t
 
Inscription : décembre 2003
Messages : 378
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : décembre 2003
Messages : 378
Points : 223
Points : 223
Salut,

il serait intéréssant que tu spécifies le systéme qui tourne sur ton pc...

Sinon ça me parait tout con ton truc en C#.

Y a juste le modbus que je vois pas trop.

Il te faut une classe date 8 bit du genre:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
class C8ByteDate
	{
		public byte[] m_Date;
		public C8ByteDate()
		{
			m_Date = new Byte[16];
		}
		public void setDate(DateTime dt)
		{
			m_Date[0]=0;
			m_Date[1]=0;
			m_Date[2]=IntToByteArray(dt.Year)[1];
			m_Date[3]=IntToByteArray(dt.Year)[0];

			m_Date[4]=0;
			m_Date[5]=IntToByteArray(dt.Month)[0];
			m_Date[6]=IntToByteArray(dt.Day)[1];
			m_Date[7]=IntToByteArray(dt.Day)[0];

			m_Date[8]=IntToByteArray(dt.Hour)[1];
			m_Date[9]=IntToByteArray(dt.Hour)[0];
			m_Date[10]=IntToByteArray(dt.Minute)[1];
			m_Date[11]=IntToByteArray(dt.Minute)[0];

			m_Date[12]=IntToByteArray(dt.Millisecond)[3];
			m_Date[13]=IntToByteArray(dt.Millisecond)[2];
			m_Date[14]=IntToByteArray(dt.Millisecond)[1];
			m_Date[15]=IntToByteArray(dt.Millisecond)[0];
		}
		//renvoit la valeur en entier avec les bytes inversés
                //ça existe probablement déja, mais bon...
		public byte[] IntToByteArray(int valueToConvert)
		{
			byte[] b=new byte[4];

			ArrayList al = new ArrayList();

			while (valueToConvert>0)
			{
				int ret = valueToConvert%2;
				al.Add(ret);
				valueToConvert = valueToConvert/2;
			}

			int cmp = 0;
			int buf=0;
			for(int i=0;i<al.Count;i++)
			{
				int t = (int)al[i];
				buf += t*((int)Math.Pow(10,i%8));

				if((i+1)%8 ==0)
				{
					string s = ""+buf;
					b[cmp] = Convert.ToByte(s,2);
					buf=0;
					cmp++;
				}
			}

			string s1 = ""+buf;
			b[cmp]=Convert.ToByte(s1,2);
			return b;
		}
	}
Ensuite tu ouvres une socket et tu lui balance ta classe.
Code :
1
2
3
4
5
6
7
Socket m_CliSock = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
m_CliSock.Connect(new IPEndPoint(IPAddress.Parse("xxx.xxx.xxx.xxx"),xxxx));
C8ByteDate bd = new C8ByteDate();
bd.SetDate(DateTime.Now);
m_CliSock.Send(bd.m_Date,0,bd.m_Date.length,SocketFlags.None);
m_CliSock.Close();
T'as plus qu'à faire boucler ça toute les 60 sec...

Il y a p^robablement des fautes ds la syntaxe, mais c'est l'idée générale.
bilb0t est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2006, 11h26   #6
Membre éprouvé
 
Avatar de bster
 
Inscription : mai 2005
Messages : 373
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mai 2005
Messages : 373
Points : 469
Points : 469
Par défaut Re: PB : Récup° de l'Heure du PC puis envoi sur adress IP fi

Citation:
Envoyé par CC_TiGeR
Bonjour à toutes et à tous,

Pourriez vous m'aider svp ?

Voilà mon pb :

- je cherche à savoir comment faire pour récupérer l'heure de mon ordinateur, l'encapsuler ensuite en modbus, puis la transmettre sur une adresse IP fixe que j'aurais choisi via le port Ethernet.

- je voudrais que l'heure soit envoyé toutes les minutes à cette adresse.

- je voudrais réaliser un .exe que je ferais tourner en tâche de fond.

J'ai très peu de connaissances en langage C, mais je pense que c'est le langage à utiliser ...

Merci d'avance de votre aide.

Pour plus de renseignement concernant ma question etc ... n'hésitez pas à me contacter.

Merci d'avance de votre aide ...

Cordialement.

CC_TiGeR
quel interet au juste ?

utilises plustot NTP en te connectant à n'importe quelle université pour synchroniser tes équipements à l'heure GMT.
__________________
Comité de lutte contre le langage SMS sur les forums
Veuillez écrire dans un langage compréhensible par les humains, merci.
bster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2006, 15h28   #7
Invité de passage
 
Inscription : mars 2006
Messages : 3
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 3
Points : 0
Points : 0
Merci à toutes et tous pour vos réponses :

Le système est Windows XP, le PC est en local il n'y a pas internet donc pas de synchro en GMT....

En ce qui concerne le MODBUS c'est bien çà le plus important ...

Une fois l'heure récupérée sur le PC avec la fonction %date% ???? C'est cela que je ne comprends pas bien...

Ensuite la réalisation en MODBUS :

il faut envoyer :

- 1 octet à 0 pour adresse locale de l'appareil
- 1 octet à 16 pour écriture soit 0001 0000
(la zone de donnée)
- 2 octets pour l'adresse
- 2 octets pour le nombre de mots à écrire
- 1 octet pour le nbre d'octets à écrire
- 8 octets pour l'heure issue du PC au format définit précédemment
- 2 octets pour le CRC 16 (vérification des infos envoyées en modbus : reste d'une div° par 16 des éléments précédents)


J'espère que ces informations vous permettrons d'éclaircir le sujet ...

Merci encore d'avance.

CC
CC_TiGeR est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h46.


 
 
 
 
Partenaires

Hébergement Web