ST ile DPLSV komutu sürme

Cevapla
Kullanıcı avatarı
DeisS
Mesajlar: 17
Kayıt: 08 Mar 2021, 15:07
İletişim:

ST ile DPLSV komutu sürme

Mesaj gönderen DeisS »

Merhabalar.
Delta PLC ile yeni çalışmıyorum ve ST dilini yeni öğreniyorum.
Resimde görülen DPLSV komutunu ST ile sürmeye çalıştığımda ilk sürüşte sorun olmuyor ama komutu ikinci defa aktif ettiğimde DPLSV komutu çalışmıyor.
Hatamın nerede olduğunu bulamadım yardımcı olurmusunuz?
Bu arada elimde gerçek PLC olmadığı için bu işlemleri simulasyonda deniyorum.
Screenshot_2.jpg
Screenshot_3.jpg
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
Kullanıcı avatarı
DeisS
Mesajlar: 17
Kayıt: 08 Mar 2021, 15:07
İletişim:

Re: ST ile DPLSV komutu sürme

Mesaj gönderen DeisS »

Kod: Tümünü seç


m_ayHiz_Tersleme := hmi_m_ayHiz * -1 ;
m_igHiz_Tersleme := hmi_m_igHiz * -1 ;

IF NOT(Otomatik) AND NOT(Home_Basla) THEN

IF hmi_mIleri_S1 AND NOT(hmi_mGeri_S1) AND NOT(xİleriSensor_R1) THEN
          DPLSV( hmi_m_igHiz , yPals_S1 , yYon_S1 );
END_IF; 

IF hmi_mGeri_S1 AND NOT(hmi_mIleri_S1) AND NOT(xGeriSensor_R1) THEN
          DPLSV( m_igHiz_Tersleme[0] , yPals_S1 , yYon_S1 );
END_IF;

IF hmi_mAsagi_S2 AND NOT(hmi_mYukari_S2) AND NOT(xAsagiSensor_R1) THEN
          DPLSV( hmi_m_ayHiz , yPals_S2 , yYon_S2 );   
END_IF;

IF hmi_mYukari_S2 AND NOT(hmi_mAsagi_S2) AND NOT(xYukariSensor_R1) THEN
          DPLSV( m_ayHiz_Tersleme[0] , yPals_S2 , yYon_S2 );
END_IF;

IF NOT(hmi_mIleri_S1) AND NOT(hmi_mGeri_S1) THEN
          yPals_S1 := FALSE ;
          yYon_S1 := FALSE ;  
END_IF;

IF NOT(hmi_mYukari_S2) AND NOT(hmi_mAsagi_S2) THEN
          yPals_S2 := FALSE ;
          yYon_S2 := FALSE ;  
END_IF;
END_IF;





Kullanıcı avatarı
DeisS
Mesajlar: 17
Kayıt: 08 Mar 2021, 15:07
İletişim:

Re: ST ile DPLSV komutu sürme

Mesaj gönderen DeisS »

DeisS yazdı: 08 Mar 2021, 15:15 Merhabalar.
Delta PLC ile yeni çalışmıyorum ve ST dilini yeni öğreniyorum.
Burayı yanlış yazmışım.
Delta PLC ile yeni çalışıyorum olacaktı kusura bakmayın
Kullanıcı avatarı
Coşkun
Mesajlar: 129
Kayıt: 07 Mar 2018, 14:26
İletişim:

Re: ST ile DPLSV komutu sürme

Mesaj gönderen Coşkun »

Merhaba,

Çalışan kod örneğini aşağıda paylaşıyorum.

DPLSV_ST_Programing.png

Kod: Tümünü seç

m_ayHiz_Tersleme := hmi_m_ayHiz * -1 ;
m_igHiz_Tersleme := hmi_m_igHiz * -1 ;

IF hmi_mIleri_S1 AND NOT(hmi_mGeri_S1) AND NOT(xİleriSensor_R1) THEN
          DPLSV( hmi_m_igHiz , yPals_S1 , yYon_S1 );
ELSIF hmi_mGeri_S1 AND NOT(hmi_mIleri_S1) AND NOT(xGeriSensor_R1) THEN
          DPLSV( m_igHiz_Tersleme , yPals_S1 , yYon_S1 );
ELSE
            SM470 := TRUE;  //Output completion auto-reset Y0.0
END_IF;

IF hmi_mAsagi_S2 AND NOT(hmi_mYukari_S2) AND NOT(xAsagiSensor_R1) THEN
          DPLSV( hmi_m_ayHiz , yPals_S2 , yYon_S2 );   
ELSIF hmi_mYukari_S2 AND NOT(hmi_mAsagi_S2) AND NOT(xYukariSensor_R1) THEN
          DPLSV( m_ayHiz_Tersleme , yPals_S2 , yYon_S2 );
ELSE
            SM490 := TRUE;  //Output completion auto-reset Y0.2
END_IF;

//SM470 := TRUE;  //Output completion auto-reset Y0.0
//SM490 := TRUE;  //Output completion auto-reset Y0.2
//SM510 := TRUE;  //Output completion auto-reset Y0.4
//SM530 := TRUE;  //Output completion auto-reset Y0.6
//SM550 := TRUE;  //Output completion auto-reset Y0.8
//SM570 := TRUE;  //Output completion auto-reset Y0.10


İyi çalışmalar dilerim.
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
Coşkun Özdemir - Senior Field Application Engineer - DELTA Electronics Turkey
Kullanıcı avatarı
DeisS
Mesajlar: 17
Kayıt: 08 Mar 2021, 15:07
İletişim:

Re: ST ile DPLSV komutu sürme

Mesaj gönderen DeisS »

Coşkun Bey öncelikle teşekkürler.
Aklıma takılan birşey daha sormak istiyorum.
Bu şekilde sistem doğru ve güzel çalışıyor.
Peki ben programın başka bir yerinde ilgili çıkışları DDRVA,DDRVI,DZRN gibi farklı komutlarıda çalıştırmak istediğimde buradaki ELSE şartı bu çalışmayı engelleyecek.
Bunun önüne geçmek için ne yapabilirim?
Teşekkür ederim.
Kullanıcı avatarı
Coşkun
Mesajlar: 129
Kayıt: 07 Mar 2018, 14:26
İletişim:

Re: ST ile DPLSV komutu sürme

Mesaj gönderen Coşkun »

Merhaba,

Tamamen tüm IF koşullarını bir başka IF koşulu içerisine alabilirsiniz. Örneğin bu manuel için bir çalışma olur ve manuel şartı kalkınca ELSE şartı da çalışmaz.

Yada aşağıdaki gibi bir ELSIF yapabilirsiniz.

DPLSV_ST_Programing_v2.png

Kod: Tümünü seç

m_ayHiz_Tersleme := hmi_m_ayHiz * -1 ;
m_igHiz_Tersleme := hmi_m_igHiz * -1 ;

IF hmi_mIleri_S1 AND NOT(hmi_mGeri_S1) AND NOT(xİleriSensor_R1) THEN
          DPLSV( hmi_m_igHiz , yPals_S1 , yYon_S1 );
          Komut_Aktif_1 := TRUE;
ELSIF hmi_mGeri_S1 AND NOT(hmi_mIleri_S1) AND NOT(xGeriSensor_R1) THEN
          DPLSV( m_igHiz_Tersleme , yPals_S1 , yYon_S1 );
          Komut_Aktif_1 := TRUE;
ELSIF NOT(hmi_mIleri_S1) AND NOT(hmi_mGeri_S1) AND Komut_Aktif_1 THEN
          SM470 := TRUE;  //Output completion auto-reset Y0.0
          Komut_Aktif_1 := FALSE;
END_IF;

IF hmi_mAsagi_S2 AND NOT(hmi_mYukari_S2) AND NOT(xAsagiSensor_R1) THEN
          DPLSV( hmi_m_ayHiz , yPals_S2 , yYon_S2 );
          Komut_Aktif_2 := TRUE;   
ELSIF hmi_mYukari_S2 AND NOT(hmi_mAsagi_S2) AND NOT(xYukariSensor_R1) THEN
          DPLSV( m_ayHiz_Tersleme , yPals_S2 , yYon_S2 );
          Komut_Aktif_2 := TRUE;
ELSIF NOT(hmi_mYukari_S2) AND NOT(hmi_mAsagi_S2) AND Komut_Aktif_2 THEN
          SM490 := TRUE;  //Output completion auto-reset Y0.2
          Komut_Aktif_2 := FALSE;
END_IF;

//SM470 := TRUE;  //Output completion auto-reset Y0.0
//SM490 := TRUE;  //Output completion auto-reset Y0.2
//SM510 := TRUE;  //Output completion auto-reset Y0.4
//SM530 := TRUE;  //Output completion auto-reset Y0.6
//SM550 := TRUE;  //Output completion auto-reset Y0.8
//SM570 := TRUE;  //Output completion auto-reset Y0.10

Özel bitler ve komutların kullanımı için daha detaylı bilgiye ulaşmak isterseniz aşağıdaki linkte bulunan "AS Series Programming Manual" dokümanından faydalanabilirsiniz.

AS PLC Manuals




İyi çalışmalar dilerim
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
Coşkun Özdemir - Senior Field Application Engineer - DELTA Electronics Turkey
Kullanıcı avatarı
DeisS
Mesajlar: 17
Kayıt: 08 Mar 2021, 15:07
İletişim:

Re: ST ile DPLSV komutu sürme

Mesaj gönderen DeisS »

Coşkun Bey;
Merhabalar.
DZRN komutunu görseldeki şekilde kullanmaya çalıştığımda
Vermiş olduğunuz CASE kullanım örneğinden yola çıkarak DZRN komutu ilk seferde çalışıyor ama daha sonrasında PLC stop-run konumunu değiştirmeden veya yeniden enerjilenmeden ikinci defa çalışmıyor.
Buradaki hata veya eksik nedir acaba?
AS plc manuelinde DZRN ile ilgili ST kullanım örneğine yer verilmemiş.
Screenshot_1.jpg
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
Kullanıcı avatarı
Coşkun
Mesajlar: 129
Kayıt: 07 Mar 2018, 14:26
İletişim:

Re: ST ile DPLSV komutu sürme

Mesaj gönderen Coşkun »

Merhaba,

Konu ile ilgili gerekli bildirimler yapılmıştır. Sorunun çözümü için bir gelişme olduğunda sizi buradan bilgilendireceğim.



Saygılarımla, İyi çalışmalar dilerim.
Coşkun Özdemir - Senior Field Application Engineer - DELTA Electronics Turkey
Kullanıcı avatarı
Coşkun
Mesajlar: 129
Kayıt: 07 Mar 2018, 14:26
İletişim:

Re: ST ile DPLSV komutu sürme

Mesaj gönderen Coşkun »

Merhaba,

Şu an için DZRN ve DZRN2 komutları ST programlama dilini desteklememektedir.

Aşağıdaki resimde "Auto Reset" bayrağının desteklendiği komutlar gösterilmektedir.

auto-reset flag.jpg


Saygılarımla, iyi çalışmalar dilerim.
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
Coşkun Özdemir - Senior Field Application Engineer - DELTA Electronics Turkey
Cevapla

“DIAStudio Forum” sayfasına dön