این ارور رو هم بررسی کن Error:Parameter overflow o...
Tạo vào: 8 tháng 2, 2025
Tạo vào: 8 tháng 2, 2025
این ارور رو هم بررسی کن
Error:Parameter overflow occurred for 'UpperLimit' of 'Subsystem2/Saturation'. The value of the parameter is outside the range that the run-time data type ufix8_En7 can represent. The specified value, 10, was saturated to the closest representable value 1.9921875. Quantization error occurred with an absolute difference of 8.0078125 and a relative difference of 0.80078125.
Suggested Actions:
Inspect details in the Parameter Quantization Advisor.
این خطا بیان میکند که مقدار «10» که شما برای پارامتر «UpperLimit» (در بلاک Saturation) تعیین کردهاید، در دادهتیپ یا «Data Type» فعلی (ufix8_En7) قابل نمایش یا ذخیره نیست. این دادهتیپ، یک عدد صحیح نامنشوری (unsigned fixed-point) با طول کلمه ۸ بیت و اسکیلینگ است. بهخاطر محدودیت در اندازه و نوع این دادهتیپ، بزرگترین مقداری که میتواند نمایش دهد حدود ۱٫۹۹۲۱۸۷۵ است. بنابراین وقتی شما «10» را بهعنوان UpperLimit میگذارید، ابزار آن را روی همان حداکثر قابل نمایش یعنی حدود ۱٫۹۹۲۱۸۷۵ اشباع (saturate) میکند، و در نتیجه آن خطا/هشدار مبنی بر “Parameter overflow” رخ میدهد.
برای رفع مشکل، چند راه اصلی وجود دارد:
تغییر دادهتیپ (Data Type) به نوعی بزرگتر یا متفاوت
اگر نیاز است که مقدار «10» حتماً در خروجی نمایش داده شود یا ساتوریشن تا عدد ۱۰ را پوشش دهد، میتوانید دادهتیپ را تغییر دهید؛ مثلاً از ufix16_En7 یا حتی یک دادهتیپ شناور (single/double) در صورت امکان استفاده کنید تا بازه نمایش عدد مورد نظر وسیعتر شود.
تنظیم مجدد تنظیمات Fixed-point
کاهش مقدار UpperLimit
اگر به دلایل طراحی، عملاً مقدار ۱۰ نیازی نیست در این اشباع نمایش داده شود (و مقادیر بزرگتر هیچگاه رخ نمیدهند)، میتوانید UpperLimit را در حد همان ظرفیت دیتا تایپ (مثلاً ۱٫۹۹۲۱۸۷۵) یا عددی مناسبتر تنظیم کنید. ولی این بستگی به منطق مدار یا مدل شما دارد و احتمالاً باعث تغییر رفتار مدل خواهد شد.
استفاده از مشاورهی ابزار «Parameter Quantization Advisor»
در متلب/سیمولینک، ابزاری به نام Parameter Quantization Advisor وجود دارد که پیشنهاداتی برای تغییر مقیاس (scaling) یا دادهتیپ ارائه میدهد. با مراجعه به این ابزار (از طریق Diagnostic Viewer یا از منوی Fixed-Point Tool) میتوانید گزینههای پیشنهادی را بررسی و اعمال کنید.
در مجموع، اگر واقعاً عدد ۱۰ برای طراحی شما کلیدی است، روش استاندارد این است که دادهتیپ یا تنظیمات Fixed-Point را طوری تغییر دهید که ۱۰ را پوشش دهد و خطای اشباع برطرف شود. در غیر این صورت میتوانید UpperLimit را به حداکثر نمایشی دادهتیپ فعلی کاهش دهید.