تالار گفتگوی سایت مهندس ماهر
اگر یک تگ در wincc با زمان آپدیت 1 ثانیه داشته باشیم و بخواهیم بصورت آنلاین تغییرات آن را در شیت اکسل ثبت کنیم چه راهکاری وجود دارد ؟ ممنون
با سلام
شما میتوانید در نرم افزار WinCC در قسمت Global Script با ایجاد یک Action با یکی از زبان های C و VBS اطلاعات مورد نظر خود ( مانند مقدار تگ ها ، متن ها و .......) را از سلول های Excel بخوانید و یا در آنها بنویسید و برای تنظیم زمان خواندن یا نوشتن و یا به اصطلاح Trigger از انواع Trigger هایی که WinCC در اختیار شما قرار داده است استفاده کنید .
نمونه ای از دستورات به زبان VBS در WinCC بر :
Dim objExcelApp
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = True
'ExcelExample.xls is to create before executing this procedure.
'Replace <path> with the real path of the file ExcelExample.xls.
objExcelApp.Workbooks.Open "<path>\ExcelExample.xls"
objExcelApp.Cells(4, 3).Value = SmartTags("Variablenname")
objExcelApp.ActiveWorkbook.Save
objExcelApp.Workbooks.Close
objExcelApp.Quit
Set objExcelApp = Nothing
در این مورد از Trigger نوع Timer و البته نوع Cyclic آن استفاده می شود که در حالت استاندارد ها زمان آنها از 250ms شروع می شود و تا 1 ساعت ادامه دارد که شامل 1 ثانیه مورد نظر شما می شود.
با احترام
علیرضارهایی
سلام وقت بخیر
آیا می توان بصورت اوتوماتیک هر یک ساعت یک بار از مقادیر تگ ها در اکسل نمونه برداره کرد؟ لطفا راهنمایی کنید
با سلام
شما میتوانید در نرم افزار WinCC در قسمت Global Script با ایجاد یک Action با یکی از زبان های C و VBS اطلاعات مورد نظر خود ( مانند مقدار تگ ها ، متن ها و .......) را از سلول های Excel بخوانید و یا در آنها بنویسید و برای تنظیم زمان خواندن یا نوشتن و یا به اصطلاح Trigger از انواع Trigger هایی که WinCC در اختیار شما قرار داده است استفاده کنید .
نمونه ای از دستورات به زبان VBS در WinCC بر :
Dim objExcelApp
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = True
'ExcelExample.xls is to create before executing this procedure.
'Replace <path> with the real path of the file ExcelExample.xls.
objExcelApp.Workbooks.Open "<path>\ExcelExample.xls"
objExcelApp.Cells(4, 3).Value = SmartTags("Variablenname")
objExcelApp.ActiveWorkbook.Save
objExcelApp.Workbooks.Close
objExcelApp.Quit
Set objExcelApp = Nothing
در این مورد از Trigger نوع Timer و البته نوع Cyclic آن استفاده می شود که در حالت استاندارد ها زمان آنها از 250ms شروع می شود و تا 1 ساعت ادامه دارد که شامل 1 ثانیه مورد نظر شما می شود.
با احترام
علیرضارهایی
این کد رو من نوشتم ولی داخل اکسل چیزی ثبت نمیشه
سلام این کد یک مثاله که باید مسیر آن اصلاح بشه
در نهایت کد را debug کنید
با عرض ادب خدمت آقای رهایی
من با کد های زیر جواب گرفتم. ابتدا روی درایو c یک فایل اکسل بنام ExcelExam2 بسازید. درضمن فایل اکسل بایستی xls باشد با اکسل xlsx جواب نداد.
من عدد 123 را در اکسل ریختم . بجای اون می تونید تگ دلخواه را با فرمتی که آقای رهایی نوشتن قرار بدین
Option Explicit
Function action
Dim objExcelApp
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = False
objExcelApp.Workbooks.Open "c:\ExcelExam2.xls"
objExcelApp.Cells(4, 3).Value = "123"
objExcelApp.DisplayAlerts = False
objExcelApp.ActiveWorkbook.Save
objExcelApp.Workbooks.Close
objExcelApp.Quit
Set objExcelApp = Nothing
End Function
با عرض سلام و احترام
ممنون از اسکریپت ارسالی . تست کردم جواب داد . فقط لطفا در مورد روش Debug کردن آن هم کمی توضیح بدید من Brekpoint در برنامه میزارم ولی نمی دونم چطور به مد Debug برم
سلام بله breakpoint اوکیه و مد debug در WinCC نداریم منظور همان Compile و قدم به قدم حل کردن عیوب است . می تونید در هر قدم یک text را نمایش دهید تا از انجام کد خود مطمن شوید
درود و ادب
یک روش ساده اینه که بعد از هر سطر دستور زیر را بنویسید و VB Scriptرا ذخیره و اجرا کنید اگر پیام successfull داد یعنی تا اینجای برنامه درسته البته این به معنی دیباگ نیست
Msgbox ("Successful")
با تشکر از شما
این اسکریپت را در TIA Portal تست کردم . بدون مشکل جواب داد. فقط نمی توان زمان تریگر را کمتر از 1 دقیقه انتخاب کرد. لطفا راهنمایی کنید چطور هر یک ثانیه دیتا را در اکسل آپدیت کنم
ممنون
بله درسته جناب . کمترین زمان قابل انتخاب 1min هست ولی می تونید اجرای اسکریپت را به یک تگ وابسته کنید که بصورت پالس یک ثانیه on/off میشه . البته زمان های کوتاه برای اجرای مداوم اسکریپت می تونه مشکل ایجاد کنه و صفحه HMI هنگ می کنه