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

Notifications
Clear all

مشکل اسکیل آنالوگ با چنل درایور PCS7  

  RSS

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

درود بر اساتید محترم

من یک آناوگ ورودی از جنس ولتاژ دارم که بین صفر تا 10 ولت تغییر می کنه و به کارت AI 8x12 bit 7KF02  متصله. این کارت در Hwconfig  تنظیم صفر تا 10 ولت نداره و مجبورم 10v-  تا 10v+  را انتخاب کنم. وسیله بین صفر تا 100  کالیبره شده

با این شرایط وقتی از لایبراری PCS7AP Lib   از بلوک PCS7AnIn  استفاده می کنم و بین صفر تا 100 اسکیل میکنم درست کار نمی کنه و مجبورم بین 100-  تا 100+  تنظیمش کنم که درسته.

مشکل اینه که Hi  و Lo  را میخام از wincc  بهش بدم . بازه منفی برای اپراتور معنا نداره و فقط 0 تا 100 را وارد می کنه . تو این شرایط اگر اپراتور 0 تا 100 وارد کرد چطور من اونو تبدیل به 100-  تا 100+  کنم . آیا باید Scriptدر wincc  بنویسم یا فانکشن در برنامه طراحی کنم . لاجیکش  رو چطور بنویسم.

با تشکر فراوان

 


نقل‌قول
شاهین فضلی
(@en-sh66fazli)
Reputable Member
عضو شده: 7 سال قبل
ارسال‌ها: 324
۰۹/۰۳/۱۴۰۱ ۱:۳۹ ق.ظ  

این کارت 0-10 ولت داره ها


پاسخنقل‌قول
kolahi
(@kolahi)
Estimable Member
عضو شده: 7 سال قبل
ارسال‌ها: 234
۰۹/۰۳/۱۴۰۱ ۱۰:۳۷ ب.ظ  

سلام

این موضوع در کلایس PCS7  که مدت ها پیش با استاد ماهر داشتم با جزییات بحث شد و من با اجازه ایشون مواردی که نت برداری کرده بودم را براتون مینویسم

خب  اول اینکه چنل درایور ها  مثه scale  قدیمی پایه Bipolar  ندارن و متناسب با تنظیمات کارت در سخت افزار دیتا می گیرند . وقتی تنظیم روی -10v .. +10v  باشه و سیگنال 0…10 V  باشه راه حل برای  اینکه مقادیرhi  و lo را از os  وارد کنیم  اینه که اول با بلوک StruScOu دو مقدار real  را merg و به پایه scale  درایور بدیم  فرض کنید این دو مقدار از یک دیتا بلوک میاد با نام های HiPLC  و LoPLC  بعدش برای ادامه کار دو راه وجود داره:

  • با اسکریپت نویسی در wincc
  • با فانکشن نویسی در PLC

 درروش اول  ابتدا دو تا تگ در wincc  به HiWincc  و LoWincc  به دیتا بلوک متصل می کنیم. یک تگ  داخلی از جنس real   فرضا به نام Test  تعریف می کنیم . آنچه باید تغییر کند مقدار Lowincc  است که اپراتور  اگر صفر وارد کرد باید بصورت عدد –hi  به PLC  داده بشه . به عبارت دیگر یک نمودار خطی وجود داره بصورت

LoPLC = 2* LoWinCC - HiWinCC

در گرافیک تگ های HiWinCC  و Test  را  برای وارد کردن حد پایین به I/O Field  وصل می کنیم .   فرمول فوق در یک C-Action  نوشته میشه یعنی بصورت زیر

float  a , b , c;

a=GetTagFloat("Test");

c=GetTagFloat("HiWincc");

b=2*a-c;

SetTagFloat("LoWinCC",b);

تریگر این اکشن را مثلا روی 2 ثانیه تنظیم و نتیجه را تست می کنیم.

 

در روش دوم کار ساده تر است . مقادیری که اپراتور وارد می کند را به یک FB  که خودمان نوشته ایم میدیم. این FB  همان فرمول رادارد و با زبان دلخواه مثلا SCL  نوشته میشه و در آخر مثه عکس ضمیمه در CFC  صدا زده میشه

FUNCTION_BLOCK FB1

VAR_INPUT

HiWinCC , LoWinCC:real;

END_VAR

 

VAR_OUTPUT

out:REAL;

END_VAR

 

out:= 2* LoWinCC- HiWinCC;

 

END_FUNCTION_BLOCK

 

 


amir omidi و شاهین فضلی پسندیدند
پاسخنقل‌قول
Sadeh
(@sadeh)
Reputable Member
عضو شده: 7 سال قبل
ارسال‌ها: 250
۱۰/۰۳/۱۴۰۱ ۷:۳۳ ق.ظ  

ممنون جناب مهندس کلاهی

پاسختون فوق العاده بود

من که سعادت پیدا نکردم تو کلاس PCS7 استاد ماهر شرکت کنم


پاسخنقل‌قول
شاهین فضلی
(@en-sh66fazli)
Reputable Member
عضو شده: 7 سال قبل
ارسال‌ها: 324
۱۸/۰۳/۱۴۰۱ ۹:۱۷ ب.ظ  

@kolahiعالی بود


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