Profibus Slave Protokol Uygulaması

Başlatan alper06, 29 Nisan 2012, 00:58:13

alper06

Merhabalar,

Zamanında vakit bol para çokken profibus sistemlere merak sarmıştım.

Uzun uğraşlar, harcanan bir ton para, alınan birçok ekipman sonrası kendi profibus slave modulumu yapabilmiştim.
Hemde kart başı maliyetim öyle yüzlere € değil, 15€ civarındaydı. Icındeki gömülü yazılımdan tutun da GSD file' a kadar kendim yazmıştım.
Bu iş 4 ay kadar vaktimi almıştı.

Daha sonra zaman yokluğundan ilgilenemedim.

Bu işe heveslenen yada çalışmış arkadaşlar var ise tanışmak bilgileri paylaşmak isterim. 

camby

Merhaba,
ben de modbus slave cihazımı yeni tamamladım sayılır. Şimdi profibus slave yapmak istiyorum.

Bunun için nasıl bir yol izlemek gerekir ,biliyorsanız eğer  modbus'tan farkları nelerdir ? Ana hatlarıyla tarif yapabilirseniz çok yararlı olur.

İyi çalışmalar

cetinkaya

Camby hocam modbus hakkında biraz bilgi verebilirmisiniz modbus üzeri iletişim Kuran cihazlardan gelen bilgileri nasıl bilgisayarda gösterebilirim ?

alper06

Alıntı yapılan: rck8942 - 29 Nisan 2012, 19:07:57
Camby hocam modbus hakkında biraz bilgi verebilirmisiniz modbus üzeri iletişim Kuran cihazlardan gelen bilgileri nasıl bilgisayarda gösterebilirim ?

Hocam profibus ile ilgilenenleri burada topluyoruz ama lütfen kaynak yapmayalım :)

alper06

Alıntı yapılan: camby - 29 Nisan 2012, 10:25:19
Merhaba,
ben de modbus slave cihazımı yeni tamamladım sayılır. Şimdi profibus slave yapmak istiyorum.

Bunun için nasıl bir yol izlemek gerekir ,biliyorsanız eğer  modbus'tan farkları nelerdir ? Ana hatlarıyla tarif yapabilirseniz çok yararlı olur.

İyi çalışmalar

Camby hocam. Biraz bekleyelim. İlginenen arkadaşlar gelsin. Beraber çalışırız.

camby

@alperodabaşı
Beklemedeyim : )

@rck

Öncelikle modbus ile ilgili başlıklara bakın ( ben de öle başlamıştım ) daha sonra isterseniz başka bir başlıkta yardım edebilirim.

serdararikan

şuan bende modbus RTU ile uğraşıyorum fakat mcu nun response si nin hatalı olduğu mesajını alıyorum.birkaç program ile CRC hesaplattım.benim porgramın hesapladığı CRC ile aynı değer çıktı.sizin kullandığınız CRC kodunu paylaşmanız mümkünmü?

bit  CRC16(unsigned int dataLength,char check)
{
	unsigned int CheckSum;
	unsigned char lowCRC;
	unsigned char highCRC;
	
	CheckSum = 0xffff;
	for(unsigned int j=0;j<dataLength;j++)
	{
		CheckSum = CheckSum^(unsigned int)buffer[j];
		for(unsigned char i=8;i>0;i--)
		{
			if((CheckSum)&0x0001)	CheckSum = (CheckSum>>1)^0xa001;
			else					CheckSum>>=1;
		}
	}
	highCRC = CheckSum>>8;
	CheckSum<<=8;
	lowCRC = CheckSum>>8;
	if(check==1)
	{
		if ( (buffer[dataLength+1] == highCRC) & (buffer[dataLength] == lowCRC ))
			return 1;
		else
			return 0;
	}
	else
	{
		buffer[dataLength] = lowCRC;
		buffer[dataLength+1] = highCRC;
		return 1;
	}
}


benim kod bu.

frederic

Endüstriyel iletişim protokolleri hakkında tecrübem var fakat profibus uygulaması hiç yapmamıştım,bu konuya bende dahil olmak isterim.

94220039

Profibus Slave Banada lazım. Herbir slave için bedeli karşılığında satın alabilirim.

frederic

#9
Sessiz kaldınız bu konuya Alper Bey gerekli katılımın sağlandığı kanaatindeyim,vazmıgeçtiniz acaba paylaşımdan ?

Ayrıca bu konu profibus konusu modbus değil,neden konu dışı bir protokolü burda konuşuyorsunuz anlamıyorum,ayrı bir başlık için modbus orda konuşulsun.

camby

Alper hocam ne zaman başlıyoruz : ) ?

Yanında profinet'e de bakabiliriz aslında..

frederic

Valla yıl geçti camby hocam hala ses seda yok  :)

camby

İhtiyaç olmadıkça yoğunluğun arasında unutulup gidiyor.

Şimdi de ihtiyaç : )

Şu I/O chiplerden getirtip direk atlıcam işin içine gibi : D

Okan AKÇA

modbus holding register okuma icin yazdıgım kod

if(modbus_buffer[1]==0x03) //fonksiyon dogrulaması
     {
       data_uzunlugu=modbus_buffer[0x05];
       
       modbus_buffer[0]=modbus_adres;
       modbus_buffer[1]=0x03;
       modbus_buffer[2]=data_uzunlugu*2;
     
       
 
    int8 k=3;
     
       data_adresi=modbus_buffer[3];
        //i=i+1;
       data_uzunlugu+=data_adresi;
     for(data_adresi;data_adresi<data_uzunlugu;data_adresi++)
        {
         modbus_buffer[k]=holding_register[data_adresi]>>8; k++;
         modbus_buffer[k]=holding_register[data_adresi];    k++;
        }
        data_uzunlugu=modbus_buffer[2]+3;
        crc=CRC16(modbus_buffer,data_uzunlugu);
       for(data_adresi=0;data_adresi<data_uzunlugu;data_adresi++) putc(modbus_buffer[data_adresi]);
        putc(crc>>8);
        putc(crc);
     
     
     
      }

camby

@cyclone,  Hocam bunu niye yazdın buraya şimdi : )