Modbus Rtu ActiveX Giriş Çıkışlar
Projenizi yukarıda anlatılan pencereler yardımı ile oluşturup test ettikten sonra haliyle bu verileri kendi programınızdan yönetmek isteyeceksiniz. Bu amaçla Modbus Rtu ActiveX değişkenlerine hazırladığınız softwaredan erişebilirsiniz. Bu şekilde port ayarlarını ve modbus sorgularını oluşturabilir ve sorgu neticelerini software'ınıza aktarabilirsiniz. ActiveX'e dışarıdan erişebileceğiniz Giriş/Çıkışlar Aşağıda belirtilmiştir.
Port_name : Seri port adresi.
Baudrate : Haberleşme hızı
Parity : Parity biti kontrol tipi
Data_bits : Data bit sayısı
Stop_bits : Stop bit sayısı
Rcv_timeout : Alımda zaman aşımı
Char_timeout : Karekter zaman aşımı
Send_start_delay : Gönderimde gecikme
Send_string : Gönderilecek string
Send_crc16 : Gönderilen için hesaplanan crc16
Receive_string : Alınan Sitring
Rcv_crc16 : alınan crc16
Status_box : Haberleşme ve program ikaz penceresi
Auto_send_rcv : otomatik tarama aktif/pasif.
Send_receive_button : gönder al butonu.
Value_status : 1 (true) = alım tamamlandı. 0 (false) = alım yapılamadı. 1 olduğunda bir dahaki sorgu yapılana kadar 1 olarak kalır. Bir sonraki sorguda başarısız olur ise başarılı sorgu yapılana kadar 0 olarak kalmaya devam edecektir. Otomatik çalışma modunda sadece doğru olarak alınan bilgileri kullanmanızda son derece gereklidir.
Receive_complete : Alım yapıldı interrupt. (anlık)
Receive_error : Alım yapılamadı interrupt. (anlık)
Good_rcv_cnt : Doğru olarak alınan bilgi sayısı
Bad_rcv_cnt : Haberleşme hatası veya hatalı bilgi sayısı.
Event'lar:
Event rcv_complete(ByVal sender As Object, ByVal e As String)
Event rcv_error(ByVal sender As Object, ByVal e As String)
Projeye ekleme:
.Net Toolbox menüsünde General sekmesinde sağ klik yapın ve chose item'i seçin. Açılan pencerede Browse butonuna tıklayın, Modbus_Rtu.dll dosyasını bulup ok butonuna basın ve Ana form üzerine activeX'i koyun. Böylece Modbus Rtu ActiveX programınıza alınmış olacaktır.
Eventların kullanımı için Visual basic'de örnek:
Private Sub rcv_complete(ByVal sender As Object, ByVal e As String) Handles _ Modbus_rtu1.rcv_complete
'Alım tamamlandığında çalışmasını istediğiniz kodu buraya yazınız.
End Sub
Private Sub rcv_error(ByVal sender As Object, ByVal e As String) Handles _ Modbus_rtu1.rcv_error
'Hatalarda çalışmasını istediğiniz kodu buraya yazınız.
End Sub
Alınan stringin parçalanması:
Programınızda modbus bilgilerini okumak istediğiniz bölüme aşağıdaki kodu yapıştırın.
Private Sub rcv_complete(ByVal sender As Object, ByVal e As String) Handles Modbus_rtu1.rcv_complete
Try
Dim str_sp() As String
Dim Value(10) As Integer
str_sp = Split(e, ",")
If str_sp(1) > 4 Then Exit Sub 'Function code output
Dim i As Integer
If str_sp(1) > 2 Then 'Function Code
'Analog Variable
For i = 3 To str_sp.Length - 2
If IsNumeric(str_sp(i)) = True Then
Value(i - 3) = str_sp(i)
End If
Next
Else
'Discrate Variable
For i = 3 To str_sp.Length - 2
If IsNumeric(str_sp(i)) = True Then
Dim read_value As Integer = str_sp(i)
Dim byt As Byte() = BitConverter.GetBytes(read_value)
Dim bit As New BitArray(byt)
Dim i2 As Integer
For i2 = 0 To 7
Value(i - 3) = bit(i2)
Next
End If
Next
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub