scada uygulamam için destek...

Başlatan vitoe, 18 Eylül 2004, 15:19:06

vitoe

Arkadaşlar elimdeki projede PLC-twido 20DRT kullanıyorum burada seri haberleşme ile sahadan topladığım verileri (PLC' de registera atıyorum gelen verileri örneğin sayıcı var sayıcının içeriğini MWordlere atıyorum)PC ortamına almak istiyorum VB kullanmayı az da olsa biliyorum ancak daha önce hiç seri haberleşme geliştirmedim Modscan32 die bi program (Modbus driver diye de anılıyor..) var bu program PLC ile PC yi istenilen baund rate de konuşturuyor ve PC deki registerları kaydediyor. Bu register bilgilerini tarih ve zaman ile veri tabanınıza atabiliyorsunuz. (Accsess veya text'e de atabiliyor.)

Eğer bunu VB de bir date base oluşturabilsemve oraya kaydetsem ve kullanıcı arayüzü ile clientlere verebilsem projem sonlanıyor.

Tıkandığım nokta MOdscan32 nin alternatifsiz oluşu.

Visual basicde buna benzer database uygulaması yapan arkadaşlarım var ise yardımlarını bekliyorum.

Saygılarımla...

Not:Eğer bu anlattığım senaryoda yardımcı olabileceğim arkadaşlarım var ise hiç çekinmeden bana yazabilirler...

asm_Coder

Driver ile hiç uğraşma derim.Twidonun portu free port olarak kullanılıyor.
Açık kodlarla aldığın dataları istediğin yere aktarabilirsin.MScomm kullan.
VisualBasic6 ile yaptığım örneği borda yüklemiştim.Aramayı kullanarak ulaşabilirsin.
y=f(x);

vitoe

Dostum bulamıyorum bi ipucu kelime verebilirmisin__

asm_Coder

Private Sub Command1_Click(Index As Integer)
On Error Resume Next

Dim s, ST

Adress$ = Left$(Text3.Text, 1) & Left$(Text3.Text, 1) & Right$(Text3.Text, 1) & Right$(Text3.Text, 1)

If Val(Text1(0).Text) < 10 Then
Parameter$ = "0" & Text1(0).Text
Else
Parameter$ = Text1(0).Text
End If

If Val(Text1(1).Text) < 10 Then
Parameter$ = Parameter$ & "0" & Text1(1).Text
Else
Parameter$ = Parameter$ & Text1(1).Text
End If

If Index = 0 Then

Message$ = Chr$(4) & Adress$ & Parameter$ & Chr$(5)
'Text4.Text = Message$

MSComm1.PortOpen = True
If Err Then MsgBox "COM Port Receive "

MSComm1.InBufferCount = 0
MSComm1.Output = Message$

FromDrv$ = ""
ST = 0
Do
ST = ST + 1
If ST > 10000 Then Exit Do
dummy = DoEvents()
For ss% = 0 To 10000
dummy = DoEvents()
Next ss%
If MSComm1.InBufferCount Then
For ss% = 0 To 10000
dummy = DoEvents()
Next ss%

FromDrv$ = FromDrv$ + MSComm1.Input

If InStr(FromDrv$, Chr$(3)) Then
'BCC calculation
BC = 0
For s = 2 To (Len(FromDrv$) - 1)
BC = BC Xor Asc(Mid(FromDrv$, s, 1))
Next
If BC < 32 Then BC = BC + 32
If Chr$(BC) = Right$(FromDrv$, 1) Then
Text1(2).Text = Str$(Val(Mid(FromDrv$, 6, (Len(FromDrv$) - 1))))
Exit Do
Else
Text1(2).Text = "HATA!"
Exit Do
End If
End If
End If
Loop
MSComm1.PortOpen = False
Else
Message$ = Chr$(4) & Adress$ & Chr$(2) & Parameter$ & Text1(2).Text & Chr$(3)
'BCC calculation
BC = 0
For s = 7 To Len(Message$)
BC = BC Xor Asc(Mid(Message$, s, 1))
Next
If BC < 32 Then BC = BC + 32
Message$ = Message$ + Chr$(BC)
'Text4.Text = Message$

MSComm1.PortOpen = True
If Err Then MsgBox "COM Port Receive "

MSComm1.InBufferCount = 0
MSComm1.Output = Message$

'ACK
FromDrv$ = ""
ST = 0
Do
ST = ST + 1
If ST > 10000 Then Exit Do

dummy = DoEvents()
If MSComm1.InBufferCount Then
FromDrv$ = FromDrv$ + MSComm1.Input
If InStr(FromDrv$, Chr$(6)) Then
Exit Do
Else
Exit Do
End If
End If
Loop
MSComm1.PortOpen = False

End If


End Sub

Private Sub Command2_Click()
On Error Resume Next

If Val(Text2(0).Text) = 1 Or Val(Text2(0).Text) = 2 Then MSComm1.CommPort = Text2(0).Text
If Val(Text2(1).Text) = 2400 Or Val(Text2(1).Text) = 4800 Or Val(Text2(1).Text) = 9600 Or Val(Text2(1).Text) = 19200 Then MSComm1.Settings = Text2(1).Text + ",e,7,1"
If Val(Text2(2).Text) > 10 And Val(Text2(2).Text) < 100 Then Text3.Text = Text2(2).Text

End Sub








[list=][/list]
y=f(x);

vitoe

teşekkür edrim.Bi deneeyim size sonucu bildiririm.

Saygılar