Arkadaşlar iyi günler ccs c ile modbus örneği yapan var mıdır?Ccs in kendi modbus kütüphanesi kullanarak 2 pici haberleştirdim ama tek pic ile aynı kodu kullanarak modbus kullanan bir sensörü haberleştiremedim sıkıntı nedir acaba?Ayrıca pici slave ayarlayıp Modbus poll programından okuma da yapamadım.Sebebi ne olabilir?
Pic Master-Sensör haberleşme Kodu:
#include <18F67K22.h>
#use delay(internal=8000000)
#FUSES NOWDT
#FUSES WDT128
#FUSES NOXINST
#FUSES NOBROWNOUT
#FUSES PROTECT
#pragma use rs232(baud=9600, xmit=PIN_G1, rcv=PIN_G2, stream=diger, errors)
#define MODBUS_TYPE MODBUS_TYPE_MASTER
#define MODBUS_SERIAL_TYPE MODBUS_RTU
#define MODBUS_SERIAL_RX_BUFFER_SIZE 64
#define MODBUS_SERIAL_BAUD 9600
#define MODBUS_SERIAL_INT_SOURCE MODBUS_INT_RDA
#define MODBUS_SERIAL_TX_PIN PIN_C6 // Data transmit pin
#define MODBUS_SERIAL_RX_PIN PIN_C7 // Data receive pin
#define MODBUS_SERIAL_ENABLE_PIN PIN_C5 // DE pin for RS485
#define MODBUS_SERIAL_RX_ENABLE 0 // RE pin for RS485
#include <modbus.c>
void main()
{
modbus_init();
while(TRUE)
{
if(!(modbus_read_holding_registers(0x01,2,1)))
{
unsigned int8 veri0,veri1,veri2,veri3,veri4,veri5,veri6,veri7;
veri0=modbus_rx.data
[li];[/li]
veri1=modbus_rx.data[1];
veri2=modbus_rx.data[2];
veri3=modbus_rx.data[3];
veri4=modbus_rx.data[4];
veri5=modbus_rx.data[5];
veri6=modbus_rx.data[6];
veri7=modbus_rx.data[7];
fprintf(diger,"%lu %lu %lu %lu %lu %lu %lu %lu\n",(unsigned int16)veri0,(unsigned int16)veri1,(unsigned int16)veri2,(unsigned int16)veri3,(unsigned int16)veri4,(unsigned int16)veri5,(unsigned int16)veri6,(unsigned int16)veri7);
delay_ms(100);
}
else{
fprintf(diger,"Cevap yok!!!\n");
delay_ms(1000);
}
}
}
çalışan bir örnek varmıdır
iletişimin hızı tutmuyor olabilir cihaz id si tutmuyor olabilir
Slave adresini tanımlamamışsınız sanırım
https://github.com/worrajak/PICmodbus
buna bakabilirmisiniz
derleyip duzenleyebilirmisiniz
Abi çok teşekkür ederim paylaştığın döküman için böyle dökümanları bulmak çok zor kimse paylaşmıyor sana teşekkür etmek için form'a üye oldum, picprojeyede ayrıca teşekkürler.