طراحی برنامه برای تبدیل RS-۲۳۲ به CAN با استفاده از فناوری Fieldbus

Jun 27, 2026 پیام بگذارید

1 مقدمه


ارتباطات تجهیزات صنعتی به طور معمول شامل طیف گسترده ای از محصولات سخت افزاری و نرم افزاری و همچنین پروتکل هایی است که برای اتصال پلت فرم های کامپیوتری استاندارد (رایانه های شخصی یا ایستگاه های کاری) به دستگاه های اتوماسیون صنعتی استفاده می شود. در نتیجه، اکثر دستگاه‌های اتوماسیون برای اجرای دستورات سریال ساده طراحی شده‌اند که با پورت‌های سریال استاندارد موجود در رایانه‌های شخصی یا افزودن{1}}در کارت‌های پورت سریال سازگار است. RS{6}}232 در حال حاضر پرکاربردترین رابط سریال در بخش کامپیوتر و ارتباطات صنعتی است. RS{7}}232 به عنوان یک استاندارد منفرد{10}}تعریف شده است که برای گسترش فواصل ارتباطی در ارتباطات سریالی با سرعت پایین طراحی شده است. از آنجایی که RS-232 یک زمین سیگنال مشترک بین فرستنده و گیرنده دارد، نمی تواند از سیگنال های دیفرانسیل استفاده کند. در غیر این صورت، نویز حالت مشترک به سیستم سیگنال متصل می شود. استاندارد RS-232 حداکثر فاصله را تنها 15 متر و حداکثر سرعت انتقال سیگنال 20 کیلوبیت بر ثانیه را مشخص می کند.


CAN، مخفف عبارت "Controller Area Network" یکی از پرکاربردترین فیلدباس های بین المللی است. یک شبکه منفرد متشکل از گذرگاه‌های CAN با ویژگی‌های الکتریکی سخت‌افزار شبکه محدود می‌شود. به عنوان یک گذرگاه ارتباطی سریال چند- اصلی، مشخصات طراحی اولیه CAN به نرخ بیت بالا و مقاومت قوی در برابر تداخل الکترومغناطیسی و همچنین توانایی تشخیص هرگونه خطای رخ داده در گذرگاه ارتباطی نیاز دارد. حتی زمانی که فاصله انتقال سیگنال به 10 کیلومتر می رسد، CAN همچنان می تواند نرخ انتقال داده تا 50 کیلوبیت بر ثانیه را ارائه دهد. جدول 1 رابطه بین حداکثر فاصله انتقال بین هر دو گره در یک گذرگاه CAN و نرخ بیت آنها را نشان می دهد.

 

حداکثر فاصله بین هر دو گره در یک پیکربندی مثلثی در یک سیستم CAN Bus

نرخ بیت/کیلوبیت بر ثانیه 1000 500 250 125 100

حداکثر فاصله در متر 40 130 270 530 620

نرخ بیت (کیلوبیت بر ثانیه) 50 20 10 5

حداکثر فاصله (متر) 1300 3300 6700 10000


همانطور که مشاهده می شود، گذرگاه CAN یک گذرگاه سریال برتر از RS{1}}232 از نظر عملکرد بلادرنگ، سازگاری، انعطاف پذیری و قابلیت اطمینان است. هنگامی که دو دستگاه سریال دور از هم قرار دارند و نمی توانند مستقیماً از طریق RS-232 متصل شوند، RS-232 را می توان به CAN تبدیل کرد تا به اتصال شبکه ای دستگاه های سریال از طریق گذرگاه CAN دست یابد.


با این حال، RS-232 و CAN از نظر سطوح ولتاژ و فرمت فریم به طور قابل توجهی متفاوت هستند. به طور مشخص:


استاندارد RS-232 از منطق منفی استفاده می کند و هر سطح ولتاژ بین +3V و +15V را به عنوان منطق "0" و هر سطح ولتاژ بین 3- و 15 ولت را به عنوان منطق "1" تعریف می کند. از طرف دیگر سیگنال های CAN با استفاده از ولتاژ دیفرانسیل منتقل می شوند. دو خط سیگنال "CAN_H" و "CAN_L" نامیده می شوند. در حالت استاتیک، هر دو تقریباً 2.5 ولت هستند. این حالت به عنوان یک "1" منطقی نشان داده می شود و به عنوان "غیرطبیعی" نیز شناخته می شود. هنگامی که CAN_H بالاتر از CAN_L باشد، یک "0" منطقی را نشان می دهد که به عنوان "غلبه" شناخته می شود. در حالت غالب، مقادیر ولتاژ معمولی عبارتند از: CAN_H=3.5V, CAN_L=1.5V;

 

فرمت فریم پورت سریال RS-232 به این صورت است: یک بیت شروع، هشت بیت داده، یک بیت نهم قابل برنامه ریزی (که به عنوان بیت آدرس/داده هم برای ارسال و هم برای دریافت عمل می کند) و یک بیت توقف. فرمت قاب داده CAN شامل: هدر قاب + شناسه + داده (که می توان به دو فرمت فریم استاندارد و فریم توسعه یافته تقسیم کرد).

基于现场总线实现RS-232到CAN转换的应用设计بنابراین، طراحی به یک میکروکنترلر برای انجام تبدیل هایی مانند تبدیل فرمت سطح و فریم نیاز دارد. فرآیند تبدیل در شکل 1 نشان داده شده است.

 

2 طراحی سخت افزار برای تبدیل RS{2}}232 به CAN


در طراحی دستگاه تبدیل RS-232-به-CAN، میکروکنترلر AT89C52 به عنوان ریزپردازنده استفاده می‌شود. SJA1000 به عنوان میکروکنترلر CAN استفاده می شود. SJA1000 لایه فیزیکی و توابع لایه پیوند داده پروتکل CAN را ادغام می کند و می تواند به صورت غیر فعال قاب بندی داده های ارتباطی را مدیریت کند. AT82C250 به عنوان رابط بین کنترل کننده CAN و گذرگاه فیزیکی عمل می کند و قابلیت انتقال دیفرانسیل را برای باس و قابلیت دریافت دیفرانسیل را برای کنترل کننده CAN فراهم می کند. از طریق پین 3 AT82C250، می‌توان سه حالت عملکرد متفاوت (سرعت{16}}بالا، کنترل شیب، و آماده به کار) را انتخاب کرد. هنگامی که پایه 3 به زمین متصل است، دستگاه در حالت پرسرعت کار می کند. عایق نوری با سرعت بالا با استفاده از 6N137 اجرا می شود که از تداخل سیگنال های خارجی جلوگیری می کند. MAX232 برای تبدیل سیگنال های 232 سطحی به سطوح TTL برای تراشه رابط میکروکنترلر استفاده می شود. برای جزئیات مدار رابط سخت افزاری خاص، لطفاً به منابع مربوطه برای SJA1000 مراجعه کنید. توضیح بیشتر در اینجا ارائه نشده است. با این حال باید به نکات زیر توجه کرد.


(1) یک مقاومت 120Ω در هر دو انتهای گذرگاه CAN متصل است تا با امپدانس گذرگاه مطابقت داشته باشد، در نتیجه ایمنی در برابر تداخل و قابلیت اطمینان ارتباطات داده را بهبود می بخشد. اما در عمل کافی است اطمینان حاصل شود که مقاومت شنت بین "CAN_H" و "CAN_L" در شبکه CAN 60Ω است.


(2) پین 20 (RX1) SJA1000 می تواند در صورت عدم استفاده به زمین متصل شود (به دلیل خاص به طراحی نرم افزار مراجعه کنید). هنگامی که با تنظیم بیت CDR.6 ترکیب می شود، این می تواند به طور قابل توجهی طول باس را افزایش دهد.


(3) روش اتصال پین های TX0 و TX1 سطح خروجی سریال را تعیین می کند. برای جزئیات خاص به تنظیمات موجود در ثبت کنترل خروجی (OCR) مراجعه کنید.


(4) یک مقاومت شیب بین پایه RS AT82C250 و زمین متصل است. مقدار مقاومت را می توان به طور مناسب بر اساس سرعت ارتباط اتوبوس تنظیم کرد که معمولاً از 16 کیلو اهم تا 140 کیلو اهم متغیر است.


(5) MAX232 به چهار خازن الکترولیتی-C1، C2، C3 و C4 نیاز دارد که برای تبدیل توان داخلی نیز استفاده می‌شوند. همه دارای رتبه 1 μF/25 V هستند. خازن های تانتالیوم توصیه می شود و باید تا حد امکان نزدیک به تراشه قرار گیرند. یک خازن جداکننده 0.1 μF باید بین منبع تغذیه VCC و زمین وصل شود.


3 طراحی نرم افزار برای تبدیل RS-232 به CAN


تحت کنترل ریزپردازنده، استفاده از دریافت پورت سریال و وقفه های CAN در طول تبادل داده بین RS-232 و CAN می تواند کارایی عملیاتی را بهبود بخشد. فلوچارت برنامه اصلی در شکل 2 نشان داده شده است. این در درجه اول شامل تنظیم حالت عملکرد، تقسیم ساعت و ثبت های فیلتر پذیرش، پیکربندی پارامترهای نرخ باود و تنظیم رجیستر فعال کردن وقفه است.

 

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

info-1-1

 

3.1 تنظیم نرخ فیلتر CAN


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


نرخ بیت سیستم، fBil، تعداد بیت های داده ارسال شده در واحد زمان را نشان می دهد، یعنی نرخ باود fBit=1/tBit. زمان‌بندی بیت اسمی از سه بخش غیر{4}تداخلی تشکیل شده است: SYNC_SEG، TSEG1، و TSEG2. این سه بخش زمانی به ترتیب tSYNC_SEG، tTSEG1 و tTSEG2 نشان داده می شوند. بنابراین، دوره بیت اسمی tBit مجموع این سه بخش زمانی است.


tBit=tSYNC_SEG + tTSEG1 + tTSEG2


در دوره بیت، این بخش ها بر حسب مضرب های صحیح یک واحد زمانی پایه بیان می شوند. این واحد زمانی، سهمیه زمانی (TQ) نامیده می شود و مدت زمان سهمیه زمانی یک چرخه از ساعت سیستم CAN (tSCL) است که از دوره ساعت نوسانگر (tCLK) مشتق شده است. ساعت سیستم CAN را می توان با برنامه ریزی عامل پیش مقیاس کننده (مقدار از پیش تعیین شده نرخ باود، BRP) تنظیم کرد. به طور مشخص:


tSCL=BRP × 2tCLK=2BPR/fCLK


بازه زمانی بسیار مهم دیگر برای محاسبات زمان بندی بیت CAN، عرض پرش همگام سازی (SJW) است که مدت زمان آن tSJW است. بخش SJW بخشی از چرخه بیت نیست. در عوض، حداکثر تعداد TQهایی را که توسط آنها چرخه بیت در طول یک رویداد همگام سازی مجدد گسترش یا کوتاه می شود، تعریف می کند. علاوه بر این، پروتکل CAN به کاربران اجازه می‌دهد حالت نمونه‌برداری بیت (SAM) را مشخص کنند، که می‌تواند حالت یک-نمونه یا سه{3}}حالت نمونه (انتخاب یک نتیجه از سه نمونه) باشد. در حالت یک-نمونه، نقطه نمونه برداری در انتهای بخش TSEG1 است. در حالت سه-نمونه‌ای، دو نقطه نمونه‌گیری اضافی در مقایسه با حالت نمونه- تک گرفته می‌شود. اینها قبل از پایان بخش TSEG1 قرار دارند که با یک TQ از هم جدا شده اند.

 

info-1-1

BPR، SJW، SAM، TESG1 و TESG2 که در بالا ذکر شد، همگی می توانند توسط کاربر از طریق رجیسترهای داخلی BTR0 و BTR1 کنترل کننده CAN تعریف شوند. جزئیات در شکل 3 نشان داده شده است. پس از تنظیم BTR0 و BTR1، محدوده نرخ باود واقعی:
حداکثر=1/(tBit - tSJW)، حداقل=1/(tBit + tSJW)

 

3.2 تشخیص نرخ باود پورت سریال


هنگامی که یک دستگاه سریال به عنوان میزبان عمل می کند، اگر در آن زمان نیاز به تشخیص نرخ باود پورت سریال دستگاه تبدیل دارید، می توانید ابتدا نرخ باود دریافت میزبان (مثلاً 9600 باود) را تنظیم کنید و یک کاراکتر خاص (مثلاً یک بار برگشتی) از ترمینال ارسال کنید. به این ترتیب میزبان می تواند بر اساس اطلاعات کاراکترهای دریافتی، نرخ باود ارتباطی دستگاه تبدیل را تعیین کند. مقدار ASCII کاراکتر بازگشتی کالسکه 0DH است. مقادیر دریافتی با نرخ های باود مختلف در جدول 2 فهرست شده است.


بایت های دریافتی با نرخ های مختلف Baud


نرخ باود (بیت بر ثانیه) بایت های دریافتی (هگزادسیمال) نرخ باود (بیت بر ثانیه) بایت های دریافتی (هگزادسیمال)


1200 80 4800 E6

1800 F0 9600 0D

2400 78 19200 F*


3.3 کنترل جریان پورت سریال


اصطلاح "جریان" استفاده شده در اینجا به جریان داده اشاره دارد. از دست دادن اطلاعات اغلب در حین انتقال بین دو پورت سریال رخ می دهد. از آنجایی که بافر میکروکنترلر ظرفیت محدودی دارد، اگر بافر هنگام دریافت داده ها پر باشد، هرگونه داده ای که در آن زمان ارسال می شود از بین می رود. کنترل جریان به طور موثر این مشکل را حل می کند: زمانی که پایانه گیرنده نتواند داده ها را به موقع پردازش کند، سیستم کنترل جریان یک سیگنال "دریافت نشدن" را ارسال می کند و باعث می شود پایان ارسال کننده تا زمانی که سیگنال "انتقال مجدد" را دریافت کند، ارسال را متوقف کند. بنابراین کنترل جریان فرآیند انتقال داده را مدیریت می کند و از از دست رفتن داده ها جلوگیری می کند. دو نوع رایج کنترل جریان عبارتند از: کنترل جریان سخت افزاری (شامل RTS/CTS، DTR/CTS، و غیره) و کنترل جریان نرم افزاری (XON/XOFF-ادامه/توقف). توضیح زیر صرفاً بر روش کنترل جریان سخت افزاری با استفاده از RTS/CTS متمرکز است.


هنگام استفاده از سخت‌افزار برای کنترل جریان، پایه‌های RTS و CTS ترمینال سریال به پورت‌های ورودی/خروجی میکروکنترلر متصل می‌شوند و سیگنال‌های start/stop با تنظیم پورت‌های ورودی/خروجی بر روی 1 یا 0 دریافت و ارسال می‌شوند. تجهیزات پایانه داده (مانند رایانه) از RTS برای شروع جریان داده ارسال شده توسط میکروکنترلر استفاده می‌کنند، در حالی که کنترل‌کننده داده از میکروکنترلر استفاده می‌کند. کامپیوتر برای پیاده‌سازی این روش دست دادن سخت‌افزاری، یک پرچم-سطح بالا و یک پرچم{4}سطح پایین در طول برنامه‌نویسی بر اساس اندازه بافر دریافت‌کننده تنظیم می‌شوند. هنگامی که مقدار داده در بافر به آستانه سطح{6}بالا می رسد، خط CTS در انتهای دریافت کننده پایین تنظیم می شود (منطقی 0). وقتی برنامه در انتهای فرستنده تشخیص داد که CTS کم است، انتقال داده را متوقف می کند تا زمانی که مقدار داده در بافر دریافت کننده کمتر از آستانه سطح پایین-و CTS بالا تنظیم شود. RTS برای نشان دادن اینکه آیا دستگاه گیرنده آماده دریافت داده است یا خیر استفاده می شود.


3.4 CAN زیربرنامه دریافت کند


فرمت PeliCAN از هر دو فریم استاندارد و توسعه یافته پشتیبانی می کند. حالت CAN را می توان با استفاده از CDR.7 در ثبت تقسیم کننده ساعت پیکربندی کرد (0 برای BasicCAN، 1 برای PeliCAN). هنگام دریافت داده های CAN، بیت FF در اطلاعات قاب برای تعیین اینکه آیا یک فریم استاندارد یا توسعه یافته است و از بیت RTR برای تمایز بین یک فریم راه دور و یک قاب داده استفاده می شود. زیربرنامه دریافت CAN به شرح زیر است:

 

;//////////////////////////////////////////////////////////////////

;//دریافت داده CAN/یکپارچه در قالب فریم با شناسه 2 بایت//

;///////////////////////////////////////////////////////////////////////

 

مجدد:

MOV R0, #C_RE ; آدرس شروع بافر داخلی میکروکنترلر

MOV DPTR، #RXBUF؛ محتویات بافر دریافت را بخوانید و ذخیره کنید

MOVX A، @DPTR ; بایت دوم بافر CAN را بخوانید

MOV @R0, A ; ذخیره کنید

JB ACC.7, EFF_RE ; بیت FF: 0=SFF، 1=EFF

MOV R2، #0

SJMP SFF_RE ; بسته به شماره شناسه، موقعیتی که "بایت داده" گرفته می شود متفاوت است

EFF_RE: MOV R2، #2

SFF_RE: MOV R2، #2

SFF_RE:

JB ACC.6، EXIT_RECAN ; بیت RTR را بررسی کنید. اگر 1 (قاب از راه دور)، به بیرون بپرید

ANL A، #0FH

MOV R3, A ; در این مرحله، 4 بیت میانی نشان دهنده طول داده است

MOV C_NUM، A ; طول قاب دریافتی را در R3 و R5 ذخیره کنید

RDATA0:

INC DPTR ; شناسه 2 بایتی

INC R0

MOVX A، @DPTR

MOV @R0, A

INC DPTR

MOVX A، @R0، A

INC DPTR

MOVX A، @DPTR

MOV @R0, A

MOV A, R2 ; اگر EFF است، شناسه دو بایتی- را رد کنید

JZ DRATA1

INC DPTR

INC DPTR

DATA1: بایت های داده

INC DPTR

INC R0

MOVX A، @DPTR

MOV @R0, A

DJNZ R3، RDATA1

EXIT_RECAN:

RET

 

4 نتیجه گیری


کوچک‌سازی رایانه‌ها شرایط لازم را برای توسعه هوشمند ابزارهای اندازه‌گیری و کنترل فراهم کرده است و دستگاه‌های پایانه مبتنی بر ریزپردازنده{0}}را قادر می‌سازد تا از قابلیت‌های ارتباطی دیجیتال برتر برخوردار شوند. با ظهور تعداد فزاینده ای از پایانه های هوشمند، تقاضاهای بیشتری بر روی معماری شبکه، پروتکل ها،{2}}عملکرد زمان واقعی، و همچنین قابلیت اجرا، انعطاف پذیری، قابلیت اطمینان و حتی هزینه اعمال می شود. در نتیجه، فناوری فیلدباس نوید زیادی برای توسعه آینده دارد. ساختار فریم گذرگاه CAN شامل یک شناسه (ID) است که امکان داشتن چندین میزبان شبکه را در یک شبکه دستگاه فراهم می کند. یعنی از طریق این میزبان های شبکه می توان وضعیت عملیاتی کل شبکه دستگاه را رصد کرد و تصمیمات کنترلی مربوطه را اتخاذ کرد. این دستگاه در حال حاضر به طور کامل توسعه یافته است و در کاربردهای عملی به نتایج بسیار خوبی دست یافته است.

ارسال درخواست

whatsapp

تلفن

ایمیل

پرس و جو