CanBus node Sayısı

Başlatan M_B, 28 Şubat 2016, 12:44:21

OG

Alıntı yapılan: M_B - 01 Mart 2016, 09:22:21
node sayısı hakkında bilgisi olan yok mu ?

Birde Otoparklardaki sistem hakkında bilgisi olan var mı?

Otopark işinde zone lar oluşturmalısın. Zone kendine ait node lar ile haberleşir. Ana merkez de zone lar ile.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Veli B.

Alıntı yapılan: CLR - 01 Mart 2016, 11:46:32
node sayısı daha çok hardware ile alakalı, mesela 128 slave sürebilen bir driver IC kullanırsan tek can bus hattına 128 tane node bağlayabilirsin, daha fazla node sürebilen bulabilirsen daha fazla olur. Bunun sınırını soruyorsan normalde hardware can driver IC izin veriyor olsa standart ID ile 2048'e kadar node sürebilmen gerekir, 11bit olduğu için.
Extended ID kullanırsan 29bit üzerinden hesapla.

128'den fazla node lazımsa 2 veya daha fazla can bus modülü olan micro kullanman gerekir. Aslında 128  içinde 100'ü geçmezsen iyi olur.

Bu hesaplamanın bir dayanağı, daha doğrusu 11 bit ile node sayısının ilgisi var mı?

CLR

#17
Dayanağım dijital logic, teorik olarak var yani, can bus hardware tabanlıdır, 6bit counter'le 65 saydıramıyacağımıza göre 11bit 2048 kadar olması gerekir, diyorsan ben istediğim kadar node eklerim bu durumda aynı ID'leri kullanırsın ve can bus'ın rs485'ten farkı kalmaz.

Yani hardware olarak "standart ID" için 2048 ama soft olarak istediğin kadar.

Hem de önceki mesajımda da yazdığım gibi olay kaç bit olması değil, driver'ın kaç tane sürebildiği ve o kadar nodeye cevap verebilecek bir programlama ve işlemcinin can buffer'ı.   
Knowledge and Experience are Power

Erol YILMAZ

Canbus'a yeni başlayan arkadaşların genellikle aklına takılan , şu konuyu aydınlatmak istiyorum.

"Canbus'ta ID, node'a değil mesaja aittir."

Dolayısı ile "CAN 2.0A'da 11 bit id var, 2048'e kadar Node destekler mantığı" da doğru değil.

CLR

@Allegro

Bu açıklama teknik olarak havada kalmış, bu doğru değil de niçin doğru değil? Muhtemelen ne demek istediğimi tam olarak anlamadın.

Daha basit olarak
0001. kart : ID:0x001   verdik
....
2047. kart : ID:0x7FF  (11 biti doldurduk)

2048. kart : ID:0x??? ne olacak? 

0x001 verirsen 1. ve 2048. kartın ID'si aynı olur bu durumda yazılımda bu 1. karttan mı yoksa 2048. karttan mı gelmiş ekstra kod yazmak gerekir oysa can filtrelerini kullanırsan yani 11biti, gelen mesaj hangi karttan geldiğini ID'leri veya mesajları software içinde biz karşılaştırmadan can bus çözebiliyor, zaten kendisi direk ID'lere bakarak bu mesaj bana geldi, gelmedi diye maskeliyor.

Tabii 2048 uçuk değer olduğundan ve işlemcide bu kadar buffer ayırmıyorlar. Ayırabiliyorlar olsaydı 11bit için en fazla 1-2047 arası olacaktı.

Mesajın hangi karttan geldiğine, mesajın içine bakıp biz belirleyeceksek, ID list ve ID mask filtrelemeleri kullanmıyacaksak,  istediğin kadar node bağlayabilirsin, istersen hepsine aynı ID'yi verip tonlarca node bağlayabilirsin.Bu durumda 8byte mesaj ve can bus güvenirliği olan ama yazılımsal olarak rs485/422/modbus gibi çalışan bir protokole dönüşür.

Can bus'ı güvenilir ve hızlı yapan, hardware olarak gelen mesajları ID'lerine göre maskelemesi ve öncelik verebilmesi.
Knowledge and Experience are Power

ErsinErce

canbus ta cihazlara ID verilmiyor, mesajlara id veriliyor, modbus sistemindeki register adresi yani
herkes istediği adrese yazabiliyor, istediğini okuyabiliyor, global ram gibi düşünün

kartlara id vermek istiyorsanız canopen gibi platformlar kullanmalısınız.
Canopen'da da PDO,SDO gibi özellikler mesaj idler ile birleştirildiğinden yanı 11 bitlik alandan kullanılarak yapıldığından max 127 cihaza id verilebiliyor

CLR

Doğru mesajlara ID verilir ama konu kullandığımız hattaki max node sayısını bulmak ise mesajları kullanarak nodeleri tespit edebilmeliyiz ve her mesaj data olarak 0-8byte data içerebiliyor, tüm nodeler data kısmını boş bırakırsa  yani data length registerine 0 yazarsak,  başka bir deyişle yazılabilecek bir tek ID kalırsa, nodeleri tespit etmek için her birine ayrı ID vermek durumunda değil miyiz? Böyle bir can busta en fazla kaç tane node olabilir?

Bu soruya 2048'den fazla node bağlarım ve tüm nodelerin hepsini gelen boş datalı mesajlardan tespit ederim diyen varsa ben bilmiyorum, nasıl olduğunu açıklasın öğrenelim.

Data kısmı niye boş diye soranlar olabilir amaç can bus'ın hardware olarak ayırt edebileceği node/mesaj sayısını bulmak olduğu içindir. Yoksa biz node sayısını yazılımsal olarak tespit edeceksek istediğimiz kadar node ekleyebiliriz.
 
Sanırım burada hiç kimse STM32'nin can bus'ını kullanmamış, stm32'de FMI(filter mask Id) ile can bus mesajlarını veya can nodelerini(ID'ye bağlı olarak), can hardware'i çözüp önüne koyuyor. Bu durumda FMI'ya bakarak hangi node'den gelmiş veya hangi mesaj gelmiş bilebiliyorsun.   

Knowledge and Experience are Power

sadogan

MCP2551 veya benzeri için, fiziki yapının izin verdiği bir node sayısı  yokmudur?

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Veli B.

100 tane eş önem ve özelliğe sahip cihazı, 100 tane ısı kazanına ve aynı ağa bağladık ve hepsi anlık ısı ölçüyor ve 100k ile yayınlıyorlar diyelim.
2 tane işleri olsun. Isıyı 40 ile 60 derece arasında tutmak ve 100 dereceyi geçerse merkez panoya " bana gelen boruda ki doğal gazı kes" demek olsun. Aksi durumda kazan patlayacak.
Sizin dediğiniz yöntem ile kazan patlar mı?

Erol YILMAZ

Alıntı yapılan: Allegro - 02 Mart 2016, 01:18:08
Canbus'a yeni başlayan arkadaşların genellikle aklına takılan , şu konuyu aydınlatmak istiyorum.

"Canbus'ta ID, node'a değil mesaja aittir."

Dolayısı ile "CAN 2.0A'da 11 bit id var, 2048'e kadar Node destekler mantığı" da doğru değil.

Alıntı yapılan: CLR - 02 Mart 2016, 08:49:03

@Allegro
Bu açıklama teknik olarak havada kalmış, bu doğru değil de niçin doğru değil? Muhtemelen ne demek istediğimi tam olarak anlamadın.

Anlatayım hemen, Teknik olarak konunun ayakları da yere bassın.


CAN2.0A da Message ID 11 bit uzunluğunda. 2^11 = 2048
Siz bu çıkan rakamı Node ID ile ilişkilendirmeyi düşünüyorsunuz, Halbuki CANBUS bu mesaj ID'dir diyor.

CAN2.0B de Message ID 29 bit uzunluğunda. 2^29 = 536 milyon.
Siz hesabınıza göre CAN2.0B bu ID uzunluğu ile, 536 milyon Node destekliyor !!! gibi anlamsız bir yere çıkıyorsunuz.

Bu mantık doğru değil çünkü ilk düşünceden itibaren standardın "Mesaj ID" dediği alana "Node ID" yi oturtmak planı yapmışsınız :)

Bu durumda bir node'un gönderebileceği bütün veri  max 8 byte içinde sınırlı kalacak veya veri içinde tekrar "mesaj ID" mantığı kurmanız gerekecektir.

CANOPEN 11 bit ID içinde nasıl bir atraksiyon yapıyor bilmiyorum ama Bosch SAE J1939 talebi ile CAN-BUS 2.0B standardı tanımlayarak
(ID uzunluğunu 29 bit yaparak) buna benzer problemleri çözmüşler.
Amaç; kesinlikle, "11 bit Node ID sayısı yetmedi bunu artıralım" değil. Merak ediyorsanız amacın ne olduğunu ayrıca tartışalım...

Hiç 200+ node içeren bir CAN ağı oluşturdunuz / gördünüz mü ?
Oluşturduğunuzu hiç tahmin etmiyorum, hele hele 1000 li rakamlardan bahsediyorsak birşeylerin yanlış yola girdiğini Baştan hissedebilirsiniz.

tmcone

#26
CANopen protokolünde 11 bitlik ID alanı belirli bir fonksiyon ve node ID den oluşur. Örneğin,

180h + Node ID --> TPDO1
280h + Node ID --> TPDO2
200h + Node ID --> RPDO1
...
580h + Node ID --> SDO Tx
...

Slave cihazlar 1 ile 127 arasında ID alır. 0 ID si NMT master tarafından kullanılır.

J1939 da ise 29 bitlik ID, mesajın içerisinde hangi data olduğunu gösteren PGN ve 8 bitlik node ID (source address) den oluşur. Hattaki cihazlar 1 ile 253 arasında ID alabilirler.

Gerek CANopen gerekse de J1939 da aynı içerikli data (örneğin aynı iki sıcaklık sensörü hatta bağlıysa) aynı anda veri göndermeye çalışabilir. Bu durumda hangisinin önce gönderileceği node ID ye bakılarak anlaşılır. Dolayısıyla node ID tekil olmak zorundadır. Olmazsa ne olur?

@Allegro
ID alanına ister mesaj ID dersin ister node ID isterse de ikisinin birleşimi. Kendi protokolünü istediğin gibi tanımlayabilirsin. @CLR nin vurgulamak istediği başka bir şey sanırım.

Veli B.

Alıntı yapılan: tmcone - 03 Mart 2016, 08:04:51
... Dolayısıyla node ID tekil olmak zorundadır.

Genel teamüller bu yönde olsa da, özel durumlarda aynı Node ID, eşlenik 2 veya 3 cihaza verilebilir. Sadece OD nin doğru haritalanması ile kullanılabilir. Aynı id ile 3 farklı bilgi  işlenebilir.

Fakat konu bu değil. Msg.ID ile node sayısı arasında doğrudan bağlantı kurulması ve yanlış/eksik bilgi verilmesi.   

CLR

#28
Verdiğim bilgiler eksik veya yanlış değil, sadece anlatamamış olabilirim veya anlamamış olabilirsiniz.

ilk 2 mesajımda söyledim, pratikte alırsın bir can driver IC, mesela SN65HVD233, mcp2551 vs. max onun destekleği kadar noden olabilir.

Sonrasında benim bahsettiğim her ID'nin bir node olduğunu kabul ederek donanımsal can 'nin bulabileceği node sayısı, o da en fazla 2048 olabilir çünkü can'in donanımsal filtresi standart ID için 11 bit, aşağıda ki mesajda da belirtmişim, Software ile node bulacaksan istediğin kadar node ekleyebilirsin diye yazmışım, başka taraflara çekmeyelim.   

Alıntı yapılan: CLR - 01 Mart 2016, 23:20:29
Yani hardware olarak "standart ID" için 2048 ama soft olarak istediğin kadar.
Hem de önceki mesajımda da yazdığım gibi olay kaç bit olması değil, driver'ın kaç tane sürebildiği ve o kadar nodeye cevap verebilecek bir programlama ve işlemcinin can buffer'ı.   

Sanırım konu hardware dediğim kısmı anlamadığınızdan kaynaklanıyor, işlemcinin içinde can modülünden bahsediyorum, can bus'tan gelen ID'leri çözüp, 8 byte datayı alan kısımdan. ID kısmı basit olarak 11 bitlik dijital decoder gibi olduğundan çözebileceği ID sayısı, 2048'e kadar olabilir. 

@Allegro
Önyargı ile yaklaşıp okumadan cevap veriyorsun, canbus dökümanında ID'ye mesaj ID demesi birşey değiştirmez, onu istersen node Id yaparsın istersen mesaj ID yaparsın , mix yaparsın veya maskeleme ID'sinin en değerlikli  3 bitini aktif edip geriye kalan geriye kalan 8 bitinide data gibi kullanıp can busla 9 byte data taşırım, bu keyfime kalmış bişey. Varmı can bus'ta 9 byte taşımak, yok, illa istersen yaparsın. Neyi nerde kullandığı programcıya kalmıştır. Ayrıca hangi şehirdesin bilmiyorum ama hergün geçtiğin trafik ışıklarının, kendi içinde can busla haberleşen trafik sinyalizasyon kontrol cihazını, herşeyiyle ben tasarlamış olabilirim. Veya arabanı tamire götürdüğünde bazı özelliklerini açan cihazın tasarımıda bana ait olabilir. Bu nedenle burada internetten araştırma yapıp, öyle cevap yazanlarla karıştırmayalım,


Alıntı yapılan: Veli B. - 03 Mart 2016, 09:34:18
Genel teamüller bu yönde olsa da, özel durumlarda aynı Node ID, eşlenik 2 veya 3 cihaza verilebilir. Sadece OD nin doğru haritalanması ile kullanılabilir. Aynı id ile 3 farklı bilgi  işlenebilir.   

Aynı node ID'yi 2-3 cihaza verince hiç 8 byte data içeriğine bakmadan bu mesaj hangi cihazdan gelmiş diye bulabiliyor musun? Bulamıyorsan, benim anlattıklarımı tam olarak anlamadan, "CLR, standart ID ile 2048'e node kadar destekler dedi" diye düşünüp cevap vermişsin.
Knowledge and Experience are Power

Erol YILMAZ

11 bit ID var, 2048 tane NODE ID destekler fikriyatı YANLIŞ veya ÇOK EKSİK,

yakın gelecekte CANBUS tasarımları çok yaygınlaşacağından,  akılda yanlış kalmasın.

bunu savunmayanın, üstüne alınmasına da gerek yok.