Bir çok otomasyon projesinde Modbus cihazlar ile haberleşme gereksinimi ortaya çıkar. Modbus Rtu Haberleşme inerface’i olarak kullanabileceğiniz. Modbus Rtu ActiveX esnek yapısı ile projelerinizde kullanabilirsiniz. Diğer programlarımızdan farklı olarak Modbus Rtu ActiveX’i bir kere satın alıp bir çok projede kullanabilirsiniz. Modbus Rtu ActiveX kullanım kılavuzu için buraya tıklayınız. 
Tüm Modüllerimiz Tak kullan özelliğine sahiptir. Ürünlerimizle beraber kullanıldığında herhangi bir ayar yapmanıza gerek olmadan çalışmaya başlayabilirsiniz.





Modbus ActiveX
Modbus ActiveX
Modbus ActiveX
FULTEK MODBUS RTU SERVER

shape
MODBUS RTU PIC SOURCE CODE
50 Usd.
Modbus ActiveX
Modbus Software
Rtu ActiveX
Rtu Software
Modbus Server
Rtu Server
Modbus Remote
Modbus Slave
Modbus Master
Modbus .Net
Modbus Vb.
Modbus VisualBasic
Modbus Visual Basic
Com port : Bilgisayarınızın hangi portu ile haberleşecekseniz onu seçmelisiniz.
Baudrate: Parity: Data Bit: Stop Bit: Haberleştiğiniz cihazlar için uygun olacak baudrete'i seçiniz.
Rcv Time out: Sorgu slave partnere gönderildikten sonra slave partnerden alınan bilginin tamamlanması için  tanınan maksimum süresidir(mili saniye). Bu süre dolmadan alınan bilgi tamamlanırsa süre sonuna kadar beklemeyip sıradaki işlemi uygulayacaktır.
Charecter Timeout: Sorgu gönderildikten sonra ilk gelen karekter ile çalışmaya başlar ve her bir karekter bilgi geldikçe süreyi resetler. Bu periyoda bilgi sayısında artış olmadığını gördüğünde alınan stringin tamamlandığına karar verir ve stringi işlemeye başlar. Baudrate'i çok düşük girmediğiniz taktirde bu süre 1 ms. olarak kalmalıdır.
Send Start Delay: Cihazınızdan sorgunun neticesinde cevap alındığında yeni bir sorgu göndermek için ihtiyaç duyulabilcek gecikmedir(mili saniye).Bu fonksiyon tamamen cihazınızla alakalı olup bazı cihazlarda kendi iç işleri uzun zaman alıp haberleşme foksiyonu yavaş çalışabilir.Bir diğer durumda çok hızılı haberleşmeye ihtiyacınız olmaması olabilir.





Modbus ActiveX
Modbus ActiveX
Send String: Modbus algoritması master cihazın slave cihaza sorgu göndermesi ve slave cihazın gelen sorguya cevap vermesi şeklinde gerçekleşir. Send String gönderilen sorgudur. Bu sorgu belli bir sistemde convert edilir ve crc16 eklenerek seri porttan gönderilir. Örnek: 0,3,1,18, Program vir güller ile ayrılan sayıları ayrı ayrı tespit eder. İlk sayı "0" slave cihaz adresidir. İkinci sayı "3" fonksiyon kodudur (Modbus algoritmasında değer okuma olarak kullanılır.) üçüncü "1" okunacak başlangıç adresidir. Son olarak 18 okunacak registers(variable) sayısıdır. Buraya direkt olarak değer girmeniz engellenmiştir. Zira hatalı değer girilmesi olasıdır. Buraya tıkladığınızda aşağıdaki pencere açılarak hatasız olarak değer girmeniz sağlanmıştır. Ayrıca AciveX'i kullanacağınız software'dan buraya ve diğer tüm değerlere ulaşabilirsiniz bu konuda Modbus Rtu ActiveX Giriş Çıkışlar Bölümünde anlatılacaktır.

Send string'e tıklandığında aşağıdaki pencere açılır.






Modbus ActiveX
Sorgunuzu açılan bu pencerede oluşturup ok butonuna bastığınızda sorgu otomatik olarak send string penceresine aktarılır.
Slave Adres:Bağlantı kurmak istediğiniz cihaz adresini giriniz.
Function:Modbus protokolünün gereği olarak slave cihazdan talep edilen fonksiyonun kodudur.
Kod 1 = Discrate coil istenilen bilginin okunması.
Kod 2 = Discrate input istenilen bilginin okunması.
Kod 3 = Analog holding istenilen bilginin okunması.
Kod 4 = Analog input istenilen bilginin okunması.
Kod 5 = tek coil bilgi yazma.
Kod 6 = tek analog registers bilgi yazma.
Kod 15 = birden fazla coil bilgi yazma.
Kod 16 = birden fazla analog registers bilgi yazma.
Start Adres:Slave cihaz registers başlangıç adresi.
Number of Registers: fonksiyon kod 1,2,3,4,15 ve 16'da registers sayısı fonksiyon kod 5 ve 6'da kullanılmaz.
Send String: Fonksiyon kod 6 ve 16'da gönderilmek istenen bilgiyi buraya girebilirsiniz. Buraya tıkladığınızda aşağıdaki resimde gördüğünüz pencere açılacaktır. Fonksiyon kod 1,2,3 ve 4'de kullanılmaz.






<- Sub: Gönderilmek istenen string'ten 1 registers siler.
Add ->: Gönderilmek istenen string'e 1 registers ekler.
Clear: Gönderilmek istenen string'i komple siler.
Fonksiyon kod 5'de gönderilmek istenen bilgiyi buraya girebilirsiniz. Buraya tıkladığınızda aşağıdaki resimde gördüğünüz pencere açılacaktır.






Binary tek dijit gönderme işlemi yapan bu fonksiyon'da sayının 0 veya 1 olmasını butonlara basarak belirleyebilirsiniz.
Fonksiyon kod 15'de gönderilmek istenen bilgiyi buraya girebilirsiniz. Buraya tıkladığınızda aşağıdaki resimde gördüğünüz pencere açılacaktır.






Binary birden fazla dijit gönderen bu fonksiyonda dijitleri 0 veya 1 şeklinde seçip ekleyebilirsiniz.
All 0 Tüm bitleri 0 yapar.
All 1 Tüm bitleri 1 yapar.
<- Sub Gönderim tablosundan son variable'ı siler.
Add -> Gönderim tablosuna oluşturulan variable'ı ekler.
Clear Tüm gönderim tablosunu temizler.
Send lenght: Fonksiyon kod 5,6,15 ve 16'da Göndermek istediğiniz data byte sayısını görebilirsiniz.







Yukarıda oluşturduğumuz sorgunun neticesinde slave cihazdan gelen cevap burada gösterilir. Bu gösterim şekli crc16 haric stringin tamamıdır. Gönderdiğiniz sorgudaki fonksiyon koduna göre farklılık gösterir. Örneğin 0,3,1,10, sorgunda gelen cevap 0(Slave adres),3(fonksiyon kodu),20(toplam data byte sayısı),0(1.variable),0(2.variable), 0(3.variable), 0(4.variable), 0(5.variable), 0(6.variable), 0(7.variable), 0(8.variable), 0(9.variable), 0(10.variable), şeklinde olacaktır. Receive string kutusunun yanında bulunan yeşil sayı doğru olarak alınan bilgi sayısıdır. Kırmızı sayı ise hatalı bilgi sayısıdır.
Send and Receive butonu
Bir sorgu gönderip bir cevap alır.
Automatic Send-Rcv
Check box işaretli olduğunda sürekli sorgu gönderip alır.









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









shape
Modbus Rtu Vb 2005 Example Project.
Modbus Rtu ActiveX
English
Scada Software Data Logger Endüstriyel Otomasyon