Diễn Đàn Điện Tử Ứng Dụng

Forum trao đổi chia sẽ giải quyết các vấn đề liên quan đến mạch điện tử


    STM32F4 Modbus TCP Ethernet Dp83848

    Share

    Admin
    Admin

    Tổng số bài gửi : 54
    Điểm tích lũy : 111
    Đã được thích : 19
    Join date : 12/03/2015
    Age : 26
    Đến từ : Thanh Hóa - TP.HCM

    STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by Admin on 26/12/16, 04:27 pm



    Tải Thư viện tại đây:
    Đăng nhập để Tải


    Hướng Dẫn:

    bạn tải demo ethernet trong topic sau, rồi add thư viện vào :
    Đăng nhập



    port.h :

    #include "stm32f4xx_conf.h"

    #define ENTER_CRITICAL_SECTION( )   ( __disable_irq() )
    #define EXIT_CRITICAL_SECTION( )    ( __enable_irq() )

    **********************************************************
    porttcp.c bỏ hàm này:

    vMBPortEventClose(  );

    ******************************************************

    Main.c:


    /**
     ******************************************************************************
     * @file    main.c
     * @author  MCD Application Team
     * @version V1.1.0
     * @date    31-July-2013
     * @brief   Main program body
     ******************************************************************************
     * @attention
     *
     * <h2><center>&copy; COPYRIGHT 2013 STMicroelectronics</center></h2>
     *
     * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
     * You may not use this file except in compliance with the License.
     * You may obtain a copy of the License at:
     *
     *        http://www.st.com/software_license_agreement_liberty_v2
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     *
     ******************************************************************************
     */

    /* Includes ------------------------------------------------------------------*/
    #include "stm32f4x7_eth.h"
    #include "stm32f4_discovery.h"
    #include "netconf.h"
    #include "main.h"
    #include "httpd.h"
    #include "misc.h"

    /* ----------------------- Modbus includes ----------------------------------*/
    #include "mb.h"
    #include "mbtcp.h"

    /* ----------------------- Defines ------------------------------------------*/
    #define REG_INPUT_START         1000
    #define REG_INPUT_NREGS         4
    #define REG_HOLDING_START       2000
    #define REG_HOLDING_NREGS       130


    /* ----------------------- Static variables ---------------------------------*/
    static USHORT   usRegInputStart = REG_INPUT_START;
    static USHORT   usRegInputBuf[REG_INPUT_NREGS];
    static USHORT   usRegHoldingStart = REG_HOLDING_START;
    static USHORT   usRegHoldingBuf[REG_HOLDING_NREGS];


    /* Private typedef -----------------------------------------------------------*/
    /* Private define ------------------------------------------------------------*/
    #define SYSTEMTICK_PERIOD_MS  10
    static UCHAR Vendor[14] = "WVC 0.2 - dB14";

    /*--------------- LCD Messages ---------------*/
    #if defined (STM32F40XX)
    #define MESSAGE1   "    STM32F40/41x     "
    #elif defined (STM32F427X)
    #define MESSAGE1   "     STM32F427x      "
    #endif
    #define MESSAGE2   "  STM32F-4 Series   "
    #define MESSAGE3   "   Webserver Demo   "
    #define MESSAGE4   "                    "

    /* Private macro -------------------------------------------------------------*/
    /* Private variables ---------------------------------------------------------*/
    __IO uint32_t LocalTime = 0; /* this variable is used to create a time reference incremented by 10ms */
    uint32_t timingdelay;

    /* Private function prototypes -----------------------------------------------*/
    void LCD_LED_Init(void);

    /* Private functions ---------------------------------------------------------*/

    /**
     * @brief  Main program.
     * @param  None
     * @retval None
     */
    int main(void)
    {
     /*!< At this stage the microcontroller clock setting is already configured to
          168 MHz, this is done through SystemInit() function which is called from
          startup file (startup_stm32f4xx.s) before to branch to application main.
          To reconfigure the default setting of SystemInit() function, refer to
          system_stm32f4xx.c file
        */
     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

    #ifdef SERIAL_DEBUG
     DebugComPort_Init();
    #endif

     /*Initialize LCD and Leds */
     LCD_LED_Init();

     /* configure ethernet (GPIOs, clocks, MAC, DMA) */
     ETH_BSP_Config();

     /* Initilaize the LwIP stack */
     LwIP_Init();
     
     /* Http webserver Init */
     httpd_init();

     /* inicialización del Stack de Modbus */
     eMBTCPInit(0);

     /* Habilita el Stack de Modbus */
     eMBEnable();

     /*Establesco el Slave ID*/
     eMBSetSlaveID( MB_TCP_PSEUDO_ADDRESS, TRUE, Vendor, sizeof(Vendor) );

     /* Infinite loop */
     while (1)
     {  
       /* llamado periódico para ejecutar el stack modbus */
    eMBPoll();

    /* check if any packet received */
       if (ETH_CheckFrameReceived())
       {
         /* process received ethernet packet */
         LwIP_Pkt_Handle();
       }
       /* handle periodic timers for LwIP */
       LwIP_Periodic_Handle(LocalTime);



     }
    }

    /**
     * @brief  Inserts a delay time.
     * @param  nCount: number of 10ms periods to wait for.
     * @retval None
     */
    void Delay(uint32_t nCount)
    {
     /* Capture the current local time */
     timingdelay = LocalTime + nCount;  

     /* wait until the desired delay finish */
     while(timingdelay > LocalTime)
     {    
     }
    }

    /**
     * @brief  Updates the system local time
     * @param  None
     * @retval None
     */
    void Time_Update(void)
    {
     LocalTime += SYSTEMTICK_PERIOD_MS;
    }

    /**
     * @brief  Initializes the STM324xG-EVAL's LCD and LEDs resources
     * @param  None
     * @retval None
     */
    void LCD_LED_Init(void)
    {
    #ifdef USE_LCD
     /* Initialize the STM324xG-EVAL's LCD */
     STM324xG_LCD_Init();
    #endif

     /* Initialize STM324xG-EVAL's LEDs */
     STM_EVAL_LEDInit(LED1);
     STM_EVAL_LEDInit(LED2);
     STM_EVAL_LEDInit(LED3);
     STM_EVAL_LEDInit(LED4);
     
    #ifdef USE_LCD
     /* Clear the LCD */
     LCD_Clear(Black);

     /* Set the LCD Back Color */
     LCD_SetBackColor(Black);

     /* Set the LCD Text Color */
     LCD_SetTextColor(White);

     /* Display message on the LCD*/
     LCD_DisplayStringLine(Line0, (uint8_t*)MESSAGE1);
     LCD_DisplayStringLine(Line1, (uint8_t*)MESSAGE2);
     LCD_DisplayStringLine(Line2, (uint8_t*)MESSAGE3);
     LCD_DisplayStringLine(Line3, (uint8_t*)MESSAGE4);  
    #endif
    }

    #ifdef  USE_FULL_ASSERT

    /**
     * @brief  Reports the name of the source file and the source line number
     *   where the assert_param error has occurred.
     * @param  file: pointer to the source file name
     * @param  line: assert_param error line source number
     * @retval None
     */
    void assert_failed(uint8_t* file, uint32_t line)
    {
     /* User can add his own implementation to report the file name and line number,
        ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

     /* Infinite loop */
     while (1)
     {}
    }
    #endif

    eMBErrorCode
    eMBRegInputCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs )
    {
       eMBErrorCode    eStatus = MB_ENOERR;
       int             iRegIndex;

       usRegInputBuf[0] = (GPIOD->ODR & 0xF000);
       usRegInputBuf[0] = usRegInputBuf[0] >> 12;
       usRegInputBuf[1] = usRegInputBuf[0];

       if( ( usAddress >= REG_INPUT_START )
           && ( usAddress + usNRegs <= REG_INPUT_START + REG_INPUT_NREGS ) )
       {
           iRegIndex = ( int )( usAddress - usRegInputStart );
           while( usNRegs > 0 )
           {
               *pucRegBuffer++ = ( unsigned char )( usRegInputBuf[iRegIndex] >> 8 );
               *pucRegBuffer++ = ( unsigned char )( usRegInputBuf[iRegIndex] & 0xFF );
               iRegIndex++;
               usNRegs--;
           }
       }
       else
       {
           eStatus = MB_ENOREG;
       }
       return eStatus;
    }

    eMBErrorCode
    eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegisterMode eMode )
    {
       eMBErrorCode    eStatus = MB_ENOERR;
       int             iRegIndex;

       if( ( usAddress >= REG_HOLDING_START ) &&
           ( usAddress + usNRegs <= REG_HOLDING_START + REG_HOLDING_NREGS ) )
       {
           iRegIndex = ( int )( usAddress - usRegHoldingStart );
           switch ( eMode )
           {
               /* Pass current register values to the protocol stack. */
           case MB_REG_READ:
               while( usNRegs > 0 )
               {
                   *pucRegBuffer++ = ( UCHAR ) ( usRegHoldingBuf[iRegIndex] >> 8 );
                   *pucRegBuffer++ = ( UCHAR ) ( usRegHoldingBuf[iRegIndex] & 0xFF );
                   iRegIndex++;
                   usNRegs--;
               }
               break;

               /* Update current register values with new values from the
                * protocol stack. */
           case MB_REG_WRITE:
               while( usNRegs > 0 )
               {
                   usRegHoldingBuf[iRegIndex] = *pucRegBuffer++ << 8;
                   usRegHoldingBuf[iRegIndex] |= *pucRegBuffer++;
                   iRegIndex++;
                   usNRegs--;
               }
           }
       }
       else
       {
           eStatus = MB_ENOREG;
       }
       return eStatus;
    }


    eMBErrorCode
    eMBRegCoilsCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNCoils, eMBRegisterMode eMode )
    {
       return MB_ENOREG;
    }

    eMBErrorCode
    eMBRegDiscreteCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNDiscrete )
    {
       return MB_ENOREG;
    }

    /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/




    @@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@

    Lưu ý bạn StormV5 bị lỗi khi add xong thư viện nhưng không chạy (build ko có lỗi nhé), cụ thể lỗi hàm này: vprintf( szFmt, args );
    ai bị thì bỏ hàm này đi. Riêng tui không bị phát sinh 1 lỗi nào khi add, cảm ơn bạn StormV5 đã chia sẽ, ai bị lỗi nào khi add thư viện thì tiếp tục post lên để mọi người giải quyết khi gặp và mọi người giúp đỡ.


    Được sửa bởi Admin ngày 21/02/17, 02:11 pm; sửa lần 4.

    StormV5

    Tổng số bài gửi : 2
    Điểm tích lũy : 3
    Đã được thích : 1
    Join date : 26/12/2016

    chuong trinh khong hoat dong!

    Bài gửi by StormV5 on 27/12/16, 03:31 pm

    hồi trước có 1 anh khóa trước làm rồi, cũng bị y chang như mình, anh nói là do STM32f407VGT6  không có màn hình, mà trong thư viện này có 1 dòng printf ra màn hình nên chương trình bị đứng ở dòng này không chạy tiếp được,  anh xem lại giúp!   nếu được thì cho em xin cái code luôn, em về sẽ chỉnh sửa lại lỗi, hoàn thiện chương trình rồi up lên đây lại!    em moi vua hoan thanh xong code dung modbus dieu khien bong den tren stm32f4 bang Beaglebone Black, anh co muon dung thu khong?


    P/s: chính xác là đồng vprintf( szFmt, args ); làm cho chương trình không the hoat dong tiep, anh nen kiem tra lai, hi vong duoc anh PM code a cho em!

    Admin
    Admin

    Tổng số bài gửi : 54
    Điểm tích lũy : 111
    Đã được thích : 19
    Join date : 12/03/2015
    Age : 26
    Đến từ : Thanh Hóa - TP.HCM

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by Admin on 27/12/16, 07:36 pm

    StormV5 đã viết:hồi trước có 1 anh khóa trước làm rồi, cũng bị y chang như mình, anh nói là do STM32f407VGT6  không có màn hình, mà trong thư viện này có 1 dòng printf ra màn hình nên chương trình bị đứng ở dòng này không chạy tiếp được,  anh xem lại giúp!   nếu được thì cho em xin cái code luôn, em về sẽ chỉnh sửa lại lỗi, hoàn thiện chương trình rồi up lên đây lại!    em moi vua hoan thanh xong code dung modbus dieu khien bong den tren stm32f4 bang Beaglebone Black, anh co muon dung thu khong?


    P/s: chính xác là đồng   vprintf( szFmt, args );   làm cho chương trình không the hoat dong tiep,   anh nen kiem tra lai,  hi vong  duoc anh PM code a cho em!


    nếu xác định được lỗi sao bạn không thử mà kêu Anh gửi code nửa, anh không bị lỗi này và Anh nghĩ nó xuất ra màn hình hay đâu đi nửa thì sẽ không ảnh hưởng gì vì nó chỉ để quan sát. Anh rất hoan ngênh chú chia sẽ những thứ mình làm được lên diễn đàn hay đâu đó và hướng dẫn mọi người học hỏi và Anh cũng vậy , Anh chỉ làm việc với STM32F1-F4, PIC, 8051, chưa làm Beaglebone Black bao giờ nhưng ai đó sẽ cần. Anh sẽ up code khi có người thứ 2 bị lỗi như của bạn!

    Tui thấy toàn down code chạy rồi nên không thấy bàn luận để ai đó vướng phải mà sửa và cũng tăng cường kinh nghiệm xử lý code nên không post code nửa mà post thư viện, tui cũng mong học hỏi từ các bạn! hy vọng bạn xử lý được lỗi sớm và chia sẽ lỗi bạn khắc phục như thế nào. cố gắng lên bạn!

    P/s: riêng bạn tui sẽ gửi code cho bạn vào thứ 5 tuần này nếu vẫn bị lỗi, hy vọng bạn chia sẽ trên diễn đàn kinh nghiệm và kiến thức bạn có, xin cảm ơn!

    StormV5

    Tổng số bài gửi : 2
    Điểm tích lũy : 3
    Đã được thích : 1
    Join date : 26/12/2016

    chuong trinh hoat dong tot

    Bài gửi by StormV5 on 28/12/16, 01:08 pm

    example của anh em làm chạy rất ổn rồi nhưng cần thêm code mẫu để tìm hiểu thêm( hơi tham lam 1 tí ấy mak!)! Nếu anh đã làm trên Stm32f1 thì mong anh có bài về con F1 này luôn, tại em cũng đang làm về nó, code modbus em viet không những chạy được trên Beaglebone mà còn có thể chạy được trên PC hoặc Rasperry! hi vong se duoc anh chia se thong qua cac bai viet tren trang nay!

    Admin
    Admin

    Tổng số bài gửi : 54
    Điểm tích lũy : 111
    Đã được thích : 19
    Join date : 12/03/2015
    Age : 26
    Đến từ : Thanh Hóa - TP.HCM

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by Admin on 28/12/16, 07:26 pm

    StormV5 đã viết:example của anh em làm chạy rất ổn rồi nhưng cần thêm code mẫu để tìm hiểu thêm( hơi tham lam 1 tí ấy mak!)!     Nếu anh đã làm trên Stm32f1 thì mong anh có bài về con F1 này luôn, tại em cũng đang làm về nó,   code modbus em viet không những chạy được trên Beaglebone mà còn có thể chạy được trên PC hoặc Rasperry!   hi vong se duoc anh chia se thong qua cac bai viet tren trang nay!

    chào em, thư viện modbus là ngôn ngữ c nên cho phép chạy trên f1 hay f4, kIT nhúng hay tất cả MCU viết code C miễn sao thiết lập xong truyền thông TCP hay RTU cho MCU, biến tần hay PLC,... em làm cho 1 cái được thì những thứ còn lại y chang; nó rắc rối là các giao tiếp vật lý như PHY ethernet( như Anh hay dùng là DP83848 vì anh lun có sẵn module), tùy thuộc mình có hay đã từng làm; tóm lại ethernet chạy thì Modbus TCP chạy dù là MCU nào.

    P/s: F1 hỗ trợ Ethernet có F107 còn các F1 khác dùng qua SPI vẫn làm đc nhưng chậm
    giao tiếp với F107 code mạng rất nhiều include thư viện modbus như F4, Anh chỉ làm khi có thời gian và nhu cầu (nếu 100 người có nhu cầu hay trả công thì Anh viết ngay, hihi. có rất nhiều thứ cần học và nghiên cứu công nghệ mới), hướng dẫn 1 bài này thôi là mọi người tùy chọn MCU và PHY. về modbus dừng ở đây thôi vì Anh không dùng tới nó (khách mua module ETH dp83848 nói Anh nghiên cứu cái Modbus TCP đi vì vậy mới làm chơi cho vui, lên mạng thấy thư viện có sẵn đọc vài trang add phát chạy ). ai có chủ đề hay đề tài hay post lên, tui rất thích thử sức khi rảnh, công việc của tui là viết code và thiết kế mạch nên rảnh là nghiên cứu công nghệ mới.

    Hoàng Văn Lợi

    Tổng số bài gửi : 4
    Điểm tích lũy : 4
    Đã được thích : 0
    Join date : 20/02/2017

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by Hoàng Văn Lợi on 20/02/17, 04:38 pm

    Admin cho em hỏi 1 chút
    Em dùng Lwip ở chế độ socket master
    dữ liệu nhận về được lưu trong con trỏ pbuff

    Vậy cho em hỏi làm sao đẻ các hàm của Modbus biết sử dụng dữ liệu lưu ở trong pbuff vậy, thank ad!

    Admin
    Admin

    Tổng số bài gửi : 54
    Điểm tích lũy : 111
    Đã được thích : 19
    Join date : 12/03/2015
    Age : 26
    Đến từ : Thanh Hóa - TP.HCM

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by Admin on 20/02/17, 06:43 pm

    Nếu bạn muốn truyền nhận với modbus thì bạn cần quan tâm các hàm phía dưới trong main.c
    Lấy dữ liệu lưu vào buffer tương ứng của modbus nhé
    Chưa hiểu ý bạn lắm. Thân!

    Hoàng Văn Lợi

    Tổng số bài gửi : 4
    Điểm tích lũy : 4
    Đã được thích : 0
    Join date : 20/02/2017

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by Hoàng Văn Lợi on 21/02/17, 07:13 am

    Vâng, trong thư viện Lwip có con trỏ pbuf trỏ đến vùng nhớ dữ liệu nhận về theo chuẩn TCP/IP, bình thường nếu không sử dụng modbus thì em sử dụng luôn dữ liệu trong con trỏ đấy, bây giờ thêm thư viện modbus vào em không biêt là thư viện Modbus có biết tự động lấy dữ liệu trong con trỏ đấy không ?

    Admin
    Admin

    Tổng số bài gửi : 54
    Điểm tích lũy : 111
    Đã được thích : 19
    Join date : 12/03/2015
    Age : 26
    Đến từ : Thanh Hóa - TP.HCM

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by Admin on 21/02/17, 07:32 am

    Như đã nói ta phải lưu kq hoặc dữ liệu cần truyền nhận vào buffer tương ứng của các hàm modbus

    Hoàng Văn Lợi

    Tổng số bài gửi : 4
    Điểm tích lũy : 4
    Đã được thích : 0
    Join date : 20/02/2017

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by Hoàng Văn Lợi on 21/02/17, 01:50 pm

    Cho em hỏi cách lưu vào buff của modbus thế nào ạ. như trong code trên thì có dùng lệnh
      if (ETH_CheckFrameReceived())
      {
        /* process received ethernet packet */
        LwIP_Pkt_Handle();
      }

    Nhưng mà em down thư viện về thì lại không có 2 hàm ETH_CheckFrameReceived() và LwIP_Pkt_Handle(). Ad có thể cho em xin cả project của Ad được không ?


    code Ethernet ví dụ rất nhiều rồi mà lại hỏi 2 hàm trên thì cũng không tưởng được.
    vào đây xem các Demo trên STM32F4:
    Đăng nhập

    bạn tải demo ethernet trong topic sau, rồi add thư viện vào :
    Đăng nhập

    Hoàng Văn Lợi

    Tổng số bài gửi : 4
    Điểm tích lũy : 4
    Đã được thích : 0
    Join date : 20/02/2017

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by Hoàng Văn Lợi on 21/02/17, 02:14 pm

    hì. sorry ad, tại em không để ý mấy luồng bên kia, thank ad nhiều nha

    bukute122

    Tổng số bài gửi : 23
    Điểm tích lũy : 23
    Đã được thích : 0
    Join date : 28/02/2017

    hỏi ngu

    Bài gửi by bukute122 on 01/03/17, 03:51 am

    Em là người mới.đang tìm hiểu về stm32f4 + module DP83848 , anh có thể nói rỏ cho em cách mà nó truyền , nhận dữ liệu được không ạ . STM32 thu thập dữ liệu , rồi truyền vào con DP83848 , sau đó DP83848 đưa dữ liệu lên địa chỉ Ip hay là sao anh, em cũng ko biết diễn đạt đoạn này thế nào vì em không hiểu Shocked , giả sử như em có 1 sever , em muốn đưa giữ liệu từ DP83848 lên sever được không anh , Rolling Eyes Rolling Eyes , (em biết em gà rồi nên anh không cần phải nhắc lại.vì nếu em không hỏi thì càng thêm gà mà thôi ) có gì không đúng mong anh sửa và giải thích giúp em.vì em tự tìm hiểu thôi nên hiểu sai là điều đương nhiên anh à bounce bounce , à cho em hỏi thêm là module này truyền theo chuẩn Modbus TCP hã a , mà nếu là TCP thì là TCP sever hay TCP cilent vậy a, e tính mua về nghịch mà đắt quá nên tìm hiểu trước mới dám mua Smile Smile Smile

    Admin
    Admin

    Tổng số bài gửi : 54
    Điểm tích lũy : 111
    Đã được thích : 19
    Join date : 12/03/2015
    Age : 26
    Đến từ : Thanh Hóa - TP.HCM

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by Admin on 01/03/17, 03:45 pm

    bukute122 đã viết:Em là người mới.đang tìm hiểu về stm32f4 + module DP83848 , anh có thể nói rỏ cho em cách mà nó truyền , nhận dữ liệu được không ạ . STM32 thu thập dữ liệu , rồi truyền vào con DP83848 , sau đó DP83848 đưa dữ liệu lên địa chỉ Ip hay là sao anh, em cũng ko biết diễn đạt đoạn này thế nào vì em không hiểu Shocked , giả sử như em có 1 sever , em muốn đưa giữ liệu từ DP83848 lên sever được không anh , Rolling Eyes Rolling Eyes , (em biết em gà rồi nên anh không cần phải nhắc lại.vì nếu em không hỏi thì càng thêm gà mà thôi ) có gì không đúng mong anh sửa và giải thích giúp em.vì em tự tìm hiểu thôi nên hiểu sai là điều đương nhiên anh à bounce bounce , à cho em hỏi thêm là module này truyền theo chuẩn Modbus TCP hã a , mà nếu là TCP thì là TCP sever hay TCP cilent vậy a, e tính mua về nghịch mà đắt quá nên tìm hiểu trước mới dám mua Smile Smile Smile

    em muốn đưa Dữ liệu từ DP83848 lên sever thì bo F4 là Client( trong Forum có vd truyền lên server thingspeak).

    Bo DP83848  này  là dùng để giao tiếp ETHERNET cho MCU.

    Modbus TCP là mình làm giao tiếp Modbus trên đường Ethernet với TCP như vậy tốc cao hơn.
    nếu ở TPHCM thì tới ĐH SPKT tui sẽ chỉ bạn thêm hoặc cứ tìm hiểu thác mắc hỏi trên này.

    bukute122

    Tổng số bài gửi : 23
    Điểm tích lũy : 23
    Đã được thích : 0
    Join date : 28/02/2017

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by bukute122 on 01/03/17, 06:00 pm

    ok em cám ơn anh rất nhiều.em là sinh viên Nông lâm cũng ở gần chổ anh.em sẽ tìm hiểu kỹ hơn.nếu có gì không hiểu mong anh giúp đỡ.à cho em hỏi thêm là bên anh có bán module PD83848 luôn phải không anh. Very Happy Very Happy

    Admin
    Admin

    Tổng số bài gửi : 54
    Điểm tích lũy : 111
    Đã được thích : 19
    Join date : 12/03/2015
    Age : 26
    Đến từ : Thanh Hóa - TP.HCM

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by Admin on 01/03/17, 08:03 pm

    Có bán module dp83848 và hỗ trợ giao tiếp, code, có test lại module khi giao hàng. Bạn có thể kéo lên đầu trang có mục sản phẩm để tìm module ethernet cũng như các module khác.

    bukute122

    Tổng số bài gửi : 23
    Điểm tích lũy : 23
    Đã được thích : 0
    Join date : 28/02/2017

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by bukute122 on 14/03/17, 12:59 am

    anh ơi.em nối theo sơ đồ khối này và là tương đương với điều khiển theo kiểu MII phải ko a



    còn nếu RMII thì nối như vậy hã a
    ETH_MDIO --------------> PA2
           ETH_MDC ---------------> PC1
       
           ETH_RMII_REF_CLK-------> PA1

           ETH_RMII_CRS_DV -------> PA7
    ETH_MII_RX_ER   -------> PB10
           ETH_RMII_RXD0   -------> PC4
           ETH_RMII_RXD1   -------> PC5
           ETH_RMII_TX_EN  -------> PB11
           ETH_RMII_TXD0   -------> PB12
           ETH_RMII_TXD1   -------> PB13

           ETH_RST_PIN     -------> PE2
    ( cái này e lấy trong code )
    cho e hỏi thêm là e có thể add thêm HAL driver để sử dụng ko a.tại trước giờ e hay sài bằng STM32CUBE , mà STM32CUBE nó xuất ra cho thư viện HAL (sài HAL quen rồi ), còn cái demo này thì nó sử dụng thư viện Standard Peripheral, e hỏi xem có cách nào sử dụng 1 lúc 2 thằng đc ko. nếu ko đc cũng ko sao.e mò luôn cái mới rabbit rabbit

    Admin
    Admin

    Tổng số bài gửi : 54
    Điểm tích lũy : 111
    Đã được thích : 19
    Join date : 12/03/2015
    Age : 26
    Đến từ : Thanh Hóa - TP.HCM

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by Admin on 14/03/17, 06:36 am

    Bạn nối RMII nhé, nối hết chân theo MII thì vẫn chạy nhưng nhiều dây và dư. Anh lại sài thư viện cũ quen rồi, chỉnh code này theo Hal mà dùng nhé.

    bukute122

    Tổng số bài gửi : 23
    Điểm tích lũy : 23
    Đã được thích : 0
    Join date : 28/02/2017

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by bukute122 on 14/03/17, 12:39 pm

    ok thank a đã thông não Laughing Laughing

    bukute122

    Tổng số bài gửi : 23
    Điểm tích lũy : 23
    Đã được thích : 0
    Join date : 28/02/2017

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by bukute122 on 19/03/17, 01:10 am

    anh ơi cho em hỏi xíu.cái địa chỉ IP ở code có phải là địa chỉ IP tĩnh của sợi dây cáp mạng mà mình cắm vào module không a hay là mình gáng giá trị ip đó cho module. làm hoài mà nó không nhận được.ko biết sai ở đoạn nào luôn. ( em cắm dây lan vào máy tính rồi kiểm tra IP của sợi dây đó. sau đó em sửa địa chỉ IP của code thành địa chỉ Ip của sợi dây đó ) mình có cần thao tác gì trên 192.168.1.1 không a . giúp em với ạ . e cám ơn a pale pale pale

    vtrinh93

    Tổng số bài gửi : 2
    Điểm tích lũy : 2
    Đã được thích : 0
    Join date : 06/03/2017

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by vtrinh93 on 20/03/17, 04:55 pm

    IP trong code là IP của Module, bạn đặt IP của Module phải cùng lớp với Mạng local bạn đang sử dụng nhé Smile Smile Smile

    bukute122

    Tổng số bài gửi : 23
    Điểm tích lũy : 23
    Đã được thích : 0
    Join date : 28/02/2017

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by bukute122 on 21/03/17, 03:08 am

    EM BUID NÓ BÁO 161 CÁI WARNING LÀ BỊ GÌ VẬY A Shocked


    vtrinh93

    Tổng số bài gửi : 2
    Điểm tích lũy : 2
    Đã được thích : 0
    Join date : 06/03/2017

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by vtrinh93 on 21/03/17, 08:44 am

    Warning là cảnh báo thôi, có thể do có một số biến khai báo mà chưa được sử dụng,... bạn buid ra file hex rồi nạp vô chạy thử. Surprised Surprised Surprised

    Admin
    Admin

    Tổng số bài gửi : 54
    Điểm tích lũy : 111
    Đã được thích : 19
    Join date : 12/03/2015
    Age : 26
    Đến từ : Thanh Hóa - TP.HCM

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by Admin on 21/03/17, 08:39 pm

    bukute122 đã viết:anh ơi cho em hỏi xíu.cái địa chỉ IP ở code có phải là địa chỉ IP tĩnh của sợi dây cáp mạng mà mình cắm vào module không a hay là mình gáng giá trị ip đó cho module. làm hoài mà nó không nhận được.ko biết sai ở đoạn nào luôn. ( em cắm dây lan vào máy tính rồi kiểm tra IP của sợi dây đó. sau đó em sửa địa chỉ IP của code thành địa chỉ Ip của sợi dây đó ) mình có cần thao tác gì trên 192.168.1.1 không a . giúp em với ạ . e cám ơn a pale pale pale


    Em có thể mang máy + Module qua gặp Anh hỗ trợ cho lẹ,mấy thứ cơ bản này mấy phút là xong, nhưng viết thì khó diễn tả, qua xem anh làm 1 phát là biết. hiện Anh đang rất lu bu 1 số dự án nên không vào diễn đàn thường xuyên được, cũng không hiểu sao khi có người trả lời topic thì Anh sẽ nhận được 1 email ngay, lúc rảnh Anh vào trả lời nhưng mấy hôm nay không nhận được , chưa có thời gian kiểm tra lại, xin lỗi nhé. mà em nên hỏi trong1 topic có liên quan nhất cho dễ theo dõi.

    Cảm ơn vtrinh93 vì sự chia sẽ của bạn,tôi hy vong mọi người sẽ giống bạn.

    vanpho86

    Tổng số bài gửi : 1
    Điểm tích lũy : 1
    Đã được thích : 0
    Join date : 21/05/2017

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by vanpho86 on 06/06/17, 09:26 pm

    AD cho mình hỏi sao slave ID nào cũng nhận được hết vậy

    Admin
    Admin

    Tổng số bài gửi : 54
    Điểm tích lũy : 111
    Đã được thích : 19
    Join date : 12/03/2015
    Age : 26
    Đến từ : Thanh Hóa - TP.HCM

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by Admin on 07/06/17, 07:40 am

    AD cho mình hỏi sao slave ID nào cũng nhận được hết vậy

    ID nào khai báo thì mới có, nên khai báo đúng số ID cần thiết thôi. Và đúng ID thì nó mới nhận chứ.

    Sponsored content

    Re: STM32F4 Modbus TCP Ethernet Dp83848

    Bài gửi by Sponsored content


      Hôm nay: 21/09/17, 08:59 pm