OVH Cloud OVH Cloud

OPC SERVER en bloc

5 réponses
Avatar
Long YE-SU
Bonjour,
Quelqu'un a déjà fait en VB V6 une communication
vers un automate S7300 avec une écriture par bloc ?

je recherche des exemples de code...

Sincères salutations
Long YE-SU

5 réponses

Avatar
Josselin JOUANNET
Bonjour,
Tu peut déjà regarder ce lien.
http://www.vbfrance.com/code.aspx?ID 627
Grand merci a nix pour son travail.
--
Cordialement
Joss


"Long YE-SU" a écrit :

Bonjour,
Quelqu'un a déjà fait en VB V6 une communication
vers un automate S7300 avec une écriture par bloc ?

je recherche des exemples de code...

Sincères salutations
Long YE-SU





Avatar
Tiouane
Bonjour,

Voici un exemple. C'est ce que tu cherchais ?

Bonne programmation.

Public Sub Creation_Items_NoGamme2()

'===== Creation des items pour la communication

Dim ErrorString As String

'===== Contrôle si la communication est valide
If Flag_Comunicazione_Abilitata = 0 Then
Exit Sub
End If

On Error GoTo Erreur_Creation_Items_NoGamme2

'===== Contrôle si le serveur est connecté
If ServerConnected = -1 Then
'===== Contrôle l'ajout du groupe
If GroupAdded = -1 Then
'===== Contrôle l'ajout des items
If ItemAdded_NoGamme2 = 0 Then
For n = 1 To Nb_Items_NoGamme2
AccPath_NoGamme2(n) = ""
ClientHandle_NoGamme2(n) = n
Next n
End If
Set ItemCollection = GroupObj.OPCItems
ItemCollection.AddItems Nb_Items_NoGamme2, ItemId_NoGamme2,
ClientHandle_NoGamme2, ItemServerHandle_NoGamme2, PError_NoGamme2,
ReqDataTypes_NoGamme2, AccPath_NoGamme2
'===== Vérifie qu'il n'y a pas d'erreur
ItemAdded_NoGamme2 = -1
For n = 1 To Nb_Items_NoGamme2
If PError_NoGamme2(n) <> 0 Then
ErrorString = ServerObj.GetErrorString(PError_NoGamme2(n))
MsgBox "Erreur sur implémentation lien NoGamme2 " +
ErrorString
ItemAdded_NoGamme2 = 0
Exit For
End If
Next n
End If
End If

Erase PError_NoGamme2

Exit Sub

Erreur_Creation_Items_NoGamme2:

MsgBox Err.Description

End Sub

Public Sub Initialisation_Items_NoGamme2()

Dim Riferimento_Db
Dim Riferimento_Posizione

'===== Contrôle si la communication est active
If Flag_Comunicazione_Abilitata = 0 Then
Exit Sub
End If

Riferimento_Posizione = 0
Riferimento_Db = 0
For n = 1 To 99
'===== Codice
Riferimento_Posizione = Riferimento_Posizione + 1
ItemId_NoGamme2(Riferimento_Posizione) = Testa_Items + "DB65,Int" +
Trim$(Str$(Riferimento_Db))
ReqDataTypes_NoGamme2(Riferimento_Posizione) = vbInteger
'===== NoGamme2 en DINT
Riferimento_Db = Riferimento_Db + 2
Riferimento_Posizione = Riferimento_Posizione + 1
ItemId_NoGamme2(Riferimento_Posizione) = Testa_Items + "DB65,DInt" +
Trim$(Str$(Riferimento_Db))
ReqDataTypes_NoGamme2(Riferimento_Posizione) = vbDouble

Riferimento_Db = Riferimento_Db + 18

Next n

End Sub

Public Sub Rimozione_Items_NoGamme2()

'===== Creo gli items per la comunicazione

Dim ErrorString As String

'===== Controllo se ho la comunicazione abilitata
If Flag_Comunicazione_Abilitata = 0 Then
Exit Sub
End If

On Error GoTo Errore_Rimozione_Items_NoGamme2

'===== Contrôle si le serveur est connecté
If ServerConnected = -1 Then
'===== Contrôle l'ajout du groupe
If GroupAdded = -1 Then
'===== Contrôle l'ajout des items
If ItemAdded_NoGamme2 = -1 Then
ItemCollection.Remove Nb_Items_NoGamme2,
ItemServerHandle_NoGamme2, PError_NoGamme2
'===== Vérifie s'il n'y a pas d'erreur
ItemAdded_NoGamme2 = 0
For n = 1 To Nb_Items_NoGamme2
If PError_NoGamme2(n) <> 0 Then
ErrorString =
ServerObj.GetErrorString(PError_NoGamme2(n))
MsgBox "Erreur dans RemoveItems pour NoGamme2 " +
ErrorString
ItemAdded_NoGamme2 = -1
Exit For
End If
Next n
End If
End If
End If

Erase PError_NoGamme2

Exit Sub

Errore_Rimozione_Items_NoGamme2:

MsgBox Err.Description

End Sub
Public Sub Transmission_NoGamme2()

'===== Carico i dati dal database
Dim Value_NoGamme2(Nb_Items_NoGamme2) As Variant

Dim Numero_Record As Long
Dim Db As Database
Dim Ds As Dynaset
Dim Stringa As String
Dim Posizione As Integer
Dim Numero_a_Imprimer As String
Dim PosNo As Integer
Dim Reponse

On Error GoTo Erreur_Transmission_NoGamme2

'===== Preparo il criterio di ricerca
'===== Intestazione
Stringa = "SELECT * FROM Programmi Order by Programmi.Codice_numerico"

'===== Apro il database
Set Db = OpenDatabase(Database_Programmi, False, False)

'===== Creo un dynaset
Set Ds = Db.CreateDynaset(Stringa)

'===== Controllo il numero di record trovati
Ds.MoveLast
Numero_Record = Ds.RecordCount
Ds.MoveFirst
If Numero_Record > 98 Then
Reponse = MsgBox("Limite de 99 enregistrements atteinte !!! " & vbCrLf &
"Veuillez supprimer des gammes avant d'en enregistrer d'autre.",
vbExclamation)
Else
'===== Controllo se ho creato gli items
If ItemAdded_NoGamme2 <> 0 Then
'===== Preparo i parametri da scrivere
Posizione = 0

'===== Inizio la ricerca
Do While Not Ds.EOF
'===== Codice numerico
Posizione = Posizione + 1
If Not (IsNull(Ds(Campo_Modello_28))) Then
Value_NoGamme2(Posizione) = Val(Trim$(Ds(Campo_Modello_28)))
Else
Value_NoGamme2(Posizione) = Val(0)
End If

'===== Copic muffola
Posizione = Posizione + 1

If Not (IsNull(Ds(Campo_Modello_2))) Then
PosNo = InStr(1, Trim$(Ds(Campo_Modello_2)), "-")
Numero_a_Imprimer = Mid(Trim$(Ds(Campo_Modello_2)), PosNo + 1,
Len(Trim$(Ds(Campo_Modello_2))) - PosNo)

Value_NoGamme2(Posizione) = CDbl(Val(Numero_a_Imprimer))
Else
Value_NoGamme2(Posizione) = CDbl(Val(0))
End If

Ds.MoveNext
Loop
Do While Posizione < Nb_Items_NoGamme2
Posizione = Posizione + 1
Value_NoGamme2(Posizione) = Val(0)
Loop
End If
Ds.Close
Db.Close
GroupObj.SyncWrite Nb_Items_NoGamme2, ItemServerHandle_NoGamme2,
Value_NoGamme2, PError_NoGamme2
'===== Verifico se ci sono errori
For n = 1 To Nb_Items_NoGamme2
If PError_NoGamme2(n) <> 0 Then
ErrorString = ServerObj.GetErrorString(PError_NoGamme2(n))
MsgBox "Erreur dans transmission_NoGamme2 " + ErrorString
Exit For
End If
Next n
End If
Exit Sub

Erreur_Transmission_NoGamme2:

Select Case Err
Case 3021
Ds.Close
Db.Close
Exit Sub
Case 91, 3044
Db.Close
Exit Sub
Case Else
MsgBox "Form 5 - Visualizza_Dati - " + Error$
Ds.Close
Db.Close
Exit Sub
Resume
End Select
Resume Next
End Sub

Public Sub Main()
Initialisation_Items_NoGamme2
Creation_Items_NoGamme2

'Transmission_NoGamme2 sert à envoyer des données à l'automate.
'Rimozione_Items_NoGamme2 sert à supprimer les liens à la fermeture de
l'application
End Sub

"Long YE-SU" a écrit dans le message de news:
43df78cf$0$21284$
Bonjour,
Quelqu'un a déjà fait en VB V6 une communication
vers un automate S7300 avec une écriture par bloc ?

je recherche des exemples de code...

Sincères salutations
Long YE-SU




Avatar
Long YE-SU
ok merci

A+
Long

"Josselin JOUANNET" a écrit
dans le message de news:

Bonjour,
Tu peut déjà regarder ce lien.
http://www.vbfrance.com/code.aspx?ID 627
Grand merci a nix pour son travail.
--
Cordialement
Joss


"Long YE-SU" a écrit :

> Bonjour,
> Quelqu'un a déjà fait en VB V6 une communication
> vers un automate S7300 avec une écriture par bloc ?
>
> je recherche des exemples de code...
>
> Sincères salutations
> Long YE-SU
>
>
>


Avatar
Long YE-SU
autre question sur OPC SERVER :

Comment laisser la communication OPC SERVER , tout en ayant plusieurs
fenêtres Windows ?

car en fait quand je fais un Load_Form , j'initialise la communication...
et elle toujours active jusqu'a sortir du programme...

mais j'ai une application avec plusieurs fenêtres ...

Long YE-SU
Avatar
Tiouane
Bonjour,

Il ne faut pas initialiser la com dans le load d'une form mais le faire
dans une procédure. Puis dans les propriétés de ton projet, onglet général,
dans objet de démarrage, tu précises quelle procédure démarre le projet.
Ainsi la comm n'est pas initialisée par une form.

Bon courage.


"Long YE-SU" a écrit dans le message de news:
43e707f7$0$6671$
autre question sur OPC SERVER :

Comment laisser la communication OPC SERVER , tout en ayant plusieurs
fenêtres Windows ?

car en fait quand je fais un Load_Form , j'initialise la communication...
et elle toujours active jusqu'a sortir du programme...

mais j'ai une application avec plusieurs fenêtres ...

Long YE-SU