Betik nesne modeli başvurusu
Betiklerden erişilen nesne ve işlevlerin dil dil başvurusu: ortak kavramlar, dillerin karşılaştırma tablosu, VBS ve JavaScript nesne modeli. Python ve C ayrı konulardadır.
Bu başvuru nasıl okunur
Burada yalnızca motorun gerçekten tanıdığı üyeler listelenir. Kod alanındaki Başvuru paneli (VBS, C ve Python) aynı verileri örnek kodlarıyla birlikte verir; satıra tıklayınca örnek imlece eklenir. Python ve C için ayrıntılı listeler Python nesne modeli ve C işlevleri konularındadır.
Ortak kavramlar
Tag değer türleri
| Tag türü | VBS | JavaScript | C | Python |
|---|---|---|---|---|
| Bool | ikili değer (1 / 0, True / False) | true / false | GetTagBit (1 / 0) | bool |
| Tam sayı tipleri | sayı | sayı | Byte, SByte, Word, SWord, DWord, SDWord | int |
| Real / LReal | sayı | sayı | GetTagFloat / GetTagDouble | float |
| String / WString | metin | metin | GetTagChar | str |
| DateTime | metin (ISO biçimi) | metin | GetTagDateTime | ISO str |
Kalite kodları
VBS (QualityCode), C (…StateQC) ve Python (.quality) aynı kodları kullanır: 192 iyi, 84 değer tag'in alt / üst sınırının dışında (değer kullanılabilir), 8 bağlantı yok, 4 tanımsız (tag bulunamadı), 0 kötü.
Sistem tag'leri
Projede aynı adla tag tanımlı değilse okunabilen, @ ile başlayan özel adlar:
| Ad | Anlamı |
|---|---|
@LocalMachineName | Live bilgisayarının adı. |
@CurrentUser, @CurrentUserName | Oturumu açık kullanıcının adı ve görünen adı (oturum yoksa boş). |
@UA_<Rapor>_ID, @UA_<Rapor>_Job | Adı <Rapor> olan rapora şimdi kayıt ekler: önce _ID'ye -1, sonra _Job'a 6 yazılır. Kayıt eklenince Job 0, ID yeni kayıt numarası olur; rapor yoksa ya da başka bir Job değeri verilirse Job −1 olur ve olay günlüğüne uyarı yazılır. |
Rapor kaydı için Python'da scada.report_add("Rapor") daha kısadır. Rapor tarafı: Rapor tasarımı.
Dillere göre karşılaştırma
— işareti, o dilde karşılığı olmadığını gösterir.
| İş | VBS | JavaScript | C | Python |
|---|---|---|---|---|
| Tag oku | HMIRuntime.Tags("Ad").Read ya da SmartTags("Ad") | Tag.oku('Ad') | GetTagFloat("Ad") | scada.read("Ad") |
| Tag yaz | HMIRuntime.Tags("Ad").Write 1 ya da SmartTags("Ad") = 1 | Tag.yaz('Ad', 1) | SetTagFloat("Ad", 1.0f) | scada.write("Ad", 1) |
| Kalite / durum | .QualityCode, .LastError | — | GetTagFloatStateQC("Ad", &d, &k) | scada.tag("Ad").quality |
| Birkaç tag birlikte | Tags.CreateTagSet | — | GetTagMultiWait | scada.read_many, write_many, tagset |
| Sayfa aç | HMIRuntime.BaseScreenName = "Sayfa" | Sayfa.ac('Sayfa') | OpenPicture("Sayfa") | scada.open_screen("Sayfa") |
| Önceki sayfa | — | Sayfa.geri() | OpenPrevPicture() | scada.back() |
| Açılır pencere | — | — | OpenScreeninPopup(…) | scada.open_window("Sayfa") |
| Nesne özelliği | ScreenItems("N").Text = "x" | — | SetText("Sayfa", "N", "x") | scada.screen.items["N"].text = "x" |
| Katman göster / gizle | Screens("S").Layers(1).Visible = False | — | — | sayfa.layers[0].visible = False |
| Oturumdaki kullanıcı | HMIRuntime.Tags("@CurrentUser").Read | Kullanici.ad | PWRTGetCurrentUser (UseAdmin.dll) | scada.user |
| Giriş penceresi | — | — | ShowLogonDialog() | scada.login_dialog() |
| Mesaj / onay penceresi | MsgBox | Bildir(metin) (yalnız bilgi) | MessageBoxA (user32.dll) | scada.msgbox(…), scada.notify(…) |
| Değer isteme | InputBox | — | — | scada.inputbox(…) |
| Live dili | HMIRuntime.Language = 1033 | — | SetLanguage(1033) | scada.language = 1033 |
| Betikler arası değer | HMIRuntime.DataSet | window üzerine ekleme | dosya düzeyi değişken | scada.dataset |
| Rapora kayıt | @UA_Rapor_ID / _Job | — | — | scada.report_add("Rapor") |
| Veritabanı | ADODB.Connection | — | — | scada.db.connect(…), pyodbc |
| Dosya | Scripting.FileSystemObject | — | fopen, fprintf | open(), os, pathlib |
| Program başlat | WScript.Shell.Run | — | ProgramExecute | scada.run(…) |
| Bekleme | (DateDiff döngüsü) | setTimeout | Sleep(ms) | scada.sleep(sn), scada.wait_for(…) |
| Tanılama çıktısı | HMIRuntime.Trace | — | printf, TraceText | print, scada.trace |
| Programı kapat | HMIRuntime.Stop | — | DeactivateRTProject() | scada.stop() |
VBS nesne modeli
Nesne üye adlarında büyük / küçük harf ayrımı yoktur. İzin gerektiren CreateObject nesneleri için bkz. VBScript betikleri.
HMIRuntime
| Üye | Açıklama |
|---|---|
Tags("Ad") | Tag nesnesi (Tags.Item("Ad") ile aynı). |
SmartTags("Ad") | Tag'in değerini okur; SmartTags("Ad") = v yazar. |
Screens("Sayfa") | Açık bir sayfa (ana sayfa, açılır pencere, sayfa penceresinin içi). Kapalı sayfa listede yoktur; Screens.Count, For Each çalışır. |
ActiveScreen | Öndeki sayfa. |
BaseScreenName | Ana sayfanın adı; atanırsa o sayfa açılır. |
Language | Live dili numarası (1055 Türkçe, 1033 İngilizce, 1031 Almanca); atanırsa dil değişir. |
ActiveProject.Name, .Path | Projenin adı ve klasörü. |
DataSet | Bütün betiklerin paylaştığı, oturum boyunca bellekte duran değerler. |
CurrentContext | Betiğin çağrıldığı bağlam. |
Trace "metin" | Olay günlüğüne ve betik tanılamasına satır yazar. |
Stop | Live'ı kapatma isteği gönderir. |
HMIRuntime.Logging, AlarmLogs, DataLogs, Alarms ve MenuToolBarConfig bu sürümde yoktur (çağrılırsa hata).
Tag, TagSet
| Nesne | Üyeler |
|---|---|
| Tag | Read([kip]), Write [değer], Value (varsayılan özellik), Name, QualityCode, TimeStamp, LastError, ErrorDescription, TagPrefix |
TagSet (Tags.CreateTagSet) | Add, Remove, RemoveAll, Read, Write, Item / grup("Ad"), Count, LastError |
Read'in kip parametresi ve Write'ın kip parametresi kabul edilir ancak fark yaratmaz: yazma her zaman sürücüye hemen gönderilir ve beklenir.
Screen, ScreenItem, Layers, DataSet
| Nesne | Üyeler |
|---|---|
| Screen | ObjectName, ScreenItems, Layers, DataSet, ActiveScreenItem, Parent, AccessPath, Activate(), Refresh(), Width, Height, BackColor, Zoom, Enabled, TagPrefix |
| ScreenItem | ObjectName, Type, Left, Top, Width, Height, Visible, Enabled, Layer, Parent, TagPrefix, ToolTipText, Activate(); yaygın adlar: Text, BackColor, ForeColor, BorderColor, FontName, FontSize, FontBold, FontItalic, FontUnderline, ProcessValue, OutputValue, RotationAngle, Transparency, FlashingEnabled; ayrıca nesnenin Özellikler sekmesindeki kendi özellik adları |
| Layers | Layers(no) (VBS'te 1 = katman 0): Visible, Name, MinZoom, MaxZoom |
| DataSet | Add "ad", değer, DataSet("ad").Value, Remove, RemoveAll, Count |
Nesne özelliği olarak yazılan değer oturum boyunca geçerlidir; proje dosyasına yazılmaz. Özellik bir tag'e bağlıysa bağlama kazanır. Mantıksal özellikler (Visible, Enabled …) gerçek Boolean döndürür. Olay kodunda (VBS kodu çalıştır) Item, ScreenItems, Parent, Layers, DataSet adları doğrudan kullanılır.
Err
Number, Description, Source, Clear, Raise numara, kaynak, açıklama.
JavaScript nesne modeli
| Üye | Açıklama |
|---|---|
Tag.oku(ad) | Geçerli değeri döndürür; tag yoksa undefined. |
Tag.yaz(ad, değer) | Değer yazar, Promise döndürür; reddedilen yazma operatöre hata penceresi olarak gösterilir. |
Sayfa.ac(ad, [önek]) | Ana sayfayı değiştirir. |
Sayfa.geri() | Önceki sayfa. |
Bildir(metin) | Bilgi penceresi gösterir. |
Kullanici.ad | Oturumdaki kullanıcının adı (yoksa boş). |
Başka üye yoktur: Tag., Sayfa. ya da Kullanici. altında olmayan bir ad yazarsanız Studio derlemede uyarır.
Sınırlar ve dikkat edilecekler
- Alarm üretme ve onaylama, arşiv ve alarm günlüklerine erişim hiçbir dilde yoktur (C ve Python'da tanımlı ama iş yapmayan çağrılar için ilgili konulara bakın).
- Nesne özelliklerini VBS, C ve Python değiştirebilir; JavaScript değiştiremez. 3B sayfada nesne özelliği yazma desteklenmez.
- Başvuru panelindeki "Desteklenmeyen" sekmeleri, Studio'nun önceden uyardığı çağrıların güncel listesini verir.