مقالات

اتصال PLC به HMI

connecting-an-s7-siemens-plc-to-hmi

در یک محیط صنعتی، عملکرد روان و توانایی رسیدگی به درخواست‌ها بدون مشکل برای عملیات بسیار مهم است، بنابراین ما باید کد قوی بسازیم که امکان غیرمنتظره‌ها را فراهم کند و در انجام این کار، HMI به مکانی مرکزی تبدیل می‌شود که اپراتورها برای تشخیص مشکلات به آن مراجعه می‌کنند.

مهم است که بتوانید سیستم را از HMI بدون نیاز به بازجویی کد برای دیدن آنچه اتفاق می‌افتد کار کنید. PLC زیمنس و HMI زیمنس باید یکپارچه با هم کار کنند و بدون مشکل کار کنند.

این اولین مورد از یک سری آموزش است که در آن ما قصد داریم یک پروژه برای حفظ امتیاز در یک مسابقه فوتبال (معروف به فوتبال) ایجاد کنیم. این به شما کمک می کند تا درک کنید که چگونه یک پروژه را از ابتدا شروع کنید و تمام جنبه های مورد نیاز را به انجام برسانید. اتصال یک سی پی یو زیمنس S7-300 317-2 PN/DP PLC به یک صفحه نمایش لمسی 7 اینچی زیمنس سری TP700 HMI، نوشتن کد PLC و طراحی و ساخت پروژه HMI.

در این آموزش، شما یاد خواهید گرفت که چگونه یک PLC زیمنس S7-300 و یک صفحه نمایش لمسی زیمنس سری TP700 7 اینچی HMI را به یک پروژه اضافه کنید، یک Profinet و یک اتصال HMI بین آنها راه اندازی کنید، و با استفاده از هر دو تگ PLC ایجاد کنید. برچسب‌های PLC داخلی در پرتال TIA و استفاده از بلوک‌های داده برای نگهداری داده‌های شما با استفاده از ساختارها.

اتصال PLC زیمنس به HMI زیمنس

بیایید با افزودن دستگاه‌هایمان شروع کنیم. ابتدا PLC را انتخاب می کنیم.

6415d9e7b5ad312a83eb088e

افزودن پنجره انتخاب دستگاه جدید – انتخاب CPU

 

در ابتدا HMI را اضافه می کنیم.
6415d9e7b5ad3163b8eb

افزودن پنجره انتخاب دستگاه جدید – انتخاب HMI

هنگامی که آنها به پروژه اضافه می شوند، باید بین آنها ارتباط ایجاد کنیم. برای انجام این کار، پنجره “Devices & networks” را باز می‌کنیم.

ابتدا باید یک شبکه PNIE جدید اضافه کنیم. این به PLC و HMI اجازه می‌دهد بدانند که قرار است به صورت فیزیکی متصل شوند.

 

6415d9e7b5ad3130c2eb0899_6139de364a249cfbecc076f4_T1I1

اضافه کردن یک دستگاه شبکه

 

ابتدا این کار را برای PLC انجام دهید و وقتی به HMI رسیدید، می توانید آن را به شبکه ای که برای PLC خود ایجاد کرده اید اختصاص دهید.

اکنون یک اتصال بین دو دستگاه ایجاد شده است.

 

iK5oMC2Z0wPyCIILfC5H13K4adOJBT7kkSMv0xL0nB1ahaeCK1

برقراری ارتباط

 

6415d9e7b5ad31573feb0898_613a0f930cca8a3252ef12af_T1I2

 

اکنون باید یک اتصال جدید ایجاد کنیم.

روی “connections” کلیک کنید.

روی “Add new connection” کلیک کنید.

 

6415d

eqg_fG5Fe2cf

 

رابط “PROFINET” را انتخاب کنید.
6415d9e7b5ad3173c1eb0894_6
اتصال جدید ایجاد کنید.
6415d9e7b5ad3156feeb0897_613a1054ea318677dc363e20_T1I3

تخصیص آدرس IP برای اتصال جدید

اسکرین شات بالا PLC و HMI اضافه شده به پروژه را نشان می دهد.1 – PLC. این توسط یک خط سبز به شماره 2، HMI متصل می شود. این خط سبز نشان دهنده یک پیوند اترنت از PLC به HMI با شماره 3 آدرس IP PLC است. در نهایت، شماره 4 نشان می دهد که ارتباط بین دو نقطه برقرار است، به این معنی که پارامترها و تنظیمات آن معتبر هستند. اگر مشکلی در پیکربندی وجود داشت، مثلاً قرمز بود

 

6415d9e7b5ad3134pbwxEi

اگر قرار بود چنین چیزی را ببینید، می دانید که چیزی وجود دارد که نیاز به اصلاح دارد.

در قسمت “Connections” در HMI که در ساختار پروژه ظاهر شده است، می‌توانید این اتصال را تأیید کنید، که ما را قادر می‌سازد تا به پروژه HMI خود جستجو کرده و برچسب‌هایی را به آن اضافه کنیم.

et voila! پیکربندی کامل شده است.

اکنون که پیکربندی PLC و HMI خود را کامل کرده ایم، زمان شروع برنامه نویسی آنها است.

 

راه اندازی برچسب های PLC و ساختارهای داده اولیه

شناخت بلوک های سازمانی
ما با تنظیم ساختارهای داده شروع خواهیم کرد. با PLC های زیمنس، این کار با استفاده از بلوک های داده انجام می شود.

ما بلوک های سازمانی (OB) داریم که بین توابع برنامه ریزی شده کاربر و سیستم عامل رابط دارند. یک مثال از آن استفاده از تابع OB100، “راه اندازی مجدد کامل” است. این بلوک سازمانی یک بار در هنگام راه اندازی PLC یا تغییر وضعیت سوئیچ حالت اجرا می شود و دیگر فراخوانی نمی شود.

این نوع بلوک برای برنامه‌نویسی یک پرچم «FirstScan» برای راه‌اندازی تنظیمات پارامترها یا به تأخیر انداختن اسکن یک پروتکل ارتباطی بلافاصله پس از روشن کردن PLC مفید است.

6415d9e7b5ad312b5gx

به عنوان مثال تنظیم یک پرچم اولین اسکن

 

شناخت بلوک های تابعی
بلوک‌های تابع (FB) و فراخوانی‌های تابع (FC) تا آنجا که هر دو برای نوشتن توابعی استفاده می‌شوند که می‌توانند مجدداً در برنامه استفاده شوند مشابه هستند، اما تفاوت آنها این است که بلوک‌های تابع حافظه دارند که به این معنی است که می‌توانیم برچسب‌ها را آدرس‌دهی کنیم. یک بلوک تابعی خارج از بلوک مذکور. با فراخوانی تابع، نمی توانید این کار را انجام دهید زیرا حافظه موقتی است.

Function Blocks حافظه خود را در Instance Data Blocks ذخیره می کند. اگر یک FB، FB1، دارای بلوک داده نمونه DB1 باشد، تگ های حافظه از FB1 می توانند به عنوان “DB1.xxx” آدرس دهی شوند.

آشنایی با بلوک های داده
همانطور که از نام آن پیداست، بلوک‌های داده جایی هستند که می‌توانیم داده‌های خود را ذخیره کنیم که می‌توان از آنها در سراسر برنامه استفاده کرد. ما می توانیم از این بلوک ها بخوانیم و بنویسیم، بنابراین می توانیم امتیاز خود را در بازی خود پیگیری کنیم!

هنگام نوشتن برنامه های PLC، داشتن برچسبی که همیشه یک منطق 1 است مفید است. این بدان معناست که وقتی از آن استفاده می کنیم، خروجی همیشه روشن است، بنابراین برای پله های شرطی مفید است. همین امر را می توان در مورد منطق 0 گفت. این خروجی همیشه خاموش است. این را می توان در هر جایی قرار داد، اما من تمایل دارم آن را در یک بلوک “Houseeping” یا در این مورد یک بلوک “Setup” قرار دهم. این جایی است که من داده های اولیه خود را تنظیم می کنم. ما می‌توانیم از «مقادیر اولیه» در بلوک داده برای تنظیم مقادیر استفاده کنیم، اما این بیشتر برای زمانی که PLC به طور کامل دانلود شده است استفاده می‌شود. وقتی این کار را انجام می‌دهیم، همه مقادیر فعلی را با مقادیر اولیه بازنویسی می‌کند، بنابراین هر چیزی که به درستی مستند نکرده‌ایم یا تغییرات زنده ثبت نمی‌شود. انجام آن در FB به این ترتیب به این معنی است که این اتفاق نمی افتد.

همیشه روشن / همیشه خاموش
در اینجا ما تگ های Logic1 و Logic0 را داریم. هنگامی که PLC راه اندازی می شود، هر دو Logic1 و Logic0 در واقع “0” خواهند بود. کاری که ما در اینجا انجام می دهیم این است که بررسی کنیم که آیا تگ Logic1 ‘0’ است یا خیر، و سپس آن را روی ‘1’ تنظیم می کنیم. سپس هنگامی که Logic1 را در “1” داشتیم، Logic0 را روی “0” قرار می دهیم. به این ترتیب می‌توانیم مطمئن باشیم که می‌توانیم از این برچسب‌ها استفاده کنیم و نتیجه مطابق انتظار خواهد بود.

6415d9e7b5adQdiTamocp

به عنوان مثال تنظیم تگ های همیشه ON/ OFF

 

ما می‌خواهیم مطمئن شویم که امتیاز و تایمر بازیکن هنگام راه‌اندازی صفر است. به این ترتیب می توانیم زودتر بازی را شروع کنیم! ما همچنین مطمئن می‌شویم که پرچم در حال اجرا و فشار دادن دکمه HMI خاموش باشد، در صورتی که آخرین باری که PLC در حال اجرا بود روشن باشد.

 

64ha

تنظیم پارامترهای اولیه خارج از بلوک داده

 

از آنجایی که ما اکنون PLC را با مقادیر شروع ترجیحی خود پارامتر کرده ایم، اکنون می توانیم تگ “FirstScan” را که قبلا ایجاد کرده بودیم بازنشانی کنیم:

 

قسمت First Scan را در کدهای در حال اجرا بازنشانی کنید

 

پیکربندی حافظه ساعت
برای اینکه پروژه ما به درستی کار کند، باید بتوانیم زمان را به تعداد دلخواه ثانیه یا دقیقه (یا ساعت!) بشماریم، بنابراین تابعی که برای انجام این کار استفاده می کنیم از پالس ساعت PLC استفاده می کند. شما می توانید این را با رفتن به PLC قسمت “Device Configuration” خود تنظیم کنید و در برگه عمومی، “Clock memory” را انتخاب کنید. برای فعال کردن حافظه ساعت، کادر را علامت بزنید و یک بایت حافظه به آن اختصاص دهید. این بایت به ما یک پالس ساعت می دهد

 

6415d9e7b5ad31545u0j3WB6HsEQ5q0TXj

پیکربندی حافظه ساعت PLC

 

پیکربندی حافظه ساعت PLC

می توانید از حافظه ساعت استفاده کنید، به عنوان مثال، برای فعال کردن لامپ های نشانگر چشمک زن یا برای شروع عملیات دوره ای تکرار شونده مانند ثبت مقادیر واقعی.

فرکانس های موجود

به هر بیت از بایت حافظه ساعت بیت یک فرکانس اختصاص داده می شود. جدول زیر تکلیف را نشان می دهد:

6415d9e7b5ad31709eeb0890_61273e6765eb2a14c287f11e_TutorialGraphics

جدول تخصیص بایت حافظه به فرکانس ساعت

 

از آنجایی که ما یک تایمر 1 ثانیه ای برای ساعت خود می خواهیم، ​​باید به بیت حافظه 5 بایت 50 حافظه نگاه کنیم. می توانیم از یک سیگنال پالسی برای افزایش شمارنده استفاده کنیم تا به عنوان ساعت من کار کند. به این ترتیب می‌توانیم به راحتی بازی را برای آبرسانی سریع قبل از ادامه نیمه دوم متوقف کنیم.

برای دریافت سیگنال پالسی، می‌توانیم از بیت 5 حافظه بایت 50 استفاده کنیم و از دو بایت دیگر برای ایجاد سیگنال پالسی استفاده کنیم. این بخش از کد از STL استفاده می کند، نه از LAD مانند بقیه کدها، اما می تواند به همین راحتی در LAD انجام شود. دلیل انتخاب ما برای انجام این کار این است که می‌توانیم تمام بیت‌های حافظه را بدون پله‌ها و پله‌های کد به پرچم‌های پالس نگاشت کنیم.

 

64L-dCWv

همانطور که می بینید، بیت 5 از بایت 50 Clock1Hz است. دستورالعمل FP به دنبال تغییر حالت از 0 به 1 است. پس از مشاهده آن، “Pulse1sec” را روشن می کند. از آنجا که دستورالعمل FP فقط برای 1 اسکن روشن است، بیت M51.5 نیز فقط برای 1 اسکن روشن است، بنابراین می توانیم از آن برای پالس کردن یک دستورالعمل شمارنده استفاده کنیم.

اکنون هنگامی که ما این فراخوانی تابع را در بلوک عملکرد راه اندازی خود فراخوانی می کنیم، زمان بندی دقیقی برای بازی خود خواهیم داشت.

 

64bD3ZoxUy5pKGGY-3p

پیکربندی تگ های PLC

برچسب‌های PLC ما به این شکل هستند.

 

6415d9O15JPdVrYh6pU

تخصیص آدرس های تگ PLC

 

اینها تگ هایی هستند که ما به تگ های Logic0 و Logic1، تگ FirstScan و بیت های حافظه ساعت خود با پالس اختصاص داده ایم.

وظیفه بعدی این است که بلوک های داده خود را با داده هایی که برای پروژه خود نیاز داریم تنظیم کنیم.

ما باید چندین تگ را در اینجا ایجاد کنیم، و هیچ جایی بهتر از “Inputs” ما برای شروع وجود ندارد. ما به روشی برای جمع و تفریق امتیازها (بسته به VAR) و همچنین شروع، توقف، تنظیم مجدد و مکث نیاز داریم.

QbQIB7bvTqId0E1XBllJbxh5AL0E

در مرحله بعد باید بیت های “Status” را در نظر بگیریم. در اینجا می‌توانیم با استفاده از یک ورودی مثبت از PlayerX در یک شروع تایید شده برنامه‌نویسی کنیم. وقتی هر دو بازیکن تایید کردند، وضعیت Game_Confirmed داریم. ما همچنین یک وضعیت در حال اجرا داریم و مقادیر شمارنده انباشته شده برای مقادیر دقیقه و ثانیه برای نمایش در HMI.

 

YGvTv0dhR0QZ4Ha

بیت های “Command” در مرحله بعدی قرار می گیرند. در اینجا ما درخواست های دستوری خود را مانند شروع بازی یا نمایش یک صفحه آماده که در آن بازیکنان قصد خود را برای بازی تأیید می کنند، تعریف می کنیم. ما همچنین یک انیمیشن داریم که می‌توان آن را در هنگام به ثمر رساندن گل نشان داد.

6HRtyyFXWbJvT

در نهایت یک شات داریم که می توان از آنها در برنامه استفاده کرد، به عنوان مثال وقتی بازی به پایان می رسد، نتیجه را در جدول تاریخچه کپی می کنیم.

 

hTseFiHHNJX0U1k

 

این امتیاز فعلی را به اولین مکان‌دار تاریخ منتقل می‌کند، این تئوری این است که وقتی بازی متوقف شود، موارد زیر اتفاق می‌افتد.

 

6415d9e7b5ad3114abeb088d_612740450482271946009bca_Tutorial20(1)

 

ما به یک بلوک داده “Name” و “Score” نیاز داریم تا اسامی بازیکنان و امتیازات آنها را پیگیری کنیم.

 

641_c8uzpnJE_qyIq

w7Cl4sfkLavZY

داده‌های PlayerXNameHist[x] و PlayerXScoreHist[x] حاوی داده‌های موجود در گزارش سابقه هستند. این رجیسترها به صورت آرایه ای از «String» برای نام و آرایه «Int» برای امتیاز نگهداری می شوند. با استفاده از نوع آرایه[lo..hi] می توانید تعداد عناصر آرایه را تنظیم کنید. هنگامی که به یک ورودی خاص آدرس می دهیم، از شماره آرایه آن برای شناسایی آن استفاده می کنیم.

آخرین قطعه داده ای که ما برای این پروژه نیاز داریم، یک بلوک داده تنظیم نقطه است. تنها نقطه تنظیمی که در اینجا باید لحاظ کنیم، مدت زمان بازی است. این به این دلیل است که ما قبلاً یک بلوک داده “Name” داریم که نام‌هایی را که باید استفاده شود را ثبت می‌کند و منطقی است که آنها را همراه با ورودی‌های تاریخی نگه داریم. مدت زمان بازی یک عدد صحیح است که با وارد کردن آن تعداد دقیقه بازی را در اختیار ما قرار می دهد.

 

OUO9g8pOsg

 

اکنون همه چیز را تنظیم کرده ایم، مرحله بعدی نوشتن کد برای کنترل بازی و ایجاد و تگ کردن صفحه نمایش HMI است.

 

نتیجه

اکنون اجازه دهید آنچه را که در این آموزش آموخته‌ایم خلاصه کنیم. ما یک PLC و HMI را به یک پروژه اضافه کرده ایم، یک Profinet و یک اتصال HMI بین آنها راه اندازی کرده ایم. این به آنها اجازه می دهد تا با یکدیگر ارتباط برقرار کرده و داده ها را انتقال دهند. ما تعدادی تگ PLC ایجاد کرده‌ایم که هم از تگ‌های PLC داخلی در پورتال TIA و هم از بلوک‌های داده برای نگهداری داده‌هایمان با استفاده از ساختارها استفاده می‌کنیم. با استفاده از ساختارها در بلوک‌های داده، می‌توانیم سیگنال‌ها را به بخش‌های مختلف، مانند «ورودی‌ها» و «فرمان‌ها» جدا کنیم. آنها در یک مکان هستند، اما پیشوندی که ما در کد استفاده می کنیم آنها را به راحتی قابل شناسایی می کند.

ما همچنین یک پرچم‌های First Scan، Logic1 و Logic0 ایجاد کرده‌ایم. پرچم First Scan را می توان در کد ما برای راه اندازی چیزی در راه اندازی PLC مانند تنظیم مقادیر پیش فرض یا بازنشانی مقادیر شمارنده استفاده کرد. پرچم‌های Logic1 و Logic0 برای غیرفعال کردن کد هنگام آزمایش یا زمانی که می‌خواهیم از یک شاخه استفاده کنیم و اجرای را با یک سیگنال مثبت واجد شرایط کنیم، مفید هستند.

تنظیم حافظه ساعت PLC به ما این امکان را می دهد که زمان بندی دقیقی داشته باشیم، چیزی که در پروژه آزمایشی ما برای پیگیری زمان بسیار مفید است.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *