你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】基于STM32F103标准库、rt-thread操作系统完美移植freemodbus主机程序

[复制链接]
STMCU小助手 发布时间:2022-4-21 21:00
一、说明; L7 o/ I8 E+ b8 z, {& M& j4 }
1.移植的开发环境是keil5。0 e1 A2 X9 d4 }+ M( ?
2.基于rt-thread操作系统,也可以使用ucos和freeRTOS操作系统。* N* j8 j+ u& f. ?: r, P2 \- `
3.本人可有偿代移植其他操作系统,具体费用主页加我QQ联系。
6 `6 A2 w# b- K2 p( L4.页面底部有rt-thread操作系统移植成功的工程链接,大家可以参考。
% T3 z/ g7 o4 [1 |) S二、移植步骤2 C" {4 l" V  A- _! G2 U+ A
由于移植过程比较繁琐,就不过多说明了,大家可以下载工程研究一下就行+ L( T2 ]5 i: g$ v) @( }" K

5 E3 P$ t: T0 U1 X8 R/ N" L三、特殊说明
  ^8 A$ t. U5 |1. 读取输入寄存器(功能04)
2 p$ V- o+ e% p0 s4 N) p使用函数:
  1. /**
    $ b$ C, \# l, n! O* e
  2. * Modbus master input register callback function.7 q1 N6 ?/ y/ g  U6 m" w  o1 @* `
  3. *$ f) ?; |. `( r# X
  4. * @param pucRegBuffer input register buffer7 _0 S, @, G; }# c" V/ L
  5. * @param usAddress input register address( A0 [4 a! F# F9 ^. c- N
  6. * @param usNRegs input register number
    . k$ C$ K0 @2 }& O8 R( w/ v- a
  7. *9 [. U* Q8 {( d) t
  8. * @return result
    + v2 C' U: s4 X+ i2 p+ Q
  9. */
    6 m" W$ E4 o) w' W! X8 T
  10. eMBErrorCode eMBMasterRegInputCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs )
复制代码

  U/ ^6 E+ x$ @" L! z* ]读取值存入变量:
9 _3 ^4 o( `: g, {/ \
. @" [- T$ B" T2 _
  1. USHORT   usMRegInBuf[MB_MASTER_TOTAL_SLAVE_NUM][M_REG_INPUT_NREGS];
复制代码
! S& G8 ]& m5 N. F+ N( e( Y
2. 读取线圈(功能01)
& N/ \; f% }+ Y. m  h使用函数:5 ~9 Z9 S, o4 C8 T) n" n9 W+ y
1 |7 Y1 S# ~( B* I
  1. /**9 M1 O0 L8 ?; b/ m
  2. * Modbus master coils callback function.' O* i' B: v3 B0 v! U
  3. *; ?* H$ ^; A' z
  4. * @param pucRegBuffer coils buffer
    8 A4 R8 P" C; U5 K: v1 L
  5. * @param usAddress coils address
    ' r& u* h2 K4 s( G, n. O
  6. * @param usNCoils coils number
      ^; d4 b; [/ Z  y, W. a2 F* v- r9 Z
  7. * @param eMode read or write
    8 E' k9 y$ u5 p- h
  8. *
      a; W" g6 J% F9 u2 Y" U
  9. * @return result
    + o! k! v4 A6 ?8 ~" v: `' K
  10. */
    ( B, ?0 t( Q+ w
  11. eMBErrorCode eMBMasterRegCoilsCB(UCHAR * pucRegBuffer, USHORT usAddress,
    2 ]2 A3 _6 d$ t  S+ h' K
  12.         USHORT usNCoils, eMBRegisterMode eMode)
复制代码
% a1 w# \# j* L2 n
读取值存入变量:7 S+ S8 i4 e& J. ~* q

9 O* j. ^! J0 A4 y
  1. ucMCoilBuf[MB_MASTER_TOTAL_SLAVE_NUM][M_COIL_NCOILS/8+1];
复制代码

+ ~, y" G. `: k3.读取保持寄存器(功能03)
, @( O6 K9 |* w: O) U% j+ F使用函数:
3 H# C2 w) h' ^! b. ~2 n6 x& ?; ^+ y. R8 F& m3 Q
  1. /*** m* C/ Y- [! z8 h( @: P8 ]( K
  2. * Modbus master holding register callback function.( q  P8 Q& b- K) I- H; L' _) @
  3. *
    / b. @& n6 W  X2 f. k9 \
  4. * @param pucRegBuffer holding register buffer
    1 d" Z" H% ]3 }
  5. * @param usAddress holding register address. e4 {1 |9 ?5 n
  6. * @param usNRegs holding register number
    , ]$ |! L4 J/ I- @* R- G' N( g+ p
  7. * @param eMode read or write! _# @: e2 P8 j% K
  8. *
    ) Y+ S* r9 c6 F( f* b
  9. * @return result
    ' t% j1 l# j! [  K3 [1 }& U
  10. */( _: w! ^4 @3 ?! l
  11. eMBErrorCode eMBMasterRegHoldingCB(UCHAR * pucRegBuffer, USHORT usAddress,9 o$ O; i6 {( D& D6 a- _
  12.         USHORT usNRegs, eMBRegisterMode eMode)
复制代码

1 i- g0 \9 Z; n/ t读取值存入变量:
( d% ]7 H) d5 i) W0 U1 ~
+ m3 r) I' z* J# T0 }6 Q$ u5 M
  1. USHORT   usMRegHoldBuf[MB_MASTER_TOTAL_SLAVE_NUM][M_REG_HOLDING_NREGS];
复制代码

; C+ n6 V! O1 _/ F& d* ]( x四、相关宏定义的设置9 ~/ m* \# ]5 T+ R. G& {1 M% E
在 user_mb_app_m.c文件中,对离散量接收缓冲器 ucMDiscInBuf、线圈接收缓冲器 ucMCoilBuf、输入寄存器接收缓冲器 usMRegInBuf、保持寄存器接收缓冲器 usMRegHoldBuf的大小进行了定义。定义的缓冲区大小取决于对于下列宏的定义:- T" k6 l) \  ]& e9 ]6 l
mbconfig.h 从机数量 MB_MASTER_TOTAL_SLAVE_NUM
9 [! J) O+ ~. a7 p4 Y: Duser_mb_app.h 中:
; U/ ^6 \/ E' T: j8 t#define RT_M_DISCRETE_INPUT_START 0 //离散量起始地址& z8 l6 X( m# U$ ]) v& n5 a
#define RT_M_DISCRETE_INPUT_NDISCRETES 16 //离散量数量
) [4 U! l- @0 \( P( o#define RT_M_COIL_START 0 //线圈起始地址4 R) W* O4 e- _2 y
#define RT_M_COIL_NCOILS 64 //线圈数量
$ x* X$ Q" o2 t3 N  o$ i#define RT_M_REG_INPUT_START 0 //输入寄存器起始地址. X7 [% F1 M6 q6 n7 e+ N6 t5 E
#define RT_M_REG_INPUT_NREGS 100 //输入寄存器数量
* S! g' a  m5 J9 Q#define RT_M_REG_HOLDING_START 0 //保持寄存器起始地址
% w; v- O# x, s! ]+ L2 o: |2 l#define RT_M_REG_HOLDING_NREGS 100 //保持寄存器数量
) ~/ `" S* H2 l- f
# y  A9 {  E8 }3 {5 C( l) @/ V$ }- e4 V3 K  w- @# D
( N, {" X2 ^( M
赞 收藏 评论0 发布时间:2022-4-21 21:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版