0216 305 04 85 Bize Ulaşın
BLOG /
Kontrol Dünyası ile ilgili en güncel bilgiler ve Bizden Haberler için E-bültenimize kaydolun

S7 1200 / 1500 Programlama; Yeni Veri Türleri/

3 Temmuz 2020

S7-1200 / 1500 için yeni veri türleri


S7-1200 / 1500 kontrolörleri, programlamayı daha kolay hale getirmek için yeni veri türlerini destekler. Yeni 64 bit veri türleriyle, çok daha büyük ve daha kesin değerler kullanılabilir.


Not

Daha fazla bilgi aşağıdaki girişte bulunabilir:

STEP 7'de (TIA Portal), S7-1200 / 1500 için veri türlerini nasıl dönüştürürsünüz?

https://support.industry.siemens.com/cs/ww/en/view/48711306


Temel veri türleri


Tablo 1 : Integer veri türleri

Tip

Boyut

Değer aralığı

USint

8 bit

0 .. 255

SInt

8 bit

-128 .. 127

UInt

16 bit

0 .. 65535

UDInt

32 bit

0 … 4.3 Mio

ULInt*

64 bit

0 … 18.4 Trio (1018)

LInt

64 bit

-9.2 Trio ... 9.2 Trio

LWord

64 bit

16#0000 0000 0000 0000 …

16# FFFF FFFF FFFF FFFF

* sadece S7-1500 için


Tablo 2 : Float point veri türleri

Tip

Boyut

Değer aralığı

Real

32 bit (1 bit önek, 8 bit üs, 23 bit mantis), virgülden sonra 7 basamak hassas

-3.40e + 38 .. 3.40e + 38

LReal

64 bit (1 bit önek, 11 bit üs, 52 bit mantis), virgülden sonra 15 basamak hassasiyeti

-1.79e + 308 .. 1.79e + 308


Not

Daha fazla bilgi aşağıdaki girişlerde bulunabilir:

STEP 7'de (TIA Portalı), SCL'deki DInt Eklemesinin sonucu neden düzgün görüntülenmiyor?

https://support.industry.siemens.com/cs/ww/en/view/98278626


Veri türü Date_Time_Long


Tablo 3 : DTL'nin Yapısı (Date_Time_Long)

Yıl

Ay

Gün

Hafta içi

Saat

Dakika

Saniye

Nanosaniye


DTL daima geçerli sistem saatini okur. Tek tek değerlere erişim sembolik adlarla yapılır (örneğin, My_Timestamp.Hour)


Avantajları

• Tüm alt bölgeler (örneğin Yıl, Ay,…) sembolik olarak adreslenebilir.


Öneri

LDT yerine yeni DTL veri türünü kullanın ve sembolik olarak adresleyin (örneğin, My_Timestamp.Hour).


Not

Daha fazla bilgi aşağıdaki girişlerde bulunabilir:

STEP 7'de (TIA Portal), S7-300 / S7-400 / S7-1200 / S7-1500'ün CPU modülleri için tarih ve saati nasıl girebilir, okuyabilir ve düzenleyebilirsiniz?

https://support.industry.siemens.com/cs/ww/en/view/43566349

DT ve DTL veri türlerini işlemek için STEP 7 V5.5 ve TIA Portal'da hangi işlevler bulunur?

https://support.industry.siemens.com/cs/ww/en/view/63900229


Diğer zaman veri türleri


Tablo 4 : Zaman veri türleri (sadece S7-1500)

Tip

Boyut

Değer aralığı

LTime

64 bit

LT#-106751d23h47m16s854ms775us808ns

LT#+106751d23h47m16s854ms775us807ns

LTIME_OF_DAY

64 bit

LTOD#00:00:00.000000000

LTOD#23:59:59.999999999


Unicode veri türleri


WCHAR ve WSTRING veri türlerinin yardımıyla Unicode karakterler işlenebilir.

Tablo 5 : Zaman veri türleri (sadece S7-1500)

Tip

Boyut

Değer aralığı

WCHAR

2 Byte

-

WSTRING

(4 + 2*n) Byte

Ön ayar değeri: 0 ..254 karakter

Maks. Değer: 0 ..16382

n = ipin uzunluğu


Özellikleri

• Latin, Çince veya diğer dillerdeki karakterlerin işlenmesi.
• Satır kesmeleri, form besleme, sekme, boşluklar
• Özel karakterler: Dolar işaretleri, tırnak işaretleri


Misal

• WCHAR # ‘a‘

• WSTRING # ‘Hello World!‘


VARIANT Veri tipi (FW4.1'den S7-1500 ve S7-1200)


VARIANT türündeki bir parametre, farklı veri türlerinin etiketini gösterebilen bir işaretçi. HERHANGİ bir işaretçinin aksine, VARIANT tip testine sahip bir işaretçidir. Bu, hedef yapının ve kaynak yapının çalışma zamanında kontrol edildiği ve aynı olması gerektiği anlamına gelir.

Örneğin VARIANT, giriş olarak iletişim blokları (TSEND_C) için kullanılır.

Şekil 1 : TSEND_C talimatı için giriş parametreleri olarak VARIANT veri türü



Avantajları

• Entegre tip testi hatalı erişimi önler.
• Kod, değişken etiketlerin sembolik adresleme yoluyla daha kolay okunabilir.
• Kod daha verimli ve daha kısa sürede gerçekleşir.
• Varyant göstergeleri HERHANGİ bir göstergeden açıkça daha sezgiseldir.
• Doğru tip etiketleri, sistem fonksiyonları yardımıyla doğrudan kullanılabilir.
• Farklı yapılandırılmış etiketlerin esnek ve performansla aktarımı mümkündür.


Özellikleri

ANY ve VARIANT arasında bir karşılaştırma yapıldığında, özellikler görülebilir.

Tablo 6 : ANY ve VARIANT karşılaştırılması

ANY

Variant

Tanımlanmış yapıya sahip 10 bayt bellek gerektirir

Kullanıcı için ana bellek gerektirmez

Veri alanının atanmasıyla veya ANY yapısının doldurulmasıyla başlatma

Veri alanını veya sistem talimatını atayarak başlatma

Yazılmamış - birbirine bağlı bir yapının türü tanınamıyor

Yazılı - birbirine bağlı tip ve diziler için uzunluk da belirlenebilir

Kısmen yazılmıştır - diziler için uzunluk da belirlenebilir

VARIANT sistem talimatları ile değerlendirilebilir ve oluşturulabilir


Öneri

• ANY pointerini kullanmadan önce nerede olduğunu kontrol edin. Çoğu durumda bir işaretçi artık gerekli değildir (aşağıdaki tabloya bakın).
• VARIANT veri türünü yalnızca veri türleri yalnızca program çalışma zamanında belirlendiğinde dolaylı adresleme için kullanın.
- Gerçek parametrelerin veri türünden bağımsız genel bloklar oluşturmak için VARIANT veri türünü InOut resmi parametre olarak kullanın (bu bölümdeki örneğe bakın).
- HERHANGİ bir işaretçi yerine VARIANT veri türünü kullanın. Entegre tip testi nedeniyle hatalar erken tespit edilir. Sembolik adresleme nedeniyle program kodu kolayca yorumlanabilir.
- Varyant talimatını, örneğin tip tanımlaması için kullanın (aşağıdaki örneğe ve bölüm 2.9.2 ÇEŞİTLİ talimatlara bakın)
• Dizi öğelerini HERHANGİ bir yolla adreslemek yerine diziler için dizini kullanın (bkz. Bölüm 3.6.2 ARRAY veri türü ve dolaylı alan erişimi).

Tablo 7 : Karşılaştırma ANY pointer ve basitleştirmeler

ANY pointerları ne için kullanılır?

 

S7-1200 / 1500 ile basitleştirme

Farklı veri türlerini işleyebilen programlama fonksiyonları

 

Bloklar için InOut parametresi olarak varyant göstergeli işlevler (aşağıdaki örneğe bakın)

 

Dizilerin işlenmesi

·         örneğin, aynı tip elemanların okunması, başlatılması, kopyalanması

 

Varsayılan dizi işlevleri

·         #MyArray [#index] ile okuma ve yazma (bkz. Bölüm 3.6.2 ARRAY veri türü ve dolaylı alan erişimi)

·         MOVE_BLK ile kopyalama (bkz. Bölüm 2.9.1 MOVE talimatları)

·         Mutlak adresleme yoluyla yapıların aktarılması ve performans işleme

 

örneğin, kullanıcı tanımlı yapıları ANY pointer aracılığıyla işlevlere aktarma

 

Yapıları InOut parametreleri olarak aktarma

·         bkz. Bölüm 3.3.2 Referans yoluyla arama


Not 

Yapısal olmayan VARIANT etiketlerinin değerleri kopyalanacaksa, MOVE_BLK_VARIANT yerine VariantGet'i de kullanabilirsiniz (bölüm 2.9.2 VARIANT talimatları).


Misal

VARIANT veri tipiyle kullanıcı programındaki veri tiplerini tanımlamak ve bunlara uygun şekilde cevap vermek mümkündür. Aşağıdaki “MoveVariant” FC kodları olası bir programlamayı gösterir.

• InOut resmi parametresi “InVar” (veri türü VARIANT), veri türünden bağımsız bir etiketi göstermek için kullanılır.

• Gerçek parametrenin veri türü “Type_Of” komutu ile algılanır

• Veri türüne bağlı olarak, etiket değeri “MOVE_BLK_VARIANT” komutu ile farklı çıktı biçimsel parametrelerine kopyalanır.

• Gerçek parametrenin veri türü algılanmazsa, blok bir hata kodu verir.

Şekil 2 : FC “MoveVariant” ın resmi parametresi




CASE TypeOf(#inOutVariant) OF // Check datatypes

Int: // Move Integer

#MoveVariant := MOVE_BLK_VARIANT(SRC := #inOutVariant,

COUNT := 1,

SRC_INDEX := 0,

DEST_INDEX := 0,

DEST => #outInteger);

Real: // Move Real

#MoveVariant := MOVE_BLK_VARIANT(SRC := #inOutVariant,

COUNT := 1,

SRC_INDEX := 0,

DEST_INDEX := 0,

DEST => #outReal);

typeCustom: // Move outTypeCustom

#MoveVariant := MOVE_BLK_VARIANT(SRC := #inOutVariant,

COUNT := 1,

SRC_INDEX := 0,

DEST_INDEX := 0,

DEST => #outTypeCustom);

ELSE // Error, no sufficient datatype

#MoveVariant := WORD_TO_INT(#NO_CORRECT_DATA_TYPE);

// 80B4: Error-Code of MOVE_BLK_VARIANT: Data types do not correspond

END_CASE;




İletişim 

+90 216 305 0485

Coşkun Ermehan

BİZE / ULAŞIN
ADRES: Çarşı Mah. Beyza Sok. No:2 Kartal İstanbul
TELEFON: + 90 (216) 305 04 85 / + 90 (850) 304 0 464
FAKS: + 90 (850) 304 64 24
E-POSTA hmi@hmi.com.tr