125 কেবিট / সেকেন্ডে সর্বাধিক সিএন বাস ফ্রেম (বার্তা) হার কত?


18

আমার সিএন বাস 125 কেবিট / সেগে চলছে এবং একচেটিয়াভাবে ফ্রেম বিন্যাস ব্যবহার করছে। আমি জানতে পারি যে ফ্রেমটি আমি পাঠাতে পারি তার সর্বাধিক হার কী। ধরা যাক ডেটা দৈর্ঘ্য সর্বদা আট বাইট।

এই উইকিপিডিয়া পৃষ্ঠা অনুসারে , প্রতিটি ফ্রেমের (1+11+1+1+18+1+2+4+64+15+1+1+1+7) = 128বিটগুলির সর্বোচ্চ ফ্রেমের দৈর্ঘ্য রয়েছে :

এখানে চিত্র বিবরণ লিখুন

সর্বনিম্ন তিন বিট ইন্টারফ্রেম ব্যবধানের অ্যাকাউন্টে নেওয়া, 125 কেবিট / সে এর অধীনে সর্বাধিক প্যাকেটের হার হওয়া উচিত: 125000 / ( 128 + 3) = 954প্রতি সেকেন্ডে ফ্রেম।

তবে আমার পরীক্ষায় আমি এতটা উচ্চতায় উঠতে পারিনি। আমি যে সর্বোচ্চ ফ্রেম রেট অর্জন করতে পারি (সমস্ত আট বাইট ডেটা সহ) প্রতি সেকেন্ডে প্রায় 850 ফ্রেম।

এখানে কী ভুল - আমার গণনা, বা আমার পরীক্ষার পদ্ধতি?


এটিকে একটি সুযোগ দিয়ে দেখুন এবং দেখুন যে আপনি আসলে কী পাচ্ছেন। সম্ভবত আপনার হার্ডওয়্যার একটি প্রেরণ করার সাথে সাথেই নতুন ফ্রেম সংক্রমণ করতে প্রস্তুত নয়। এছাড়াও, আপনি কি এসিকে সময়টি আমলে নিচ্ছেন? আপনার লেবেলযুক্ত বিটগুলির যোগফল আপনাকে ঠিক কী গণনা করছে তা আমাদের বলায় সহায়ক নয়।
অলিন ল্যাথ্রপ

অনুশীলনে, ACK সময় এবং ইন্টারফ্রেমের ব্যবধানের প্রয়োজনের কারণে CAN বাসের কোনও বর্ধিত সময়ের জন্য 100% বাস ব্যবহার করা শক্ত। আপনার ক্যান কন্ট্রোলার যেকোন সময় বাড়ানোর জন্য 100% বাস ব্যবহারকে সমর্থন করতে সক্ষম না হতে পারে।
ত্রিস্তান সিফার্ট

2
আপনি ঠিক কী ডেটা পাঠাচ্ছেন তার উপর নির্ভর করে বিট স্টফিং আপনার ফ্রেমের আকার 10% পর্যন্ত বাড়িয়ে তুলতে পারে।
হোয়াটআরফিস্ট

1
@ xiaobai - না, ডেটা ক্ষেত্রের দৈর্ঘ্য পরিবর্তন হয়। একটি লিঙ্ক হিসাবে, আপনি ইতিমধ্যে এটি সরবরাহ করেছেন। পুরো পৃষ্ঠাটি পড়ুন। যদি আপনার পরীক্ষাগুলি সমস্ত শূন্য বা সমস্ত পাঠাচ্ছে তবে এটি অনেক কিছুই ব্যাখ্যা করবে।
হোয়াটআরবিস্ট

1
আপনি যদি অ্যাকাউন্ট না করে থাকেন তবে এসিके সঞ্চালনের সময়কে কার্যকর করতে পারে। আবার, সংক্ষিপ্ত সংখ্যার আপনার লেবেলযুক্ত জগাখিচুড়িটি আপনাকে সত্যই কী যোগ করছে এবং আমাদের কী অনুপস্থিত তা আমাদের জানায় না be
অলিন ল্যাথ্রপ

উত্তর:


18

অলিন ল্যাথ্রপের পরামর্শ অনুসারে, আমি বিট-স্টাফিংয়ের প্রসারণ করব।

ক্যান এনআরজেড কোডিং ব্যবহার করে এবং এর জন্য দীর্ঘ রান বা জিরোতে খুশি হয় না (এটি ঘড়ির প্রান্তগুলি কোথায় হওয়া উচিত তার ট্র্যাক হারিয়ে ফেলে)। এটি এই সম্ভাব্য সমস্যাটি বিট-স্টাফিংয়ের মাধ্যমে সমাধান করে। প্রেরণ করার সময়, যদি এটি 5 ধারাবাহিকের একটি দৌড়ের সাথে মুখোমুখি হয় বা এটি শূন্য করে এটি অন্যান্য মেরুটির কিছুটা সন্নিবেশ করায় এবং যখন প্রাপ্তি হয়, এটি 5 ধারাবাহিকের সাথে মুখোমুখি হয় বা শূন্য হয় তবে পরবর্তী বিটটিকে উপেক্ষা করে (যদি না বিট পূর্ববর্তীটির মতো হয় তবে বিটস, যার ক্ষেত্রে এটি ত্রুটির পতাকা জারি করে)।

আপনি যদি আপনার পরীক্ষার ডেটার জন্য সমস্ত শূন্য বা সমস্ত পাঠাচ্ছেন, তবে 64 টি অভিন্ন বিটের একটি স্ট্রিংয়ের ফলে 12 স্টফড বিট সন্নিবেশিত হবে। এটি 868 ফ্রেম / সেকেন্ডের সেরা-কেস ফ্রেমের হার সহ মোট ফ্রেমের দৈর্ঘ্য 140 বিট করে তুলবে। যদি ডেটা বিটগুলি সিআরসি এর এমএসবি এর সমান হয় তবে আপনি সেখানে আর একটি স্টাফ বিট পাবেন এবং ফ্রেম রেট 868 ফ্রেম / সেকেন্ডে নেমে আসবে। সিআরসি-র যদি দীর্ঘতম রান বা শূন্য থাকে তবে এটি ফ্রেমের হারকে আরও কমিয়ে দেবে। একই বিবেচনাটি আপনার সনাক্তকারীদের ক্ষেত্রে প্রযোজ্য।

মোট 16 স্টাফ বিট 850.3 ফ্রেম / সেকেন্ডের আদর্শ ফ্রেম রেট তৈরি করবে, তাই আপনার এটি বিবেচনা করা উচিত। একটি দ্রুত পরীক্ষা হ'ল বিকল্প বিটগুলির সাথে টেস্ট ডেটা ব্যবহার করা এবং আপনার ফ্রেমের হারের কী হয় তা দেখুন।


3
হ্যাঁ, আমার আসল পরীক্ষায় পে-লোড এবং আইডিতে প্রচুর শূন্য রয়েছে। ডেটা বা আইডিতে কোনও 5 ধারাবাহিক শূন্য নেই তা নিশ্চিত করার পরে, এখন আমি 940 ফ্রেম / সেকেন্ড পেতে পারি , গণনার সীমাটির খুব কাছাকাছি। দুর্দান্ত উত্তরের জন্য অনেক ধন্যবাদ।
পেঙ্গে গেঞ্জ

1

বিট স্টাফিংয়ের বর্ণনা এবং কীভাবে এটি তাত্ত্বিক সিএএন থ্রুপুটকে প্রতিকূলভাবে প্রভাবিত করতে পারে তার সাথে ওলিন ঠিক আছে। আর একটি জিনিস যা তাত্ত্বিক থেকে প্রকৃত থ্রুপুটকে আরও হ্রাস করতে পারে তা হ'ল বিলম্ব। এমনকি যদি আপনার সিএএন কন্ট্রোলার 100% বাসের ব্যবহার অর্জন করতে সক্ষম হয় তবে হোস্ট প্রসেসর সেই হারে Tx এবং / অথবা Rx পরিচালনা করতে সক্ষম নাও হতে পারে। এটি একটি ধীর প্রসেসর এবং / অথবা অদক্ষ ফার্মওয়্যারের ফলাফল হতে পারে যা ক্যান স্ট্যাক প্রয়োগ করে।


1

আপনি যে ক্ষুদ্রতম 2.0a (স্ট্যান্ডার্ড) ফ্রেমটি তৈরি করতে পারেন তা হ'ল 47 বিট ... আপনি যে ক্ষুদ্রতম 2.0 বি (বর্ধিত) ফ্রেমটি বানাতে পারেন তা 67 বাইট হয় ... এতে আন্তঃ ফ্রেম ফাঁকির 3 বিট অন্তর্ভুক্ত থাকে এবং বিট স্টাফিংকে অন্তর্ভুক্ত করা হয় ... তত্ত্ব অনুসারে আমরা এমন একটি ফ্রেম তৈরি করতে পারি যা কখনই স্টফ করে না; বাস্তবে, বিট স্টফিং বেশ ঘটতে চলেছে!

CANBus 2.0a / b এর সর্বাধিক বাউড 1Mbit M
1 এমবি / এস-তে, একটি একক (প্রভাবশালী / রিসেসিভ) বিট 1uS লম্বা হয়, অর্থাৎ। 0.000'001 এস
সুতরাং একটি 67 বিট ফ্রেম [সবচেয়ে ছোট তাত্ত্বিক 2.0b ফ্রেম] প্রেরণে 67uS নেবে - অন্য (67 বিট) ফ্রেম সংক্রমণ হওয়ার আগে।
1'000'000 / 67 14,925 সম্পূর্ণ ফ্রেম দেয় (পরবর্তী ফ্রেমের + 25 বিট)

আপনি যে গতির
1/8 তমতে চলছেন , আপনি 14'925 / 8 = 1'865 ফ্রেম / সেকেন্ড @ 125Kb এর প্যাকেটগুলির সর্বাধিক 1/8 টি পেতে পারেন

আপনি যখন সমস্ত 64 বাইট (8 বাইটস) ডেটা ব্যবহার করছেন এবং মনে করছেন আপনি একটানা 1 বা 0 এর
1'000'000 / (67 + 64) = 7'633
7 ' এর স্ট্রিং করে বিট স্টাফিং "ত্রুটিগুলি" ট্রিগার করেন নি have 633/8 = 954

এবং এটি আপনার তারের নিখুঁতও ধরে নিচ্ছেন। আপনার বাসটি কি 120 হিম ইউটিপি কেবল থেকে তৈরি এবং উভয় প্রান্তে ক্যাপাসিটিভভাবে ডিকোপল করা যায়? অথবা এক 120 প্রান্তের রেজিস্টার সহ কয়েকটি এলোমেলো তারের এক প্রান্ত জুড়ে?

সামগ্রিকভাবে আমি বলব আপনি তাত্ত্বিক সর্বাধিক 90% থ্রুপুট পেতে বেশ ভাল করছেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.