تالار گفتگوی سایت مهندس ماهر

Notifications
Clear all

انتقال دیتاها از Wincc به Excel  

  RSS

Sadeh
(@sadeh)
Reputable Member
عضو شده: 7 سال قبل
ارسال‌ها: 250
۰۵/۱۰/۱۳۹۷ ۸:۲۲ ب.ظ  

اگر یک تگ در wincc  با زمان آپدیت 1 ثانیه داشته باشیم و بخواهیم بصورت آنلاین تغییرات آن را در شیت اکسل ثبت کنیم چه راهکاری وجود دارد ؟  ممنون


نقل‌قول
Rahaei
(@rahaei)
Trusted Member
عضو شده: 7 سال قبل
ارسال‌ها: 54
۰۷/۱۰/۱۳۹۷ ۴:۴۹ ب.ظ  

با سلام

شما میتوانید در نرم افزار 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 ثانیه مورد نظر شما می شود.

با احترام 

علیرضارهایی

 

 


پاسخنقل‌قول
m.elyasi2010
(@m-elyasi2010)
New Member
عضو شده: 6 سال قبل
ارسال‌ها: 2
۱۰/۱۰/۱۳۹۹ ۹:۳۰ ق.ظ  

سلام وقت بخیر 

آیا می توان بصورت اوتوماتیک هر یک ساعت یک بار از مقادیر تگ ها در اکسل نمونه برداره کرد؟ لطفا راهنمایی کنید


پاسخنقل‌قول
m.elyasi2010
(@m-elyasi2010)
New Member
عضو شده: 6 سال قبل
ارسال‌ها: 2
۱۰/۱۰/۱۳۹۹ ۹:۳۸ ق.ظ  
ارسال‌شده توسط: @rahaei

با سلام

شما میتوانید در نرم افزار 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 ثانیه مورد نظر شما می شود.

با احترام 

علیرضارهایی

 

 

این کد رو من نوشتم ولی داخل اکسل چیزی ثبت نمیشه


پاسخنقل‌قول
Rahaei
(@rahaei)
Trusted Member
عضو شده: 7 سال قبل
ارسال‌ها: 54
۲۱/۰۸/۱۴۰۱ ۸:۲۵ ق.ظ  

سلام این کد یک مثاله که باید مسیر آن اصلاح بشه 

در نهایت کد را debug  کنید 


پاسخنقل‌قول
Loghmani
(@loghmani)
Eminent Member
عضو شده: 3 سال قبل
ارسال‌ها: 45
۳۰/۱۱/۱۴۰۱ ۸:۵۸ ب.ظ  

با عرض ادب خدمت آقای رهایی

من با کد های زیر جواب گرفتم.  ابتدا روی درایو 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

This post was modified 56 سال قبل 2 times by Loghmani

پاسخنقل‌قول
negar
(@negar)
Eminent Member
عضو شده: 3 سال قبل
ارسال‌ها: 20
۰۱/۱۲/۱۴۰۱ ۶:۵۶ ب.ظ  

با عرض سلام و احترام

ممنون از اسکریپت ارسالی  . تست کردم جواب داد . فقط  لطفا در مورد روش Debug  کردن  آن هم کمی توضیح بدید من Brekpoint  در برنامه میزارم ولی نمی دونم چطور به مد Debug  برم

 


پاسخنقل‌قول
Rahaei
(@rahaei)
Trusted Member
عضو شده: 7 سال قبل
ارسال‌ها: 54
۰۳/۱۲/۱۴۰۱ ۶:۱۱ ب.ظ  

سلام بله breakpoint اوکیه و مد debug  در WinCC  نداریم منظور همان Compile  و قدم به قدم حل کردن عیوب است . می تونید در هر قدم یک text  را نمایش دهید تا از انجام کد خود مطمن شوید

This post was modified 56 سال قبل 2 times by Rahaei

پاسخنقل‌قول
kolahi
(@kolahi)
Estimable Member
عضو شده: 7 سال قبل
ارسال‌ها: 234

پاسخنقل‌قول
Loghmani
(@loghmani)
Eminent Member
عضو شده: 3 سال قبل
ارسال‌ها: 45
۰۴/۱۲/۱۴۰۱ ۹:۳۷ ب.ظ  

@negar

درود و ادب

یک روش ساده اینه که بعد از هر سطر دستور زیر را بنویسید  و VB Scriptرا ذخیره و اجرا کنید اگر پیام successfull  داد یعنی تا اینجای برنامه درسته  البته این به معنی دیباگ نیست

Msgbox ("Successful")


پاسخنقل‌قول
Sadeh
(@sadeh)
Reputable Member
عضو شده: 7 سال قبل
ارسال‌ها: 250
۱۰/۱۲/۱۴۰۱ ۹:۵۰ ب.ظ  

@loghmani

با تشکر از شما

این اسکریپت را در TIA Portal    تست کردم . بدون مشکل جواب داد. فقط نمی توان زمان تریگر را  کمتر از 1 دقیقه انتخاب کرد. لطفا راهنمایی کنید چطور هر یک ثانیه دیتا را در اکسل آپدیت کنم

ممنون


پاسخنقل‌قول
Loghmani
(@loghmani)
Eminent Member
عضو شده: 3 سال قبل
ارسال‌ها: 45
۱۱/۱۲/۱۴۰۱ ۹:۵۸ ق.ظ  

@sadeh

بله درسته جناب . کمترین زمان قابل انتخاب  1min هست ولی می تونید اجرای اسکریپت را به یک تگ وابسته کنید که بصورت پالس یک ثانیه on/off  میشه . البته  زمان های کوتاه برای اجرای مداوم اسکریپت می تونه مشکل  ایجاد کنه و صفحه HMI  هنگ می کنه


پاسخنقل‌قول
Share: