MODBUS RTU ex_modbus_slave.c dosyasını çalıştıramıyorum.

Başlatan kcanfi, 18 Aralık 2018, 15:24:20

kcanfi

Öncelikle herkese merhaba, MODBUS protokolünü kullanarak SLAVE olan piclerden bilgi okumak istiyorum. Aslında float değerlerini okuyup HMI ekranda ya da PC'de görüntülemek istiyorum. (Holding Registers tarafıyla yapıyoruz sanırım bunu yanlışsa düzeltin :)) CCS'in kendi ex_modbus_slave.c dosyasını derleyip Proteusta simüle etmeye çalıştım ve proteus tarafından modbus poll ile veri almaya çalıştım ama başarılı olamadım. Öncelikle Proteus tarafında RX pinine modbus poll'un READ HOLD REGISTERS talebi geliyor fakat PIC tarafından bir geri dönüş göremiyorum. KOD, ŞEMA ve MODBUS POLL ekran görüntüleri aşağıdadır inceleyip geri dönüş yaparsanız, yol gösterirseniz sevinirim.

#if defined(__PCD__)
#include <24FJ128GA006.h>
#fuses PR,HS,NOWDT
#use delay(clock=20M)
#elif defined(__PCH__)
#include <18f6722.h>
#fuses HS, NOWDT
#use delay(clock=20M)
#else
#include <16F887.h>
#fuses HS,NOWDT
#use delay(clock=20M)
#endif

#define MODBUS_TYPE MODBUS_TYPE_SLAVE
#define MODBUS_SERIAL_TYPE MODBUS_RTU     //use MODBUS_ASCII for ASCII mode
#define MODBUS_SERIAL_RX_BUFFER_SIZE 64
#define MODBUS_SERIAL_BAUD 9600

#ifndef USE_WITH_PC
#define MODBUS_SERIAL_INT_SOURCE MODBUS_INT_EXT
#if defined(__PCD__)
#define MODBUS_SERIAL_TX_PIN PIN_D8   // Data transmit pin
#define MODBUS_SERIAL_RX_PIN PIN_F6   // Data receive pin
//The following should be defined for RS485 communication
//#define MODBUS_SERIAL_ENABLE_PIN   0   // Controls DE pin for RS485
//#define MODBUS_SERIAL_RX_ENABLE    0   // Controls RE pin for RS485
#else
#define MODBUS_SERIAL_TX_PIN PIN_B1   // Data transmit pin
#define MODBUS_SERIAL_RX_PIN PIN_B0   // Data receive pin
//The following should be defined for RS485 communication
//#define MODBUS_SERIAL_ENABLE_PIN   0   // Controls DE pin for RS485
//#define MODBUS_SERIAL_RX_ENABLE    0   // Controls RE pin for RS485
#endif
#else
#define MODBUS_SERIAL_INT_SOURCE MODBUS_INT_RDA
#endif

#include <modbus.c>

#define MODBUS_ADDRESS 0xF7
!!! KOD PIC C EXAMPLES tarafında bulunan ex_modbus_slave.c kodudur. !!!


Modbus Poll ile sürekli "TIMEOUT ERROR" hatası almaktayım.


Devre budur.
Şimdiden Teşekkürler!