HOME

  Mach’in belirli alt yordamları/amaçları

 

 

 

 

 

Mach’in belirli alt yordamları/amaçları

Bu bölümde çok önemli rutinler açıklanmaktadır. Butonlar üzerindeki veya VB içindeki makrolar ile komut dosyasından işletilir.

Bunlar mach’ın 1.90.033 ve sonrası için geçerlidir.

 

Içindekiler:

1. G veya M kodlarını bir komut dosyasından işletme

2.  Arada başlatılan bir işlemin bitmesi için mach3’ü bekletme.

3.  Ekran kontröllerine erişmek için

3.1.  LED’ler

3.2.  DRO’lar

3.3.  Buton kumandaları

4. Mach’ın durumunu sorgulama

4.1.  Mach3 işleme modlarını sorgulama

4.2.  Mach3 dahili değişkenlerini sorgulama

5. Makine G kodu parametrelerine erişme

6. Makroları çağırma argümanları

7. Kullanıcılara verilen ve alınan bilgiler

7.1.  Diyalog kutuları

7.2.  Açıklama yazıları ve uyarılar vs.

7.3.  Kullanıcı tanımlı DRO ve LEDler

7.4.  Kullanıcı butonları yazıları, etiketler ve şeritler.

8. Parça programların işleme dosyaları

9. Sihirbaz için ekran işleme dosyaları rotası

10.  Giriş çıkış sinyalleri, modbus I/O, seri port ve “yabancı” portlar

10.1.         Sinyaller

10.2.         Modbus

10.2.1. Direkt giriş rotaları

10.2.2. Sorgulu giriş/çıkış

10.3.         Seri port

11.  Yabancı portlar

12.  Bekleme ve sisyem özellikleri

13.  Eski ve özel VB komut çağrıları

 

 

G veya M kodlarını bir komut dosyasından işletme

Basit ve en kullanışlı dizin:

Sub Code (text as String)

Buradaki text bir dizi ifadesidir, G veya M kodlarına satırına herhangi bir MDI (manuel data input) girilebilir. Mach3 bunları işletir. Burada önemli olan nokta aynı zamanda başka bir girilmemesidir.

Örnek: alt rutinde her iki dizinin kullanılması

Code "G0X0" ' bulunulan koordinattan X sıfıra doğru

Code "G1X10" & Feed ' değişebilir hız bir başka hıza ayarlanmış

                    ‘ "F150" gibi

 

Arada başlatılan bir işlemin bitmesi için mach3’ü bekletme

Birkaç komutu işlerken Mach3 bekletme için işlem sırası:

While IsMoving

Wend

Döngü tipik olarak bunu yapar

Örn:

code "G0X100"

While IsMoving()

Wend

Bu sistemin alt sisteme Mach3’ün bittiğini öğrenmek için milyonlarca kez sorgulama yapar. Dolayısıyla CPU’nun (işlemcinin) yükü çok fazla artar. Çözüm 100 mili saniye beklemek veya çok dar olan bu bekleme süresini kontrol etmektir. Çözüm için aşağıdaki dizin kullanılır.

Declare Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds As Long)

.

.

.

Code "G0X100"

While ismoving()

Sleep 100

Wend

 

Bu işlerin daha sağlam olması için işlemci yükünü azaltacaktır.

 

Ekran kontröllerine erişmek için

Örnek kodu görmek için bir makro DRO’daki bilgiyi okumalıdır. Yine herhangi bir LED’in durumunu okumalı ve durumunu ekran butonu ile canlandırmalıdır. Mach2 ve Mach3 için, DRO ve LED ekran tasarımını kullanarak bu kodlara erişmek mümkündür.

Bu kontrollarda LED’ler ve DRO’larda 800 bazıların da 1000 numara kullanmıştır. Bu endişe edilecek durum değildir.programın tarihi yapısıyla ilgilidir.

DRO ve LED’ler istenildiği gibi tanımlanabilir. Bunlar 255 tane olup herbiri 1000-1254 sayıyla kodlandırılmıştır. Kullanıcı tarafından verilmiş özel fonksiyonlar mach2 tarafından kullanılamaz.

Örneklerde değişmez değerler (14 gibi) kullanılır. Bunları makro başında kullanmakla yordamlara yapılan çağrılarda bunları kolay kullanım özelliği verir. Bu programın kolay okunmasını sağlar. Böylece birinci LED örneğinde şöyle bir yazım olabilir.

JoyStickLED = 814

:

:

bJoy = GetOEMLed (JoyStickLEDFn)

 

LEDler

getOEMLED fonksiyonu (ledOEMLEDCode bir tam sayıdır) boelan değeridir.

OEM ve kullanıcı LEDleri sistemine erişen ortak bir rutindir. Kullanıcı ledleri için, ledOEMCode aralığı 1000 ile 1244 arasında seçilmelidir. Eğer Ledin yanması isteniyorsa bu değer true olmalıdır.

Kullanıcı ledleri durumu (açık/kapalı) aşağıdaki şekilde seçilir.

Sub SetUserLED (ledUserCode as Integer, cond as Integer)

If cond = 1 the LED will be on. If cond = 0 then it will be Off

Örnekler:

 

bJoy = GetOELed (814)          ' set variable bJoy if Joystick is enabled

If GetOEMLed (29) Then …..     ' see if a Fixture is in use

Call SetUserLED (1002, 1)             ' turn on user LED

 

DRO’lar

GetOEMDRO fonksiyonu (droOEMCode tam sayıdır) Double’dır

Sisteme OEM veya DRO kullanıcısı olarak erişmek için uygun seçim yapılır. droOEMCode kodu 800 ve daha yukarı bir aralıkta olmalıdır, sistem DRO ları kullanıcı DROları için 1000 den 1254 e kadar olan aralıktadır. O anki değerler DRO da görüntülenir.

Sub SetOEMDRO (droOEMCode as Integer, newValue as Double)

Öncelikle sisteme erişmek için uygun OEM veya DRO kodları seçilir. droOEMCode kodu 800 ve daha yukarı bir aralıkta olmalıdır, sistem DRO ları kullanıcı DROları için 1000 den 1254 e kadar olan aralıktadır. Bu düzen DRO’ya sunulan ifadeyi belirler. Bütün DRO’lar yazılabilir değildir. Ekrandaki DRO’ya bir değer yazılamıyorsa, bu script içine de yerleştirilmez (örneğin X Hızı = 806).

Sub KillExponent (result as String, smallNumber as String)

Bu sorun adres problemini çözmekle halledilir,VB’de yazılım küçük sayıları gösterir (örn:0,0000012).

Örn:

Call SetOEMDRO (818, GetOEMDRO (818) * 1.1)   ' increase feedrate by 10%

Buton kumandaları

Sub DoOEMButton (buttOEMCode as Integer)

Butona basmakla tanımlanmış olan eşdeğer işlem çalıştırılır. Mach3’te, özel fonksiyonlar scriptlerle tanımlanmıştır.

Hataların izlenmesinde veya  bildirilmesinde bir öngörü olmayıp, birçok fonksiyonun işlerliği yazılım içinde LED ile kontrol edilmektedir.

Çok fazla butonu  aya rlamakla, süreç içerisinde olası durum ve değerler seçilir. Bir döngü, ilişkilendirilmiş durumun  LEDle kontrolünü  içerir. Bu durum, kullanılan düğmeler için kısmen uyumlu olabilir.

 

Örnek:

Rem This sets the MPG jog on and the wheel to jog the Y axis

Rem There are actually more direct ways to do this in late releases

Rem of Mach2

JogTogButton = 174

JogMPGEn = 175

MPGJogOnLED = 57

MGPJogsY = 60

OK = False

For I = 1 to 2

        If Not GetOEMLED (MPGJogOnLED) Then

               Call DoOEMButton (JogMPGEn)  ' try to enable

        Else

               OK = True      ' MPG is enabled

               Exit For

        End If

Next I

Rem Could test of OK true here

OK = False

For I = 1 to 6 ' must get there after six axis tries

        If Not GetOEMLED (MPGJogsY) Then

               Call DoOEMButton (JogTogButton) ' try next one

        Else

               OK = True  ' got right axis selected

               Exit For

        End If

Next I

Rem Could test OK here as well

 

 

 

devam ediyor