Sub Write_Data()
Dim objFSO, objFSOText, objFolder, objFile, objShell
Dim File, FileName, FileExist, Apendix, Row
Dim strDirectory, strFile, strDate
Dim d, m, y, h, mi
'Start sinyali yoksa kayıt oluşturma
If Not SmartTags("Start") Then
Exit Sub
End If
d=Day(Now)
m=Month(Now)
y=Year(Now)
h=Hour(Now)
mi=Minute(Now)
strDate = y & "." & m & "." & d & "-" & h & "." & mi
strDirectory = "C:\Sicaklik Kayit\" & " " & strDate
' Create the File System Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Check if folder exists
If objFSO.FolderExists(strDirectory) Then
Set objFolder = objFSO.GetFolder(strDirectory)
Else
Set objFolder = objFSO.CreateFolder(strDirectory)
End If
' Check if file exists
FileName = "Sicaklik_Kayit.csv"
Set File = CreateObject("Scripting.FileSystemObject")
FileExist = File.FileExists(objFolder & "\" & FileName)
If FileExist = False Then
File.CreateTextFile(objFolder &"\" & FileName)
Set Apendix = File.OpenTextFile(objFolder & "\" & FileName,8)
Apendix.WriteLine("Cihaz_Act_Sicaklik ; Cihaz_Set_Sicaklik; Kalıp_Giriş_Sicaklik ; Kalıp_Çıkış_Sicaklik ; Kalıp1 ; Kalıp2 ; Kalıp3 ; Kalıp4")
Apendix.Close
Set File = Nothing
End If
Set File = CreateObject("Scripting.FileSystemObject")
Set Row = File.OpenTextFile(objFolder &"\"& FileName,8)
Row.WriteLine(SmartTags("DB_ACT_SICAKLIK") & ";" & SmartTags("SET_OKUNAN") & ";" & SmartTags("ARDUINO_DB_SICAKLIK1") & ";" & SmartTags("ARDUINO_DB_SICAKLIK2") & ";" & SmartTags("ARDUINO_DB_SICAKLIK3") & ";" & SmartTags("ARDUINO_DB_SICAKLIK4") & ";" & SmartTags("ARDUINO_DB_SICAKLIK5") & ";" & SmartTags("ARDUINO_DB_SICAKLIK6"))
Row.Close
Set objFolder = Nothing
Set objFile = Nothing
SmartTags("KAYIT_OK")=True
End Sub
Merhabalar. Kurmuş olduğum bir sistemde sahadan gelen 7 adet sicaklik değerini okuyorum. Bu sıcaklik değerlerini start sinyali geldiğinde excele kayıt etmek istiyorum. Bunun için Siemens PC Station oluşturdum ve WinCC Advanced kullandım ve bir script hazırladım. Aslında belli bir noktaya kadarda çalışıyor ama her saniye kayıt kısmını yapamadım. Yazmış olduğum scriptte o günün tarih ve saatinde bir adet klasör oluşturuyorum ve bu klasör içinde de Sıcaklik_Kayit adında bir excel oluşturuyorum. Bu excel içine de kayıt işlemi gerçekleştirebiliyorum. Ama bu kayıt işlemi için ana ekrana bir tane buton koymam ve kayıt için sürekli ona basmam gerekiyor. Yani script PLC'den gelen bir tetik ile çalışmıyor. Yazmış olduğum kod aşağıdadır. Bilen arkadaşlar destek olabilirlerse sevinirim.
Kod:Sub Write_Data() Dim objFSO, objFSOText, objFolder, objFile, objShell Dim File, FileName, FileExist, Apendix, Row Dim strDirectory, strFile, strDate Dim d, m, y, h, mi 'Start sinyali yoksa kayıt oluşturma If Not SmartTags("Start") Then Exit Sub End If d=Day(Now) m=Month(Now) y=Year(Now) h=Hour(Now) mi=Minute(Now) strDate = y & "." & m & "." & d & "-" & h & "." & mi strDirectory = "C:\Sicaklik Kayit\" & " " & strDate ' Create the File System Object Set objFSO = CreateObject("Scripting.FileSystemObject") ' Check if folder exists If objFSO.FolderExists(strDirectory) Then Set objFolder = objFSO.GetFolder(strDirectory) Else Set objFolder = objFSO.CreateFolder(strDirectory) End If ' Check if file exists FileName = "Sicaklik_Kayit.csv" Set File = CreateObject("Scripting.FileSystemObject") FileExist = File.FileExists(objFolder & "\" & FileName) If FileExist = False Then File.CreateTextFile(objFolder &"\" & FileName) Set Apendix = File.OpenTextFile(objFolder & "\" & FileName,8) Apendix.WriteLine("Cihaz_Act_Sicaklik ; Cihaz_Set_Sicaklik; Kalıp_Giriş_Sicaklik ; Kalıp_Çıkış_Sicaklik ; Kalıp1 ; Kalıp2 ; Kalıp3 ; Kalıp4") Apendix.Close Set File = Nothing End If Set File = CreateObject("Scripting.FileSystemObject") Set Row = File.OpenTextFile(objFolder &"\"& FileName,8) Row.WriteLine(SmartTags("DB_ACT_SICAKLIK") & ";" & SmartTags("SET_OKUNAN") & ";" & SmartTags("ARDUINO_DB_SICAKLIK1") & ";" & SmartTags("ARDUINO_DB_SICAKLIK2") & ";" & SmartTags("ARDUINO_DB_SICAKLIK3") & ";" & SmartTags("ARDUINO_DB_SICAKLIK4") & ";" & SmartTags("ARDUINO_DB_SICAKLIK5") & ";" & SmartTags("ARDUINO_DB_SICAKLIK6")) Row.Close Set objFolder = Nothing Set objFile = Nothing SmartTags("KAYIT_OK")=True End Sub
Nasıl yapabilirim gösterebilir misin?Loop kullan
Nasıl yapabilirim gösterebilir misin?
Merhabalar. Kurmuş olduğum bir sistemde sahadan gelen 7 adet sicaklik değerini okuyorum. Bu sıcaklik değerlerini start sinyali geldiğinde excele kayıt etmek istiyorum. Bunun için Siemens PC Station oluşturdum ve WinCC Advanced kullandım ve bir script hazırladım. Aslında belli bir noktaya kadarda çalışıyor ama her saniye kayıt kısmını yapamadım. Yazmış olduğum scriptte o günün tarih ve saatinde bir adet klasör oluşturuyorum ve bu klasör içinde de Sıcaklik_Kayit adında bir excel oluşturuyorum. Bu excel içine de kayıt işlemi gerçekleştirebiliyorum. Ama bu kayıt işlemi için ana ekrana bir tane buton koymam ve kayıt için sürekli ona basmam gerekiyor. Yani script PLC'den gelen bir tetik ile çalışmıyor. Yazmış olduğum kod aşağıdadır. Bilen arkadaşlar destek olabilirlerse sevinirim.
Kod:Sub Write_Data() Dim objFSO, objFSOText, objFolder, objFile, objShell Dim File, FileName, FileExist, Apendix, Row Dim strDirectory, strFile, strDate Dim d, m, y, h, mi 'Start sinyali yoksa kayıt oluşturma If Not SmartTags("Start") Then Exit Sub End If d=Day(Now) m=Month(Now) y=Year(Now) h=Hour(Now) mi=Minute(Now) strDate = y & "." & m & "." & d & "-" & h & "." & mi strDirectory = "C:\Sicaklik Kayit\" & " " & strDate ' Create the File System Object Set objFSO = CreateObject("Scripting.FileSystemObject") ' Check if folder exists If objFSO.FolderExists(strDirectory) Then Set objFolder = objFSO.GetFolder(strDirectory) Else Set objFolder = objFSO.CreateFolder(strDirectory) End If ' Check if file exists FileName = "Sicaklik_Kayit.csv" Set File = CreateObject("Scripting.FileSystemObject") FileExist = File.FileExists(objFolder & "\" & FileName) If FileExist = False Then File.CreateTextFile(objFolder &"\" & FileName) Set Apendix = File.OpenTextFile(objFolder & "\" & FileName,8) Apendix.WriteLine("Cihaz_Act_Sicaklik ; Cihaz_Set_Sicaklik; Kalıp_Giriş_Sicaklik ; Kalıp_Çıkış_Sicaklik ; Kalıp1 ; Kalıp2 ; Kalıp3 ; Kalıp4") Apendix.Close Set File = Nothing End If Set File = CreateObject("Scripting.FileSystemObject") Set Row = File.OpenTextFile(objFolder &"\"& FileName,8) Row.WriteLine(SmartTags("DB_ACT_SICAKLIK") & ";" & SmartTags("SET_OKUNAN") & ";" & SmartTags("ARDUINO_DB_SICAKLIK1") & ";" & SmartTags("ARDUINO_DB_SICAKLIK2") & ";" & SmartTags("ARDUINO_DB_SICAKLIK3") & ";" & SmartTags("ARDUINO_DB_SICAKLIK4") & ";" & SmartTags("ARDUINO_DB_SICAKLIK5") & ";" & SmartTags("ARDUINO_DB_SICAKLIK6")) Row.Close Set objFolder = Nothing Set objFile = Nothing SmartTags("KAYIT_OK")=True End Sub
Sub Write_Data()
Dim objFSO, objFSOText, objFolder, objFile, objShell
Dim File, FileName, FileExist, Apendix, Row
Dim strDirectory, strFile, strDate
Dim d, m, y, h, mi, clock_1s, MBit, Pf
'Start sinyali varsa kayıt oluştur
If SmartTags("Start") Then
d=Day(Now)
m=Month(Now)
y=Year(Now)
h=Hour(Now)
mi=Minute(Now)
strDate = y & "." & m & "." & d & "-" & h & "." & mi
strDirectory = "C:\Sicaklik Kayit\" & " " & strDate
' Create the File System Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Do
' Check if folder exists
If objFSO.FolderExists(strDirectory) Then
Set objFolder = objFSO.GetFolder(strDirectory)
Else
Set objFolder = objFSO.CreateFolder(strDirectory)
End If
' Check if file exists
FileName = "Sicaklik_Kayit.csv"
Set File = CreateObject("Scripting.FileSystemObject")
FileExist = File.FileExists(objFolder & "\" & FileName)
If FileExist = False Then
File.CreateTextFile(objFolder &"\" & FileName)
Set Apendix = File.OpenTextFile(objFolder & "\" & FileName,8)
Apendix.WriteLine("Cihaz_Act_Sicaklik ; Cihaz_Set_Sicaklik; Kalıp_Giriş_Sicaklik ; Kalıp_Çıkış_Sicaklik ; Kalıp1 ; Kalıp2 ; Kalıp3 ; Kalıp4")
Apendix.Close
Set File = Nothing
End If
'clock_1s pulse sinyali ile her saniye verileri excelle kayıt eder
Pf= SmartTags("clock_1s") And Not MBit
MBit=SmartTags("clock_1s")
If Pf Then
Set File = CreateObject("Scripting.FileSystemObject")
Set Row = File.OpenTextFile(objFolder &"\"& FileName,8)
Row.WriteLine(SmartTags("DB_ACT_SICAKLIK") & ";" & SmartTags("SET_OKUNAN") & ";" & SmartTags("ARDUINO_DB_SICAKLIK1") & ";" & SmartTags("ARDUINO_DB_SICAKLIK2") & ";" & SmartTags("ARDUINO_DB_SICAKLIK3") & ";" & SmartTags("ARDUINO_DB_SICAKLIK4") & ";" & SmartTags("ARDUINO_DB_SICAKLIK5") & ";" & SmartTags("ARDUINO_DB_SICAKLIK6"))
Row.Close
Set objFolder = Nothing
Set objFile = Nothing
Else
End If
Loop While SmartTags("start")
Else
End If
'SmartTags("KAYIT_OK")=True
End Sub
Start sinyali varken excell dosyasını oluşturacak ve start kesilene kadar vereceğin her pulse (kodda yazan ("clock_1s") tagı) sinyali için bir satıra değer yazacak.
HMI_Tags sayfasında "Start" sinyaline sağ tıklayıp özelliklerden events'te script'i çağır.
Ekli dosyayı görüntüle 65904
aynı şekilde bir sayfaya buton koyarak script'i yine çağırman gerekiyor (butonu gizleyebilirsin).
sonrası için kodlar aşağıda (kayıt_ok sinyalini istediğin yerde kullanabilirsin);
Sub Write_Data()
Dim objFSO, objFSOText, objFolder, objFile, objShell
Dim File, FileName, FileExist, Apendix, Row
Dim strDirectory, strFile, strDate
Dim d, m, y, h, mi, clock_1s, MBit, Pf
'Start sinyali varsa kayıt oluştur
If SmartTags("Start") Then
d=Day(Now)
m=Month(Now)
y=Year(Now)
h=Hour(Now)
mi=Minute(Now)
strDate = y & "." & m & "." & d & "-" & h & "." & mi
strDirectory = "C:\Sicaklik Kayit\" & " " & strDate
' Create the File System Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Do
' Check if folder exists
If objFSO.FolderExists(strDirectory) Then
Set objFolder = objFSO.GetFolder(strDirectory)
Else
Set objFolder = objFSO.CreateFolder(strDirectory)
End If
' Check if file exists
FileName = "Sicaklik_Kayit.csv"
Set File = CreateObject("Scripting.FileSystemObject")
FileExist = File.FileExists(objFolder & "\" & FileName)
If FileExist = False Then
File.CreateTextFile(objFolder &"\" & FileName)
Set Apendix = File.OpenTextFile(objFolder & "\" & FileName,8)
Apendix.WriteLine("Cihaz_Act_Sicaklik ; Cihaz_Set_Sicaklik; Kalıp_Giriş_Sicaklik ; Kalıp_Çıkış_Sicaklik ; Kalıp1 ; Kalıp2 ; Kalıp3 ; Kalıp4")
Apendix.Close
Set File = Nothing
End If
'clock_1s pulse sinyali ile her saniye verileri excelle kayıt eder
Pf= SmartTags("clock_1s") And Not MBit
MBit=SmartTags("clock_1s")
If Pf Then
Set File = CreateObject("Scripting.FileSystemObject")
Set Row = File.OpenTextFile(objFolder &"\"& FileName,8)
Row.WriteLine(SmartTags("DB_ACT_SICAKLIK") & ";" & SmartTags("SET_OKUNAN") & ";" & SmartTags("ARDUINO_DB_SICAKLIK1") & ";" & SmartTags("ARDUINO_DB_SICAKLIK2") & ";" & SmartTags("ARDUINO_DB_SICAKLIK3") & ";" & SmartTags("ARDUINO_DB_SICAKLIK4") & ";" & SmartTags("ARDUINO_DB_SICAKLIK5") & ";" & SmartTags("ARDUINO_DB_SICAKLIK6"))
Row.Close
Set objFolder = Nothing
Set objFile = Nothing
Else
End If
Loop While SmartTags("start")
Else
End If
'SmartTags("KAYIT_OK")=True
End Sub
Merhaba. Dediğiniz şekilde yaptım ama saece ilk satırını kayıt etti. Sonrasında bir kayıt yapmadı. 1 saniye pulse olarak PLC'nin kendi clock_1Hz sinyalini kullanmıştım. Ondan olabilir belki diyerek kendim 1 saniye pulse verecek şekilde bir yazılım yaptım. Bu sefer hiç kayıt yapmadı. Nerede hata yapıyorum sizce yardımcı olabilir misiniz?
örnek proje ekte TIAPortal V14 ile yazdım. ekran alıntısında ki gibi D sürücüsüne aynı isimde (Storage Card SD) klasör oluştur veya script ten adresi ve klasör ismini istediğin gibi değiştirebilirsin. ama script te belirttiğin adreste aynı isimde klasör olsun.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?