در فرآیند ماشینکاری با Siemens NX CAM، با وجود پیشرفتهای چشمگیر در تکنولوژی، همچنان خطاهای متعددی در مرحله برنامه نویسی، تعریف ابزار، تنظیم مسیر و پس پردازش (Post Processing) اتفاق میافتد.
اشتباه در ماشینکاری با NX میتواند منجر به خرابی قطعه، آسیب به ابزار یا حتی آسیب به ماشین CNC شوند.
عمده مشکلات زمانی رخ میدهند که بین تعریفهای نرم افزاری در محیط NX و پارامترهای واقعی ماشین هماهنگی کامل وجود نداشته باشد.
شناخت این خطاهای رایج، نخستین گام برای ارتقای دقت و ایمنی در تولید است.
در این مقاله به بررسی اشتباه در ماشینکاری با NX و عیب یابی اشتباه در ماشینکاری با NX خواهیم پرداخت.
1# اشتباه در ماشینکاری با NX
اشتباه در ماشینکاری با NX میتواند ناشی از اشتباهات برنامه نویسی و تنظیمات نادرست دستگاه گرفته تا اشکالات نرم افزاری و محدودیتهای سخت افزاری خطاهای خاص شامل مشکلات تشخیص برخورد، مشکلات مربوط به فایلهای دانش ماشینکاری و مشکلات مربوط به شبیه سازی و پس پردازش میشود.
در این بخش به بررسی اشتباه در ماشینکاری با NX خواهیم پرداخت.
1-1# خطاهای برنامه نویسی و راه اندازی
از جمله موارد اشتباه در ماشینکاری با NX خطاهای برنامه نویسی و راه اندازی است که به صورت زیر خواهد بود:
- تشخیص برخورد: حرکاتی که مربوط به نزدیک شدن یا جمع شدن، چرخش و تغییر ابزار یا دستگاههای گیره بندی نامناسب است که به شکلی نادرست برنامه ریزی شدهاند، میتوانند منجر به برخورد در حین شبیه سازی یا ماشینکاری شوند.
شبیه سازی NX میتواند به شناسایی این مشکلات کمک کند. - راه اندازی دستگاه: خطا در تنظیم فاصله محوری (فاصله بین نوک ابزار و نقطه محوری دستگاه) میتواند منجر به کاهش دقت شود.
روشهای اندازه گیری فاصله محوری بسته به نوع دستگاه متفاوت است. - دانش ماشینکاری: خطاهای موجود در فایلهای دانش ماشینکاری یعنی فایلهای xml. میتوانند باعث بروز هشدارها یا روشهای ماشینکاری نادرست شوند، به خصوص هنگام به روزرسانی از نسخههای قدیمیتر NX.
مطمئن شوید که کدگذاری فایل صحیح بوده و فایل با استفاده از ویرایشگر دانش ماشینکاری باز و ذخیره شده است. - شبیه سازی: مشکلات شبیه سازی میتواند ناشی از انتخاب نادرست مسیرهای ابزار، محورهای از دست رفته در مدل سینماتیکی یا مشکلات مربوط به خود موتور شبیه سازی باشد.
2-1# مشکلات مربوط به نرم افزار
از جمله موارد اشتباه در ماشینکاری با NX مشکلات مربوط به نرم افزار است که عبارت اند از:
- نقض دسترسی به حافظه: این موارد میتوانند، زمانی رخ دهند که NX سعی میکند به حافظه ای که نباید دسترسی پیدا کند، دسترسی پیدا کرده و منجر به خاتمه برنامه شود.
- تولید افزایشی: NX هنگام تلاش برای ورود به محیط تولید افزایشی NX پس از کار در زمینههای دیگر، ممکن است خطاهایی رخ دهد.
- پس پردازش: ممکن است در طول پس پردازش، به خصوص هنگام کار با هندسههای پیچیده یا هنگام استفاده از پس پردازشگرهای سفارشی، خطا رخ دهد.
- انتخاب شبیه سازی: هنگام شبیه سازی وجود چندین مسیر ابزار یا زمانی که موتور شبیه سازی نمیتواند محورهای لازم را پیدا کند، ممکن است، سبب ایجاد خطا شود.
3-1# محدودیتهای سخت افزار و سیستم
از دیگر موارد مربوط به اشتباه در ماشینکاری با NX میتوان به محدودیتهای سخت افزاری اشاره کرد که عبارت اند از:
- خطاهای ماشین ابزار: خطاهای موجود در خود ابزار ماشین، مانند عدم دقت در نقطه برش واقعی، میتواند منجر به نقص در قطعه ماشینکاری شده شود.
- صدور مجوز: مجوزهای مفقود یا نادرست مثلاً مجوز نویسنده FBM میتوانند عملکردهایی مانند ذخیره دانش ماشینکاری ویرایش شده را محدود کنند.
4-1# وابستگیهای دایرهای
یکی از موارد اشتباه در ماشینکاری با NX وابستگی دایرهای است و زمانی رخ میدهد که یک پروژه به صورت انتقالی به خودش وابسته است.
این امر میتواند باعث ایجاد مشکل در طراحی نرم افزار شود و همچنین الگوریتم تحت تأثیر Nx را کمتر مؤثر کند.
قانون lint ،@nx/enforce-module-boundaries در صورت ایجاد هرگونه وابستگی دایرهای، خطایی ایجاد میکند و تضمین میکند که هرگونه import دستوری که در پروژهها اجرا شود، import تنها از API های عمومی تعریف شده در فایل ریشه پروژه استفاده کند.
هنگام انتقال یک کدبیس جدید به فضای کاری nx، احتمالاً شروع به کشف وابستگیهای دایرهای موجود خواهید کرد.
برای حل وابستگیهای دایرهای باید:
- ابتدا، import عباراتی را که باعث وابستگی میشوند، شناسایی کنید.
در پوشه منبع به دنبال projectA ارجاعات به @myorg/projectB و در پوشه منبع به دنبال projectB ارجاعات به بگردید. - سپس سه استراتژی وجود دارد که میتوانید از آنها استفاده کنید:
- به دنبال قطعات کوچک کد باشید که بتوان آنها را از یک پروژه به پروژه دیگر منتقل کرد.
- به دنبال کدی باشید که هر دو کتابخانه به آن وابسته هستند و آن کد را به یک کتابخانه مشترک جدید منتقل کنید.
- ترکیب projectA و projectB را در یک کتابخانه قرار دهید.
5-1# عیب نصبهای Nx
از دیگر موارد اشتباه در ماشینکاری با NX احتمال وجود عیب در نصب آن است.
در این بخش چند سناریوی رایج که هنگام تلاش برای اجرای Nx روی CIها با آنها مواجه خواهید شد، آورده شده است.
1) ماژولهای بومی
Nx فایلهای باینری بومی منتشر میکند که باید هنگام استفاده از Nx به صورت خودکار دانلود و نصب شوند.
اگر پیامی مبنی بر عدم پشتیبانی از پلتفرم خود مشاهده کردید یا این که Nx نمیتواند @nx/nx-platform ماژولی برای نسخههای Nx بین ۱۵.۸ تا ۱۶.۴ پیدا کند، چند دلیل وجود دارد که میتواند به صورت بالقوه باعث این اتفاق شود:
- دستور نصب با –no-optionalیا پرچم مربوطه در yarn ،pnpm و مواردی از این قبیل را اجرا کنید.
- نصب خود را با –dev دستور for pnpm اجرا کنید.
- فایل package-lock.json به درستی توسط npm به روز رسانی نشده و وابستگیهای اختیاری مورد استفاده توسط Nx را از دست داده است.
- پلتفرم شما پشتیبانی نمیشود.
- Node.js برای معماری مناسبی نصب نشده است.
2) به روزرسانی Nx
هنگام به روزرسانی Nx که از قبل روی ۱۵.۸ است، فایل package-lock.json باید همچنان به درستی و با تمام وابستگیهای اختیاری مناسب به روزرسانی شود.
چگونگی رفع آن به صورت زیر است:
- اگر دستور نصب خود را با –no-optional اجرا میکنید، دوباره بدون پرچم امتحان کنید.
- فایل node_modules و package-lock.json (یا سایر فایلهای قفل) خود را حذف کرده و دستور نصب مدیر بسته خود را دوباره اجرا کنید.
- اگر روی ویندوز اجرا میشود، مطمئن شوید که Microsoft Visual C++ Redistributable نصب شده به روز است.
اگر پس از دنبال کردن مراحل قبلی هنوز با مشکل مواجه هستید، لطفاً یک مشکل در GitHub باز کنید و تا حد امکان جزئیات بیشتری در مورد سیستم خود ارائه دهید؛ همانند:
- نسخه سیستم عامل
- دستور نصب مدیر بسته npm ،yarn ،pnpm
6-1# مشکلات نصب Node.js
از دیگر موارد اشتباه در ماشینکاری با NX مشکلات موجود در نصب Node.js است.
مطمئن شوید که معماری نصب Node.js شما با سخت افزاری که استفاده میکنید، مطابقت دارد.
آن را اجرا کنید، nx report و بررسی کنید که OS ویژگی صحیح است؛ مثلاً darwin-arm64 برای MacOS روی Apple silicon اگر حاوی x64even though you are on a arm64chip باشد، پس مشکلی وجود دارد.
عدم تطابق در معماری میتواند منجر به خطا در بارگیری باینری بومی Nx شود.
اغلب، علت عدم تطابق، از جمله علل نصب نادرست مجموعه ابزارهای شما است.
VSCode در صورت استفاده از کنسول Nx شما باید مجموعه ابزارهای خود را با معماری صحیح دوباره نصب و nx report را برای تأیید نصب، دوباره اجرا کنید.
7-1# خطاهای حافظه پنهان (Cache Misses)
از دیگر موارد اشتباه در ماشینکاری با NX میتوان به خطاهای حافظه پنهان اشاره کرد.
یک وظیفه (task) در حالی اجرا میشود که انتظار دارید از حافظه پنهان (cache) دوباره اجرا شود.
- بررسی کنید که آیا task شما به عنوان قابل ذخیره در حافظه پنهان علامت گذاری شده است یا خیر:
-
- بررسی کنید که task در نمای جزئیات پروژه دارای برچسب قابل ذخیره سازی باشد.
میتوانید این کار را با اجرا nx show project –web یا با بررسی آن در کنسول Nx انجام دهید. - اگر از نسخه ای پایین تر از Nx 17.2.0 استفاده میکنید، موارد زیر را بررسی کنید:
- json پیکربندی هدف در فایل پروژه cache: true تنظیم شده باشد.
- یا پیکربندی هدف در تنظیم json#targetDefaults، cache: true شده است.
- بررسی کنید که task در نمای جزئیات پروژه دارای برچسب قابل ذخیره سازی باشد.
- بررسی کنید که آیا خروجی task شما ورودیهای task را تغییر میدهد یا خیر.
-
- بررسی کنید inputs و namedInputs در پیکربندی پروژه و ریشه تعریف شده باشد.
json inputs کنترل این امر که آیا یک وظیفه اجرا میشود یا از حافظه پنهان (cache) شده و دوباره پخش میشود را انجام میدهد. - بررسی کنید که آیا فایل خروجی وجود دارد که توسط تابع outputsfor برای این task ضبط نشده است.
این outputs ویژگی فقط کنترل میکند که چه فایلهایی از حافظه پنهان (cache) دوباره پخش شوند ولی تعیین نمیکند که آیا حافظه پنهان دوباره پخش شود یا خیر؛ اما یک فایل خروجی حساب نشده میتواند، یکی از ورودیهای وظیفه را تغییر دهد. - nx graph –file=output.json برای بررسی الگوهای glob ورودی خود به صورت فایل به فایل، میتوانید با اجرا یا کلیک روی یک task در نمودار وظیفه در تجسم، لیستی از تمام فایلهای مرتبط با هر پروژه را دریافت کنید nx graph.
- بررسی کنید inputs و namedInputs در پیکربندی پروژه و ریشه تعریف شده باشد.
- از ابزارهای عیب یابی Nx Cloud استفاده کنید.
-
- مطمئن شوید که مخزن شما به Nx Cloud متصل است.
- روی لینک جزئیات اجرا که پس از اجرای یک task در ترمینال چاپ میشود، کلیک کنید.
- روی task ای که میخواهید کَش آن را بررسی کنید و کَش آن از کار افتاده کلیک کنید.
- روی پیوند مقایسه با وظایف مشابه در گوشه بالا سمت راست جزئیات task کلیک کنید.
- یکی از وظایف مشابه را از لیست موجود در بخش مقایسه با انتخاب کرده یا URL اجرای دیگری را جایگذاری کنید.
- Nx Cloud جزئیات ورودی هر دو وظیفه را مقایسه کرده و تمام تفاوتها را برجسته خواهد کرد.
8-1# خطای ناشناخته حافظه پنهان محلی
از دیگر موارد اشتباه در ماشینکاری با NX میتوان به خطای ناشناخته حافظه پنهان محلی اشاره کرد.
این سند توضیح میدهد که چرا خطاهای زیر رخ میدهند و چگونه میتوان آنها را برطرف کرد.
9-1# منبع حافظه پنهان Nx Tracks
از دیگر موارد اشتباه در ماشینکاری با NX میتوان به منبع حافظه پنهان Nx Tracks اشاره کرد.
Nx میتواند task را ذخیره کند که سرعت CI و ساختهای محلی را به شدت افزایش میدهد.
با این حال، این کار با خطر بالقوه مسمومیت حافظه پنهان همراه است که در آن مصنوعات حافظه پنهان میتوانند عمداً یا سهواً رونویسی شوند.
اگر کاربر دیگری task ای را اجرا کند که با hash of the tainted artifact مطابقت داشته باشد، میتواند مصنوع خراب را بازیابی کرده و از آن به عنوان نتیجه task استفاده کند.
Nx و Nx Cloud دارای چندین محافظ برای به حداقل رساندن احتمال مسمومیت حافظه پنهان یا در مورد Nx Cloud، برای جلوگیری کامل از آن هستند.
خطاهای فوق برخی از این اقدامات حفاظتی هستند:
- Nx به حافظه پنهان محلی اعتماد دارد.
اگر شما یک کار را اجرا کرده و مصنوع کَش شده مربوطه را روی دستگاه خود ذخیره کردهاید، میتوانید با خیال راحت آن را روی همان دستگاه بدون نگرانی از مسمومیت با حافظه پنهان بازیابی کنید.
از این گذشته، برای دستکاری مصنوع کَش، عامل نفوذی به دسترسی به خود دستگاه نیاز دارد.
با این حال، وقتی مصنوعات موجود در حافظه پنهان محلی توسط دستگاه دیگری ایجاد میشوند، نمیتوانیم چنین فرضی داشته باشیم.
به صورت پیش فرض، Nx در استفاده از چنین مصنوعاتی خودداری میکند و خطای Invalid Cache Directory یا Unrecognized Cache Artifacts را به کاربر نشان میدهد.
- شناسه ماشین شما تغییر کرده است. ارتقای سخت افزار رایانه ممکن است شناسه ماشین (Machine ID) را تغییر دهد و یکی از خطاهای بالا را ایجاد کند.
برای رفع آن، دستور nx reset را اجرا کرده تا تمام دایرکتوریهای کش ایجاد شده تحت شناسه ماشین قبلی حذف شوند.
پس از انجام این کار، دیگر نباید این خطا را ببینید. - شما با استفاده از یک درایو شبکه، حافظه پنهان (Cache) را با دستگاه دیگری به اشتراک میگذارید.
ذخیره حافظه پنهان محلی Nx در درایو شبکه خطرات امنیتی را به همراه دارد، بنابراین شما را از انجام این کار منع میکنیم.
وقتی یک درایو شبکه به اشتراک گذاشته میشود، هر اجرای CI به تمام مصنوعات حافظه پنهان Nx که قبلاً ایجاد شدهاند، دسترسی دارد.
از این رو، دسترسی به هر مصنوع بدون برجای گذاشتن هیچ اثری امکان پذیر است.
این امر به دلیل قابلیت درایو شبکه در اجازه رونویسی امکان پذیر است.
10-1# عملکرد پروفایلینگ
از دیگر موارد اشتباه در ماشینکاری با NX عملکرد پروفایلینگ است.
هنگام اجرای یک دستور Nx، بسیاری از task ها در زمانهای مختلف در فرآیندهای مختلف اجرا میشوند.
تجسم مکان و زمان اجرای task میتواند به بهینه سازی کل اجرا برای سریعتر شدن کمک کند.
نحوه پروفایل کردن عملکرد وظایف در حال اجرا به صورت زیر است:
- قبل از اجرای اهداف با Nx، آنها را آماده کنید.
NX_PROFILE=profile.json برای مثال:
- تب Performance را در Chrome Devtools باز کنید.
- روی دکمه آپلود کلیک کنید و فایل json ایجاد شده را باز کنید.
- هر گروه را باز کنید تا نام وظایفی که اجرا شدهاند را ببینید.
1) پروفایلینگ دستورات Nx
Nx بخش زیادی از بار سنگین را به Nx Daemon منتقل میکند که به افزایش سرعت اجرای task ها کمک میکند.
با این حال، ممکن است هنوز هم با کاهش سرعت مواجه شوید، نه در حین اجرای خود وظیفه؛ بلکه در لحظات منتهی به آن هنگام فراخوانی وظایف از طریق Nx.
این امر اغلب میتواند زمانی اتفاق بیفتد که از تعداد زیادی افزونه Nx استفاده میکنید، چه از تیم اصلی و چه از جامعه.
برای بررسی و بهینه سازی این کاهش سرعتها، میتوانید ازNX_PERF_LOGGING متغیر محیطی استفاده کنید.
این کار به شما گزارشهای عملکرد دقیق تر و زمان بندیهای دقیقتری داده و به شما این امکان را میدهد تا محل وقوع تأخیرها را مشخص کنید.
11-1# مشکلات کنسول Nx
از دیگر موارد اشتباه در ماشینکاری با NX مشکلات کنسول است.
مشکلات کنسول Nx نتیجه مشکلات اساسی خود Nx است.
1) مشکلات VSCode + nvm
VSCode هنگام شروع، یک نسخه از Node را بارگذاری میکند.
nvm میتواند از نسخههای تنظیم شده از طریق via استفاده کند؛ اما برخی ملاحظات وجود دارد.
- اگر Node را خارج از nvm نصب کردهاید، VSCode همیشه از آن نسخه استفاده خواهد کرد.
میتوانید با اجرای nvm list و جستجوی یک system نام مستعار، آن را بررسی کنید.
برای این که VSCode بتواند، نسخه شما را دریافت کند، nvm، حتماً نسخه Node نصب شده در خارج از () را حذف نصب کنید. - defaultVSCode نام مستعار را از زمان راه اندازی بارگذاری میکند.
میتوانید آن را با اجرای دستور زیر تنظیم کنید:
نام مستعار باید در ترمینال پیش فرض سیستم عامل شما تنظیم شود تا VSCode آن را دریافت کند.
تنظیم آن در یک ترمینال یکپارچه با VSCode پس از بسته شدن آن ادامه نخواهد داشت.
به صورت مشابه، تنظیم آن در یک برنامه شخص ثالث مانند iTerm به صورت پیش فرض بر VSCode تأثیری نخواهد گذاشت.
- VSCode فقط default نسخه را هنگام شروع برنامه بارگذاری میکند. این بدان معنا است که برای تغییر آن، باید تمام پنجرههای VSCode را ببندید و برنامه را مجدداً راه اندازی کنید؛ اجرای Reload Window کار نخواهد کرد.
- اگر با نسخههای مختلف Node کار میکنید، افزونههای مختلفی برای VSCode وجود دارد که میتوانید، nvm use هر زمان که یک ترمینال یکپارچه جدید باز میکنید، به صورت پویا اجرا کنید.
- شما میتوانید با استفاده از پیکربندی راه اندازی با runtimeVersionset، یک نسخه استاتیک تنظیم کنید.
12-1# عیب یابی تبدیل به انتقال استنباطی یا Troubleshoot Convert to Inferred Migration
از دیگر موارد اشتباه در ماشینکاری با NX عیب یابی تبدیل به انتقال استنباطی است.
Nx با افزونههایی ارائه میشود که به صورت خودکار وظایفی مثل Project Crystal را برای پروژهها بر اساس پیکربندی ابزارهای مختلف استنباط میکنند.
افزونههای استنتاج مزایای زیادی دارند، مانند کاهش کدهای تکراری و دسترسی به ویژگیهایی مانند تقسیم وظایف.
برای آسانتر کردن انتقال برای پروژههای موجود که هنوز از افزونههای استنتاج استفاده نمیکنند، بسیاری از افزونهها convert-to-inferred مولدی را ارائه میدهند که از وظایف مبتنی بر اجراکننده به وظایف استنتاج شده تغییر میکند.
برای دیدن لیستی از مولدهای مهاجرت موجود، دستور زیر را اجرا کنید:
این دستور از شما میخواهد تا افزونه ای را برای اجرای انتقال انتخاب کنید.
اگرچه این convert-to-inferred مولد باید برای اکثر پروژهها کار کند،؛ اما موقعیتهایی وجود دارد که نیاز به انجام تغییرات اضافی به صورت دستی است.
- خطای افزونه nx پروژهای را در داخل پیدا نکرد: این خطا زمانی رخ میدهد که فایل پیکربندی منطبق با ابزار پیدا نشود.
اگر فایل پیکربندی خود را به صورت غیرمتعارف نام گذاری کردهاید، قبل از اجرای مجدد مولد مهاجرت، باید آن را به قرارداد نام گذاری استاندارد تغییر نام دهید.
برای مثال، اگر فایلی دارید apps/demo/vite.custom.ts و در حال اجرا است، nx g @nx/vite:convert-to-inferred، ابتدا باید قبل از اجرای مولد، نام فایل را به apps/demo/vite.config.ts تغییر دهید.
2# عیب یابی اشتباه در ماشینکاری با NX
برای عیب یابی اشتباه در ماشینکاری با NX موارد زیر را انجام دهید:
- بررسی پیامهای خطا NX: پیامهای خطای دقیقی ارائه میدهد که میتواند به شناسایی منبع مشکل کمک کند.
- مراجعه به Syslog: گزارش سیستم میتواند اطلاعات عمیقتری در مورد خطاها ارائه دهد؛ اما دسترسی به آن ممکن است توسط سیاستهای شرکت محدود شده باشد.
- شبیه سازی ماشین: از قابلیتهای شبیه سازی ماشین NX برای تشخیص برخوردها و سایر مشکلات قبل از اجرای عملیات ماشینکاری واقعی استفاده کنید.
- بررسی تنظیمات دستگاه: تنظیمات دستگاه، از جمله فاصله محور، را بررسی کنید و مطمئن شوید که با استراتژی ماشینکاری انتخاب شده سازگار هستند.
- به روزرسانی دانش ماشینکاری: مطمئن شوید که فایلهای دانش ماشینکاری به روز و با نسخه فعلی NX سازگار هستند.
نظرتون درباره این مقاله چیه؟
ما رو راهنمایی کنید تا اون رو کامل تر کنیم و نواقصش رو رفع کنیم.
توی بخش دیدگاه ها منتظر پیشنهادهای فوق العاده شما هستیم.