صفحه 1 از 1

آدرس رجیسترهای سیستمی مثل initialو راه اندازی اولیه

ارسال شده: 13 ژوئن 2023, 07:41
توسط keeia
با سلام و احترام
لطفا آدرس یا نحوه استفاده از رجیسترهای سیستمی مثل initialو راه اندازی اولیه جهت استفاده در فانکشن بلاک و مثلا برای استفاده در کانفیگ اولیه مدباس slave ارسال کنید
با تشکر

Re: آدرس رجیسترهای سیستمی مثل initialو راه اندازی اولیه

ارسال شده: 13 ژوئن 2023, 09:05
توسط mahdi.faani
عرض ادب و احترام
برای اینکه بتوانید اقدامات مربوط به راه اندازی اولیه سیستم به طور مثال راه اندازی مدباس Server (Slave)، خواندن اطلاعات ذخیره شده در حافظه ماندگار پی ال سی (Non volatile memory) ، بررسی شرایط فعلی فرایند هنگام RUN شدن CPU و یا انجام سایر اقدامات لازم در Startup دو راه دارید:

1- استفاده از Organization Block مخصوص به اینکار به نام StartupProgram
برای اینکه بتوانید یک Startup Program بسازید در قسمت Program Blocks یک پروگرم بلاک جدید ایجاد کنید و در دیالوگ باز شده StartupProgram را انتخاب کنید. مانند تصویر زیر:

تصویر

هر برنامه ای که درون این پروگرم بلاک نوشته شده باشد ، هنگام RUN شدن CPU و فقط یکبار و قبل از هر برنامه دیگری اجرا خواهد شد.
پیشنهاد می شود در مواقعی که از حافظه Retain استفاده میکنید یا در مواقعی که ورودی سخت افزاری Emergency Stop را فعال کرده اید، علاوه بر اجرای برنامه های مربوط به راه اندازی سیستم برنامه های دیگری به منظور بررسی وضعیت سخت افزار مانند چک کردن ولتاژ باتری بک آپ، چک کردن وضعیت ورودی دیجیتال Emergency Stop ، چک کردن اینکه CPU در حالت COLD یا WARM ران شده باشد و... را در این پروگرم بلاک قرار دهید.

2- استفاده از تگ InitialCall
برخی از Organization Blockها که به صورت دائمی اجرا میشوند مانند CyclicProgram، PeriodicInterrupt، EmergencyStopProgram و TimeOfDayInterrupt در لیست تگ های لوکال خوشان یک تگ به نام InitialCall دارند. مقدار این این تگ در اولین سیکل اجرای آن True خواهد بود و پس از آن همیشه مقدار False را خواهد داشت.

تصویر

در صورتی که نیاز داشته باشید در برنامه اصلی اجرای اولیه CPU را بررسی کنید، میتوانید از این تگ استفاده کنید. دقت داشته باشید که اولین سیکل اجرا برای هر OrganizationBlock ممکن است متفاوت باشد. به طور مثال فرض کنید در برنامه یک CyclicProgram و یک TimeOfDayInterrupt دارید. به محض Run شدن، سی پی یو وارد CyclicProgram خواهد شد و اولین سیکل را اجرا خواهد کرد. اما TimeOfDayInterrupt یک ثانیه بعد اجرا خواهد شد و بنابراین اولین سیکل اجرا برای آن پروگرم بلاک یک ثانیه پس از ران شدن سی پی یو اتفاق خواهد افتاد.