سلام دوستان دو سوال در مورد db داشتم
اول این که کابرد نوشتن struct(ساختار) در db اشتراکی چه هست
و دوم این که ما از طریق ob1 میتونیم هم db اشتراکی و هم db اختصاصی رو از طریق آدرسی دهی فراخوانی کنیم پس تفاوت db اشتراکی با اختصاصی چه هست؟
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
لطفاً به طور خلاصه توضیح دهید که چرا فکر می کنید این سؤال باید گزارش شود.
لطفاً به طور خلاصه توضیح دهید که چرا فکر می کنید این پاسخ باید گزارش شود.
لطفاً به طور خلاصه توضیح دهید که چرا فکر می کنید این کاربر باید گزارش شود.
سلام
Db اختصاصی فقط واسه اون FB هست که میسازی و واسه خود fb هست ولی DB اشتراکی که میسازی همه جا میشه ازش استفاده کرد
1. کاربرد نوشتن ساختار (Struct) در DB اشتراکی چیست؟
در برنامهنویسی PLC با استفاده از Struct در DB اشتراکی میتوان دادههای پیچیده و گروهبندی شدهای از نوعهای مختلف (مانند Integer، Real، Boolean و …) را در قالب یک ساختار جمعآوری و بهصورت یکپارچه مدیریت کرد.
استفاده از Struct به شما اجازه میدهد دادههای مختلف مرتبط به یک مفهوم خاص را در قالب یک واحد و بهصورت دستهبندی شده ذخیره کنید. مثلاً اگر در پروژهای یک ماشین دارای پارامترهای مختلفی (مانند دما، فشار، سرعت، و وضعیت عملکرد) باشد، میتوانید تمام این پارامترها را در یک Struct داخل یک DB اشتراکی قرار دهید.
مزایا:
خوانایی و سازماندهی بهتر کد.
دسترسی آسانتر به دادهها، چرا که بهجای استفاده از متغیرهای مجزا، دادهها بهصورت ساختاریافته در دسترس هستند.
امکان استفاده از ساختار مشابه در بخشهای مختلف برنامه، بدون نیاز به تعریف متغیرهای مجزا و تکراری.
2. تفاوت بین DB اشتراکی و DB اختصاصی چیست؟
DB اشتراکی (Global DB): این نوع DB بهصورت اشتراکی و عمومی در دسترس تمام بخشهای برنامه است و همهی بخشها میتوانند به دادههای ذخیره شده در آن دسترسی داشته باشند. معمولاً برای دادهها و متغیرهایی که نیاز به اشتراکگذاری بین ماژولها و بخشهای مختلف برنامه دارند، استفاده میشود. DB اشتراکی به راحتی میتواند توسط سایر بخشهای برنامه از جمله OB1 آدرسدهی و فراخوانی شود.
DB اختصاصی (Instance DB): این نوع DB بهصورت اختصاصی برای یک بلاک خاص (معمولاً برای FC یا FB) ساخته میشود. DB اختصاصی بهطور خودکار برای هر FB ایجاد میشود تا دادههای مربوط به آن FB را ذخیره و مدیریت کند. این نوع DB، دادهها را در خود نگه میدارد و در زمان فراخوانی آن FB استفاده میشود. در واقع، هر FB میتواند یک Instance DB داشته باشد که اطلاعات مربوط به وضعیت و متغیرهای داخلی آن بلاک را ذخیره کند. همچنین، DB اختصاصی بهطور مستقیم از طریق OB1 فراخوانی نمیشود و فقط از طریق FB مربوطه استفاده میشود.
همون طور که دوستمون گفتن، خلاصه تفاوتها:
DB اشتراکی: برای دادههای عمومی و اشتراکی در برنامه است و توسط همه بخشها قابل دسترسی است.
DB اختصاصی: بهطور خاص برای یک FB ساخته میشود و فقط به همان FB اختصاص دارد.
یه تفاوت بین دیتابلاک جهانی و اختصاصی اینه اولی رو میشه غیربهینه کرد تا داده هاش رو ریتین کرد