سلام
من سعی دارم با SFC 109 (“PROTECT”) CPU را قفل کنم، اما نتیجه مطابق انتظار نیست.
وقتی مقدار MODE = W#16#000C را تنظیم میکنم (Protection Level 3)، انتظار دارم که CPU کاملاً قفل شود و حتی با رمز هم نتوان تغییراتی اعمال کرد. اما پس از اجرا، همچنان میتوانم رمز را وارد کنم و برنامه را تغییر دهم.
البته وقتی SFC 109 را با یک مقدار MODE نامعتبر (مثلاً `W#16#55`) اجرا میکنم، انتظار دارم که خطای 8090 دریافت کنم، اما مقدار `RET_VAL` همیشه 0 هستش!
این روش را یک بار در OB100، و یک بار هم در یک FC جداگانه در OB1 تست کردم، اما باز هم نتیجهای نداد. همچنین روی مدلهای مختلف CPU هم امتحان کردم، اما همچنان مشکل پابرجاست. در لینک زیر CPU هایی که این بلوک را ساپورت میکنند موجود هستش که برای هیچ کدام نتیجه ای نمیدهد.
https://support.industry.siemens.com/cs/document/61757603/firmware-version-v3-2-7-v3-3-7-for-s7-300-and-et200-cpus-with-new-functions?dti=0&lc=en-GB
سلام
مشکل احتمالاً از یکی از این موارد است:
1. عدم اجرای SFC 109 در لحظه مناسب
این SFC باید فقط در OB100 (Startup) اجرا شود، نه در OB1.
اگر در OB1 اجرا شود، ممکن است درست عمل نکند.
2. ویژگیهای خاص CPU
همه CPUها از Protection Level 3 به روش نرمافزاری پشتیبانی نمیکنند.
در برخی CPUها، تغییر سطح حفاظت ممکن است نیاز به Hardware Configuration داشته باشد.
3. عدم تأثیر فوری قفل
پس از اجرای SFC 109، CPU را یک بار ریست کن و مجدداً تست کن.
برخی تنظیمات فقط پس از Cold Restart یا Power Cycle اعمال میشوند.
4. RET_VAL صفر ولی تنظیم ناموفق؟
مقدار RET_VAL = 0 یعنی SFC اجرا شده، اما اگر حفاظت تغییر نکرده، ممکن است CPU اجازه تغییر این سطح را نداشته باشد.
با Step 7 یا TIA Portal بررسی کن که آیا سطح حفاظت در Module Properties تغییر کرده است یا نه.
پیشنهاد:
SFC 109 را فقط در OB100 بگذار.
بعد از اجرای برنامه، CPU را ریست کن و دوباره بررسی کن.
اگر باز هم نشد، تنظیمات Protection را از HW Config تغییر بده و بررسی کن که CPU این تغییر را پشتیبانی میکند یا نه.