|
السلام عليكم
اخي حسن كما تعلم مواضيع الاتصالات والبروتوكولات صعبه عادتا وخاصه RS485 بسبب كتره slaves
ما هي طريقتك لرؤيه ان master و ال slavesيرسلو وسيتقبلوا بطريقه صحيحه اقصد طريقه فحص الاخطاء ؟؟
هل ستستخدم بروتوس فقط ام سترى البيانات على شاشه متلا؟؟
|
السلام عليكم
أخي العزيز انا اريد تجربه على البروتيس واقع العملي
لكن تكوين جدول زمني وعمليه مخاطبه بين master و ال slaves جدها صعبه
مشكله اخي تصادم البيانات يحصل فقط في الارسال
لذلك انا اضع هذا الكود وهو يعمل
مثلا هذا في master
كود:
void send_data_through_rs485()
{
GIE_bit=0;
flag_new_data=0;
kk[0]=100;
kk[1]=output_relay_save[0];
kk[2]=0;
delay_ms(250);
RS485Master_Send(kk,3,100);
RS485Master_Send(kk,3,100);
GIE_bit=1;
}
وهذا في slave
كود:
void send_data_through_rs485()
{
GIE_bit=0;
led_send=1;
net[0]=100;
net[1]=recived_data_from_net;
delay_ms(250);
RS485Slave_Send(net,2);
RS485Slave_Send(net,2);
flag_new_data=0;
led_send=0;
GIE_bit=1;
}
على فكره انا لاأخلي البيك يرسل البيانات بأستمرار من خلال البرتوكول RS485 اي
فقط لما تكون هناك البيانات جديده
وطريقه اختبار هذه هي اني اخزن البيانات القديمه في متغير مثلا old_received والبيانات جديده اخزنها في new_received
واختبر هل old_received =new_received فأذا كانت قيم متساويه اذن لايوجد داعي لارسال القيم ام اذا لا اجعل flag_new_data=1 وايضا
old_received =new_received ومن ثم ارسل البيانات الجديده خلال البرتوكول RS485
كود:
if(flag_new_data==1)
{
send_data_through_rs485();
}
وهذا مشروع يستخدم master و3 slaves
http://up.top4top.net/downloadf-top4...d7381-rar.html
وهي نفس طريقه أعلاه
بالنسبه هناك led لحاله error لكي ينبهك على ان هناك مشاكل في البيانات
تحياتي