Beckhoff ADS
ADS sürücüsü Beckhoff TwinCAT 2 ve TwinCAT 3 PLC'lerinin değişkenlerini sembol adlarıyla okur ve yazar. Doğrudan PLC'nin AMS yönlendiricisine bağlanır; YTCC sunucusunda TwinCAT kurulumu gerekmez. Tüm sürücülerin ortak yanları için bkz. Sürücüler nasıl çalışır.
Protokol ve rol
| Rol | ADS istemcisi. PLC'ye YTCC bağlanır. |
| Taşıma | TCP üzerinden ADS (AMS/TCP) |
| Varsayılan port | 48898 |
| AMS hedefi | PLC'nin NetId'si (örneğin 5.32.116.5.1.1) ve AMS portu: TwinCAT 3 PLC 1 için 851, PLC 2 için 852, TwinCAT 2 için 801 |
| Sürücü başına cihaz | Sınırsız ADS hedefi. Aynı PLC'deki tüm hedefler tek TCP bağlantısını paylaşır. |
| Sürücü tipi | ADS (ads) |
PLC'de gerekenler
- Bir route. PLC ADS'yi yalnız tanıdığı ortaklardan kabul eder. YTCC'nin NetId'sini seçin, tercihen Source net ID
ayarlayarak (örneğin
192.168.0.5.1.1). TwinCAT XAE'de SYSTEM › Routes › Add Route altında bu AMS NetId, TCP/IP taşıma ve YTCC sunucusunun IP adresiyle bir route ekleyin. TwinCAT/BSD ve CE'de bunun yerineStaticRoutes.xml'e ekleyebilirsiniz. - PLC'nin güvenlik duvarı TCP 48898'e izin vermelidir.
- PLC başına tek bağlantı. PLC bir ortaktan tek ADS bağlantısı kabul eder: ikincisi (örneğin YTCC sunucusundaki TwinCAT XAE ya da ikinci bir sürücü) ilkinin yerine geçer. Bir PLC'nin tüm hedeflerini aynı sürücüye koyun.
Cihaz parametreleri
Bunları Drivers → devices görünümünde cihaz üzerinde ayarlayın (bkz. Sürücü ve cihaz ekleme). Boş kutu, içinde gösterilen varsayılanı kullanır. Her parametrenin yanındaki yardım işareti kısa bir açıklama gösterir.

| Parametre | Varsayılan | Aralık | Anlamı |
|---|---|---|---|
| Host | — (zorunlu) | IP adresi ya da host adı | PLC'nin adresi. |
| Port | 48898 | 1–65535 | AMS/TCP portu. |
| Target net ID (Hedef NetId) | — (zorunlu) | 0–255 arası altı sayı | PLC'nin AMS NetId'si. |
| Target port (Hedef port) | 851 | 1–65535 | PLC çalışma zamanının AMS portu. |
| Source net ID (Kaynak NetId) | boş | 0–255 arası altı sayı | YTCC'nin AMS NetId'si; PLC'deki route ile aynı olmalı. Boşsa sunucunun IP adresi artı .1.1 kullanılır. |
| Source port (Kaynak port) | 58913 | 1–65535 | YTCC'nin AMS portu, Source net ID ile kullanılır. |
| Connect timeout (ms) (Bağlanma zaman aşımı) | 3000 | 100–60000 | Sürücünün bağlanırken ne kadar beklediği. |
| Request timeout (ms) (İstek zaman aşımı) | 2000 | 100–60000 | Bir isteğin en uzun süresi; daha uzun bekleme bağlantı kopması sayılır. |
| Poll interval (ms) (Tarama aralığı) | 1000 | 10–3600000 | Kendi tarama sınıfı olmayan sinyallerin okuma periyodu. 100 ms altı önerilmez. |
| Sum chunk (Toplu okuma boyu) | 500 | 1–500 | Tek toplu istekte okunan en çok değişken. |
| Cmd timeout (ms) (Komut zaman aşımı) | 5000 | 100–600000 | Bir komutun eskimiş sayılmadan önce ne kadar bekleyebileceği. |
| Set invalid on disconnect (Kopunca geçersiz yap) | açık | açık / kapalı | Bağlantı kopunca hedefin tüm sinyallerini Bad · Not connected yapar. |
Host, Port, kaynak ya da zaman aşımları değişince PLC yeniden bağlanır; diğer parametreler hemen geçerli olur. Aynı host ve porttaki hedeflerin kaynağı ve zaman aşımları aynı olmalıdır, yoksa sonraki hedef başlamaz.
Sinyal adresi
Adresi sinyalin Value source (Değer kaynağı) sekmesinde, Address — ADS altında ayarlayın: Symbol (Sembol; PLC programındaki değişken adı), Data type (Veri tipi) ve metin için String length (Metin uzunluğu):
| Sembol | Anlamı |
|---|---|
MAIN.fTemperature | MAIN programının değişkeni |
GVL.aValues[3] | Genel değişken listesindeki bir dizinin elemanı |
MAIN.stMotor.bRun | Bir yapının üyesi |
Sembol adları büyük/küçük harfe duyarlı değildir ve boşluk içermez. Sürücü her sembolün adresini bağlanırken, ayrıca PLC programında çevrimiçi değişiklik ya da yükleme sonrasında yeniden bulur.
Veri tipleri
| Veri tipi | Boyut | YTCC'deki değer |
|---|---|---|
| BOOL | 1 bayt | Açık ya da kapalı |
| BYTE, USINT | 1 bayt | UInt16 |
| SINT | 1 bayt | Int16 |
| WORD, UINT | 2 bayt | UInt16 |
| INT | 2 bayt | Int16 |
| DWORD, UDINT | 4 bayt | UInt32 |
| DINT | 4 bayt | Int32 |
| LWORD, ULINT | 8 bayt | UInt64 |
| LINT | 8 bayt | Int64 |
| REAL | 4 bayt | Float32 |
| LREAL | 8 bayt | Float64 |
| STRING(n) | n + 1 bayt | Metin (n 1–255, varsayılan 80) |
Sembolün PLC'deki boyutu veri tipiyle aynı olmalıdır; yoksa sinyal Bad olur. Bir yapıyı ya da diziyi okumak için her üyeyi ya da elemanı ayrı sinyal olarak bağlayın.
Okuma
Sürücü toplu okumalarla tarar: tek istekte en çok Sum chunk değişken (ve 64 KB). Her tur PLC'nin sembol sürümünü de okur; değiştiyse (çevrimiçi değişiklik, yükleme) değerler kullanılmadan önce adresler yeniden bulunur. Bulunamayan bir sembol Bad olur ve her 30 saniyede bir yeniden denenir. PLC toplu okumayı desteklemiyorsa sürücü değişkenleri tek tek okur.
Sürücü ayrıca her 10 saniyede bir PLC'nin RUN'da olup olmadığını denetler. Başka bir durumda değerler okunmaya devam eder ama değişmeyebilir; cihaz durumu PLC'nin RUN'da olmadığını söyler.
Yazma
Access'i Read / Write ya da Write only olan bir sinyal yazılabilir. Değer veri tipine çevrilir: tamsayılar aralıklarına göre denetlenir, tamsayı tipine kesirli değer reddedilir, BOOL 0 ya da 1 alır, metin metin uzunluğuna sığmalıdır. Yazmalar hiç yinelenmez; yazma sırasında bağlantı koparsa PLC değeri almış ya da almamış olabilir.
Operatörlerin komutu nasıl gönderip onayladığı için bkz. Komut gönderme.
Kalite
| Durum | Kalite |
|---|---|
| Değişken okundu | Good |
| Sembol bulunamadı, boyut uyuşmazlığı, okuma hatası | Bad; son değer kalır |
| Bağlantı koptu ya da AMS hedefi cevap vermiyor | Bad · Not connected (Set invalid on disconnect ile); son değer kalır |
Bir değerin zamanı okunduğu andır; PLC zaman damgası göndermez.
Yeniden bağlanma
Bağlantı kopunca sürücü 100 ms sonra yeniden dener ve bekleyişi 20 saniyeye kadar ikiye katlar. Bekleme ancak PLC cevap verdikten sonra yeniden 100 ms'den başlar; böylece route'u olmayan bir PLC denemelerle boğulmaz.
Tanılama
Value source sekmesindeki Read now sembolü mevcut bağlantı üzerinden bir kez okur ve değeri ve ham baytları gösterir:
| Metin | Anlamı |
|---|---|
| No connection to ads://… | PLC bağlı değil |
| Timeout — no response from … within 2000 ms | PLC cevap vermedi |
| Symbol is missing | Sembol girilmedi |
| ADS error — … (symbol …, device …) | PLC okumayı reddetti, örneğin Symbol not found |
| Size mismatch — symbol … is … bytes, the data type needs … | Data type ya da String length değişkenle uyuşmuyor |
| ADS target is not answering … | Yanlış Target net ID ya da Target port, ya da çalışma zamanı çalışmıyor |
| Belirti | Olası neden |
|---|---|
| PLC bağlantıyı hemen kapatıyor | PLC'de route yok ya da route'un NetId'si Source net ID'den farklı |
| Bağlı, tüm sinyaller Bad · Not connected | Yanlış Target net ID ya da Target port |
| Değerler değişmiyor | PLC RUN'da değil |
| Bir sinyal Bad | Sembol yanlış yazılmış ya da programda yok; Data type yanlış |
| Bağlantı birkaç saniyede bir kopuyor | Aynı PLC'ye ikinci bir ADS ortağı (TwinCAT XAE, başka bir sürücü) bağlanıyor |
Desteklenen ADS komutları
| Komut | Destek |
|---|---|
| Read | Evet |
| Write | Evet |
| ReadWrite (sembol bulma) | Evet |
| ReadState | Evet |
| Toplu okuma, toplu okuma-yazma | Evet |