![]() |
em có câu hỏi này hơi chuối tí là tại sao trong mạng can tại mỗi node mình lại mắc 1 con trở 120ohm làm gì vậy các bác, con trở đó có tác dụng gì vậy?
|
Trích:
Đơn giản là: nút A muốn truyền,ví dụ nó phát ra mức lặn (Vh-Vl = 0 v, logic 1), nhưng mà trên đường truyền có nút B đang phát ra mức trội (Vh-Vl =5v, logic 0). Thằng A thấy thế thì dừng truyền luôn....việc này thực hiện đuợc nhờ con trở đó... |
Xin tài liệu
Bác Ngô đưc Bình ơi ,em đang làm đồ án về truyền thông mạng Can bác có thể gửi cho em một chút tài liệu về Can không.mấy cái link bác up lên die rồi .huhu
Em cảm ơn bác trước nha mail của em đây daothanh.k1@gmail.com |
các bác cho em hỏi về định thời bit: Bit Timing? nguyên lý,..
các bác giúp em với ! |
Định thời bit:bit timing trong mạng giao tiếp CAN đó, khó hiểu quá các bác ah, giúp em với
cám ơn các bác trước nhé! |
Trích:
|
CAN với PIC30f4012
Em có viết giao thức CAN để truyền thông 2 chip pic30f4012, em viết dùng Mikroc for Dspic. chip thứ nhất em đọc tín hiệu từ cảm biến LM35, chíip thứ 2 nhận tín hiệu này qua mạng truyền thông CAN và hiển thị lên màn LCD (16x2), sau khi dich và nạp xong em không thấy có tín hiệu gì được truyền thông cả. Rất mong các anh chị giúp đỡ.
sau đây là code của 2 chíp Chíp 1 ( nhận tín hiệu từ cảm biến LM35) void main() { unsigned char temperature, data[8]; unsigned short init, send, dt, len, read; char SJW, BRP, Phase_Seg1, Phase_Seg2, Prop_Seg, txt[4]; unsigned int temp; unsigned long mV; long id, mask; TRISDbits.TRISD0=1; // PORTD0 are inputs TRISF = 0x04; // RB2 is output, RB3 is input //ADCON1 = 0x80; // CAN BUS Timing Parameters // SJW= 1; BRP = 1; Phase_Seg1 = 6; Phase_Seg2 = 7; BRP = 1; Prop_Seg = 6; init = CAN_CONFIG_SAMPLE_THRICE & // Form value to be used CAN_CONFIG_PHSEG2_PRG_ON & // with CAN1Initialize CAN_CONFIG_XTD_MSG & CAN_CONFIG_DBL_BUFFER_ON & CAN_CONFIG_MATCH_MSG_TYPE & CAN_CONFIG_LINE_FILTER_OFF; send = CAN_TX_PRIORITY_0 & // Form value to be used CAN_TX_XTD_FRAME & // with CAN1Write CAN_TX_NO_RTR_FRAME; read = 0; // // Initialise CAN module // CAN1Initialize(SJW, BRP, Phase_Seg1, Phase_Seg2, Prop_Seg, init); // //Set CAN CONFIG mode // CAN1SetOperationMode(CAN_MODE_CONFIG, 0xFF); mask = -1; // //Set all MASK1 bitstol's // CAN1SetMask(CAN_MASK_B1, mask, CAN_CONFIG_XTD_MSG); // //Set all MASK2 bitstol's // CAN1SetMask(CAN_MASK_B2, mask, CAN_CONFIG_XTD_MSG); // //Set id of filter B1_F1 to 3 // CAN1SetFilter(CAN_FILTER_B2_F3,500,CAN_CONFIG_XTD_ MSG); // // Set CAN module to NORMAL mode // CAN1SetOperationMode(CAN_MODE_NORMAL, 0xFF); // // Program loop. Read the temperature from analog temperature // sensor for(;;) // Endless loop { // //Walt until a request is received // dt = 0; while(!dt) dt = CAN1Read(&id, data, &len, &read); if(id == 500 && data[0] == 'T') { // // Now read the temperature // temp = Adc_Read(0); // Read temp mV = (unsigned long)temp * 5000 /1024; // in mV temperature = mV/10; // in degrees C // // send the temperature to Node:Display // data[0] = temperature; id = 3; // Identifier CAN1Write(id, data, 1, send); // send temperature } } } |
Pic 30f4012 và CAN ( tiếp)
CHíp thứ 2 nhận tín hiệu hiển thị LCD:
void main() { unsigned char temperature, data[8]; unsigned short init, send, dt, len, CANread; char SJW, BRP, Phase_Seg1, Phase_Seg2, Prop_Seg, txt[4]; long id, mask; TRISB = 0; TRISC = 0; TRISF = 0x04; SJW = 1; BRP = 1; Phase_Seg1 = 6; Phase_Seg2 = 7; Prop_Seg = 6; init = CAN_CONFIG_SAMPLE_THRICE & // Form value to be used CAN_CONFIG_PHSEG2_PRG_ON & // with CAN1Initialize CAN_CONFIG_XTD_MSG & CAN_CONFIG_DBL_BUFFER_ON & CAN_CONFIG_MATCH_MSG_TYPE & CAN_CONFIG_LINE_FILTER_OFF; send = CAN_TX_PRIORITY_0 & // Form value to be used CAN_TX_XTD_FRAME & // with CAN1Write CAN_TX_NO_RTR_FRAME; CAN1read = 0; CAN1SetMask(CAN_MASK_B1, mask, CAN_CONFIG_XTD_MSG); CAN1SetMask(CAN_MASK_B2, mask, CAN_CONFIG_XTD_MSG); CAN1SetFilter(CAN_FILTER_B2_F3,3,CAN_CONFIG_XTD_MS G); CAN1SetOperationMode(CAN_MODE_NORMAL, 0xFF); Lcd_Custom_Config(&PORTB, 5,4,3,2,1,0, &PORTC, 13); Lcd_Custom_Cmd(LCD_CLEAR); Lcd_Custom_Out(1,1 ,"CAN BUS"); Delay_ms(1000); for(;;) // Endless loop { Lcd_Custom_Cmd(LCD_CLEAR); //Clear LCD Lcd_Custom_Out(1,1, "Temp = "); // Display "Temp = " // // Send a message to Node:COLLECTOR and ask for data // data[0] = 'T'; // Data to be sent id = 500; // Identifier CAN1Write(id, data, 1, send); // send T // // Get temperature from node:COLLECT // dt = 0; while(!dt) dt = CAN1Read(&id, data, &len, &CANread); if(id == 3) { temperature = data[0]; ByteToStr(temperature,txt); // Convert to string Lcd_Custom_Out(1,8,txt); // Output to LCD Delay_ms(1000); //Wait 1 second } } } |
Em là sinh viên năm 3 ngành điều khiển tự động. em đang làm đề tài kết thúc môn MẠNG CÔNG NGHIỆP. em muốn hỏi các anh chị ai có tài liệu hay kinh nghiệm thực tế nào về ứng dụng mạng CANBUS trong công nghiệp hay trên Oto thì có thể giúp em được không ạ.Em đang cần gấp. Rất mong được giúp đỡ. Anh chị nào nhiệt tình giúp em xin vui lòng gửi mail cho em : 0751050066@sv.hcmutrans.edu.vn.
Em xin chân thành cảm ơn. |
Cần tài liệu về ứng dụng CAN OPEN trên tàu thuỷ
Trích:
Em đang cần - rất cần các tài liệu về ứng dụng CAN OPEN trên tàu thuỷ mà ko có ở đâu cả? Nếu có anh cung cấp lên diễn đàn hoặc làm ơn gửi mail cho em theo địa chỉ lephuongnhung@caodangvtc.edu.vn nhé. Cảm ơn anh rất nhiều. |
Can
Hi Các Đại Ca!
Mình đã làm canbus của PIC 18, hai node giao tiếp thì chạy ok! Nếu mình dùng nhiều node thì nó lại stop can. Mình mới tìm cách dùng MASK và FILTER để lọc id thì nó chạy có lúc ok, có lúc ko ok? Đại ca nào hiểu biết nhiều về vấn đề này xin cho minh một lời tư vấn! tehin2005! Kính chào! |
chào anh chị,em là người mới tìm hiểu về CAN. Cho em hỏi là những dòng PIC nào có thế dùng để kết nối mạng CAN?
|
1 Attachment(s)
Chào các thành viên trong diễn đàn!
Hiện tại em đang tham gia nhóm tìm hiểu về giao tiếp CAN. Bọn em sử dụng chip PIC8F4680 , có tích hợp sẵn modul giao tiếp CAN, trên kit EasyPIC. Với 2 kit EasyPIC, bọn em lập trình giao tiếp truyền từ kit 1 sang kit 2, và hiển thị DEBUG lên máy tính qua RS232. Vì chưa tìm được 2 con MPC2551 để tạo BUS CAN chuẩn nên em nối chéo chân của 2 bộ CAN với nhau : CAN_TX(1) -> CAN_RX(2) , CAN_RX(1) -> CAN_TX(2) Nhưng hiện tại 2 modul này vẫn chưa giao tiếp được với nhau. Từ màn hình DEBUG thấy được: đã có dữ liệu trên cả 3 buffer truyền nhưng không thể truyền tiếp được, còn bên nhận thì không có data trong buffer ( dù đã cấu hình MASK để nhận tất cả các gói tin). Hiện bọn em đang bế tắc, không có cách nào test được. Proteus 7.6 không thể mô phỏng CAN, đo tín hiệu trên Oscilloscope của 2 chân CAN_RX và CAN_TX không thấy có tín hiệu truyền tin. Các cao thủ đã ai làm được giao tiếp này, hay có giải pháp nào để kiểm tra thì bày cho em với. ------------------------------------------------------------- Code là ví dụ mẫu EX_CAN_CCS_A.C của CCS và kết quả thu được là hình ảnh đính kèm |
Bọn em đã tìm ra lỗi rồi, do con MPC2551 die.
Hiện tại 2 chip đã giao tiếp với nhau tốt. |
chương trình của quocviet233
void main() { unsigned char temperature, data[8]; unsigned short init, send, dt, len, CANread; char SJW, BRP, Phase_Seg1, Phase_Seg2, Prop_Seg, txt[4]; long id, mask; TRISB = 0; TRISC = 0; TRISF = 0x04; SJW = 1; BRP = 1; Phase_Seg1 = 6; Phase_Seg2 = 7; Prop_Seg = 6; init = CAN_CONFIG_SAMPLE_THRICE & // Form value to be used CAN_CONFIG_PHSEG2_PRG_ON & // with CAN1Initialize CAN_CONFIG_XTD_MSG & CAN_CONFIG_DBL_BUFFER_ON & CAN_CONFIG_MATCH_MSG_TYPE & CAN_CONFIG_LINE_FILTER_OFF; send = CAN_TX_PRIORITY_0 & // Form value to be used CAN_TX_XTD_FRAME & // with CAN1Write CAN_TX_NO_RTR_FRAME; CAN1read = 0; CAN1SetMask(CAN_MASK_B1, mask, CAN_CONFIG_XTD_MSG); CAN1SetMask(CAN_MASK_B2, mask, CAN_CONFIG_XTD_MSG); CAN1SetFilter(CAN_FILTER_B2_F3,3,CAN_CONFIG_XTD_MS G); CAN1SetOperationMode(CAN_MODE_NORMAL, 0xFF); Lcd_Custom_Config(&PORTB, 5,4,3,2,1,0, &PORTC, 13); Lcd_Custom_Cmd(LCD_CLEAR); Lcd_Custom_Out(1,1 ,"CAN BUS"); Delay_ms(1000); for(; // Endless loop { Lcd_Custom_Cmd(LCD_CLEAR); //Clear LCD Lcd_Custom_Out(1,1, "Temp = "); // Display "Temp = " // // Send a message to Node:COLLECTOR and ask for data // data[0] = 'T'; // Data to be sent id = 500; // Identifier CAN1Write(id, data, 1, send); // send T // // Get temperature from node:COLLECT // dt = 0; while(!dt) dt = CAN1Read(&id, data, &len, &CANread); if(id == 3) { temperature = data[0]; ByteToStr(temperature,txt); // Convert to string Lcd_Custom_Out(1,8,txt); // Output to LCD Delay_ms(1000); //Wait 1 second } } } mình đưa vào microxin viết cho con PIC 18F4580 nó có báo lỗi ko dịch được phai help anh em nào thành thạo chỉ cho mình lỗi sai ở đâu ko? cám ơn trước |
PROTECH có mô phỏng được giao tiếp can dùng MCP 2551 và PIC 18F4580 ko anh em? nếu có chỉ cho mình vơi?
|
PBUS là cái gì ấy nhỉ???
Biết là các anh chị đang bàn về CAN, nhưng mà cho em hỏi một chút được không ạ?
Có ai biết cái PBUS protocol là cái gì không ạ, em thấy nó dùng trong cả truyền rs485 nhưng mà chỉ dùng 1-wire là sao ạ? Có thể dùng max485 hay SN75176 để truyền tín hiệu được không? Ai có sơ đồ về cách mắc loại này thì share cho mọi người biết với! Thanks mọi người nhiều :) |
cuối cùng thì cũng giao tiếp được hai nốt của CANBUS rùi:
|
hiển thị nhiệt độ ra LCD
|
mình đã giao tiếp thành công 3 nôt rùi : cập nhật nhiệt độ ở 2 nơi hiện thị lên LCD ; bằng CCS thấy cũng khá ổn định
|
Chào anh lop06d2. EM dang làm đề tài mạng CAN. bây giờ đang truyền nhận tín hiệu giữa hai node, mỗi node gồm pic8f4580+ mcp2551. Nhưng chưa có Soure code. Anh có không ạ. em đang cần gấp
|
lê trang CCS.info nhiều code lắm bạn tai về mà dùng từ đó phát triển lên . trong diễn đàn đó dùng googochom có cái dịch thoai mái xem
|
Mình đang tìm hiểu về giao thức CAN đọc nhiệt độ từ LM35 hiển thị ra LCD
Mình đang tìm hiểu về giao thức CAN đọc nhiệt độ từ LM35 hiển thị ra LCD
Sư huỳnh nào đã làm thành công rồi chỉ mình với. Cám ơn |
lên trang CCS.info trang diễn đàn ấy , đọc datasheet của LM35 vẽ ocat ... để tìm hiểu giao thức can trang đầu tiên của chủ đề có mà
|
hình ảnh đề tài phần led ma trận chưa viết lại code nếu có điều kiện anh em làm thêm
http://www.youtube.com/watch?v=e6pfAhRRPzE |
1 Attachment(s)
Trong file 18f4580.c có định nghĩa hàm:
void can_init(void) { can_set_mode(CAN_OP_CONFIG); //must be in config mode before params can be set can_set_baud(); curfunmode=CAN_FUN_OP_LEGACY; // RXB0CON // filthit0=0 // jtoff=0 // rxb0dben=1 buffer zero will overflow into buffer one // rxrtrro=0 // rxm1:0=0 will recive all valid IDs RXB0CON=0; RXB0CON.rxm=CAN_RX_VALID; RXB0CON.rxb0dben=CAN_USE_RX_DOUBLE_BUFFER; RXB1CON=RXB0CON; CIOCON.endrhi=CAN_ENABLE_DRIVE_HIGH; CIOCON.cancap=CAN_ENABLE_CAN_CAPTURE; CIOCON.tx2src=CAN_CANTX2_SOURCE; //added 3/30/09 for PIC18F6585/8585/6680/8680 CIOCON.tx2en=CAN_ENABLE_CANTX2; //added 3/30/09 for PIC18F6585/8585/6680/8680 can_set_id(RX0MASK, CAN_MASK_ACCEPT_ALL, CAN_USE_EXTENDED_ID); //set mask 0 can_set_id(RXFILTER0, 0, CAN_USE_EXTENDED_ID); //set filter 0 of mask 0 can_set_id(RXFILTER1, 0, CAN_USE_EXTENDED_ID); //set filter 1 of mask 0 can_set_id(RX1MASK, CAN_MASK_ACCEPT_ALL, CAN_USE_EXTENDED_ID); //set mask 1 can_set_id(RXFILTER2, 0, CAN_USE_EXTENDED_ID); //set filter 0 of mask 1 can_set_id(RXFILTER3, 0, CAN_USE_EXTENDED_ID); //set filter 1 of mask 1 can_set_id(RXFILTER4, 0, CAN_USE_EXTENDED_ID); //set filter 2 of mask 1 can_set_id(RXFILTER5, 0, CAN_USE_EXTENDED_ID); //set filter 3 of mask 1 // set dynamic filters can_set_id(RXFILTER6, 0, CAN_USE_EXTENDED_ID); can_set_id(RXFILTER7, 0, CAN_USE_EXTENDED_ID); can_set_id(RXFILTER8, 0, CAN_USE_EXTENDED_ID); can_set_id(RXFILTER9, 0, CAN_USE_EXTENDED_ID); can_set_id(RXFILTER10, 0, CAN_USE_EXTENDED_ID); can_set_id(RXFILTER11, 0, CAN_USE_EXTENDED_ID); can_set_id(RXFILTER12, 0, CAN_USE_EXTENDED_ID); can_set_id(RXFILTER13, 0, CAN_USE_EXTENDED_ID); can_set_id(RXFILTER14, 0, CAN_USE_EXTENDED_ID); can_set_id(RXFILTER15, 0, CAN_USE_EXTENDED_ID); set_tris_b((*0xF93 & 0xFB ) | 0x08); //b3 is out, b2 is in can_set_mode(CAN_OP_NORMAL); } Hàm này gọi ra hàm con là void can_set_mode(CAN_OP_MODE); Trong lần gọi đầu can_set_mode(CAN_OP_CONFIG); //must be in config mode before params can be set Thì CONFIG thành công Còn khi trả về chế độ normal: can_set_mode(CAN_OP_NORMAL); thì chương trình nhảy liên tục tại void can_set_mode(CAN_OP_MODE mode) { CANCON.reqop=mode; while( (CANSTAT.opmode) != mode ); } không thoát ra được. Khi mô phỏng với MPLAB SIM thì ra thế này: http://s1236.photobucket.com/albums/...untitled-1.jpg Nạp vào mạch thì Các ứng dụng khác vẫn chạy, chỉ không giao tiếp được Can thôi. Mong các anh chị giúp đỡ.Em xin cảm ơn |
bác Ngoducbinh1987 có thể cho em file về CAN (pic1 đo nhiệt độ bằng LM355, pic2 nhận và hiển thị lên LCD). em đang làm đồ án môn học về cái này nhưng ko hiễu rõ cho lắm
mail của em : rieckaka@gmail.com |
dang lam do an ve can ma k hieu gi ca
|
Mạng CAN
Trích:
|
lam the nao tai cai thuyet minh tot nghiep cho anh em tham khao day, trong chuong trinh mau cua CCS có mấy cái mẫu đó. mình làm giao tiếp ok.
http://www.mediafire.com/file/a4321o...h_da_sua_2.rar |
rieckaka: cái nầy dễ thôi, viết xong rùi mô phong trên protech
|
Thank's Admin nhá, bài này hay quá...
|
Xin hỏi có ai có tài liệu về giao tiếp LIN không? mình muốn tìm hiểu về LIN nhưng chưa biết bắt đầu từ đâu, rất mong được giúp đỡ.
|
Trích:
|
Chào các bác, em được giao đề tài "Giao tiếp đa vi điều khiển sử dụng chuẩn CAN", nhưng do lười nhác và ít hiểu biết về kiến thức nên mong các bác cho em ý kiến về đề tài là như nào, em cũng đã đọc qua các tài kiệu bên trên về CAN nhưng còn thấy rất mơ hồ, các bác có thể gợi ý cho em đề tài cụ thể về giao tiếp đa vi điều khiển được không ạ? Mong các bác reply!
|
Chào mọi người, tình hình là em vừa ra trường đề tài luận văn của e ngày đó là khá tốt, em sử dụng máy tính truyền RS232 xuống cho 1 Master và Master giao tiếp với 5 Slave qua I2C, nhưng do tuần vừa rồi thầy e call e và bảo e có thể đổi cái RS232 thành CAN được ko, do h e cũng đang khá bận bịu để kiếm việc, e cũng muốn giúp thầy vì thầy giúp em rất nhiều. Mong mấy a trên này tư vấn để e có thể hoàn thiện thật nhanh.
Hiện tại e cần làm 1 cái giao tiếp CAN từ PC xuống vi điều khiển (Master), giao diện truyền nhận trên máy tính có thể viết bằng Visual Studio. Bác nào có thể tư vấn : + Phần cứng e cần những j ( hiện tại là 6 con pic của em là 16f887) + Phần lập trình có tài liệu nào chỉ cách lập trình trên Visual ko, e thấy đa số toàn là lập trình cho các con Pic giao tiếp CAN với nhau. + Tài liệu tham khảo, địa chỉ mua các module lun nha E chân thành cám ơn và sẽ hậu ta. |
Hiện tại mình thấy CAN ít phổ biến ở Việt Nam, mặc dù nó được sử dụng rất nhiều. Cách đây hơn hai năm mình đã nghiên cứu và sản xuất loạt sản phẩm sử dụng CAN. Để giao tiếp với máy tính mình phải tự làm module giao tiếp vì mua sẵn của nước ngoài khá đắt. Và quan trọng hơn là không theo ý muốn mình được.
Về tài liệu tham khảo thì chỉ cần đọc thông số mạng CAN. Google có hết. Về code thì tham khảo mấy ví dụ của CCS. Nếu bạn muốn tôi có thể cung cấp cho bạn. Nhưng trong sự cho phép bởi nó đã được đưa vào sản phẩm thương mại. Thân! |
CHo hỏi IC 8pin dùng để truyền thông CAN giữa các VĐK 89x là tên gì và ở đâu bán vậy các anh em?
|
Múi giờ GMT. Hiện tại là 11:09 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam