تالار گفتگوی سایت مهندس ماهر
درود بر اساتید محترم
من یک آناوگ ورودی از جنس ولتاژ دارم که بین صفر تا 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 بنویسم یا فانکشن در برنامه طراحی کنم . لاجیکش رو چطور بنویسم.
با تشکر فراوان
این کارت 0-10 ولت داره ها
سلام
این موضوع در کلایس 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
ممنون جناب مهندس کلاهی
پاسختون فوق العاده بود
من که سعادت پیدا نکردم تو کلاس PCS7 استاد ماهر شرکت کنم
@kolahiعالی بود