关联接口函数与libmodbus移植-RZMPU工业控制教程连载(42)

瑞萨MCU小百科 2024-12-30 12:02

11.3.7 RTU/TCP关联接口函数

在文件modbus.h的最后位置,有如下语句

#include "modbus-tcp.h"#include "modbus-rtu.h"


可以发现,除了modbus.h包含的接口函数之外,modbus-rtu.h和modbus-tcp.h也包含了必要的接口函数。


1. RTU模式关联函数

MODBUS_API modbus_t * modbus_new_rtu(const char * device,int baud,char parity,int data_bit,int stop_bit):


此函数的功能是创建一个RTU类型的modbus_t结构体。参数constchar * device代表串口字符串,在Windows操作系统下形态如“COMx”,有一点需要注意的是,对于串口1串口9来说,传递“COM1”“COM9”可以成功,但是如果操作对象为COM10及以上端口,则会出现错误。


产生这种奇怪现象的原因是:微软预定义的标准设备中 含有“COM1”~“COM9”。所以,“COM1”~“COM9”作为文件名传递给函数时操作系统会自动地将之解析为相应的设备。但对于COM10及以上的串口,“COM10”之类的文件名系统只视之为 一般意义上的文件,而非串行设备。为了增加对COM10及以上串行端口的支持,微软规定,如果要访问这样的设备,应使用这样的文件名(以COM10 为例):\\.\ COM10。


所以,使用时在代码中可以如此定义:

const char * device = “\\\\.\\COM10”;


在Linux操作系统下可以使用“/dev/ttySo”或“/dev/ttyUSB0”等形式的字符串来表示。而参数int baud表示串口波特率的设置值,例如:9600、19200、57600、115200等。


参数char parity表示奇偶校验位,取值范围:

①‘N’:无奇偶校验;

②‘E’:偶校验;

③‘O’:奇校验。


参数int data_bit表示数据位的长度,取值范围为5、6、7和8。


参数int stop_bit表示停止位长度,取值范围为1或2。


用法举例:

左右滑动查看完整内容

modbus t *ctx;ctx=modbus_new_rtu("\\\\.\\COM10",115200,'N',8,1);if (ctx ==NULL){ fprintf(stderr,"Unable to create the libmodbus context\n"); return -1; }modbus_set_slave(ctx,SLAVE_DEVICE_ID);if (modbus connect(ctx)==-1){ fprintf(stderr,"Connection failed:%s\n",modbus_strerror(errno)); modbus_free(ctx); return -1;}


MODBUS_API int modbus_rtu_set_serial_mode (modbus_t * ctx,int mode):


该函数用于设置串口为MODBUS RTU RS232或MODBUSRTU_RS485模式,此函数只适用于Linux操作系统下。

左右滑动查看完整内容

MODBUS_API int modbus_rtu_set_rts (modbus_t * ctx, int mode)MODBUS_API int modbus_rtu_set_custom_rts (modbus_t * ctx, void ( * set_rts) (modbus_t * ctx, int on))MODBUS_API int modbus_rtu_set_rts_delay (modbus_t * ctx, int us)


以上函数只适用于Linux操作系统下,RTS即Request ToSend的缩写,具体的意义可通过网络搜索,一般情况下,此类函数可忽略。


2. TCP模式关联函数

左右滑动查看完整内容

MODBUS_API modbus_t * modbus_new_tcp (const char *ip_address, int port)

此函数的功能是创建一个TCP/IPv4类型的modbus_t结构体。


参数const char * ip_address为IP地址,port表示远端设备的端口号。

左右滑动查看完整内容

MODBUS_API int modbus_tcp_listen (modbus_t * ctx, int nb_connection)


此函数创建并监听一个TCP/IPv4上的套接字。


参数int nb_connection代表最大的监听数量,在调用此函数之前,必须首先调用modbus_new_tcp()创建 modbus_t结构体。


MODBUS_API int modbus_tcp_accept(modbus_t * ctx,int * s)。


此函数接收一个TCP/IPv4类型的连接请求,如果成功将进入数据接收状态。



11.4 libmodbus移植


本节源码位于如下目录:


11.4.1 编译安装

libmodbus原生就支持Linux,所以不存在移植难度。


如下操作即可编译libmodbus:

左右滑动查看完整内容

$ source /opt/remi-sdk/environment-setup-aarch64-poky-linux$ tar xzf libmodbus-3.1.10.tar.gz$ cd libmodbus-3.1.10/$ ./autogen.sh$ ./configure --prefix=$PWD/tmp --host=aarch64-poky-linux CFLAGS="-mtune=cortex-a55 -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/opt/remi-sdk/sysroots/aarch64-poky-linux"$ make$ make install$ ls tmp/include lib share
// 复制到工具链里$ sudo cp -rf tmp/include/* /opt/remi-sdk/sysroots/aarch64-poky-linux/usr/include/$ sudo cp -rfd tmp/lib/* /opt/remi-sdk/sysroots/aarch64-poky-linux/usr/lib64/$ ls tests/.libs/bandwidth-client bandwidth-server-one random-test-server unit-test-serverbandwidth-server-many-up random-test-client unit-test-client version


在“tmp/include”目录下生成了有文件,在“tmp/lib”目录下生成了库文件。在“tests/.libs/”目录下生成了测试程序“unit-test-server”、“unit-test-client”。


把库复制到开发板上,在Ubuntu上执行如下命令:

左右滑动查看完整内容

$ scp tmp/lib/*so* root@192.168.5.9:/usr/lib64/


11.4.2 上机测试

把测试程序和库复制到开发板上,在Ubuntu上执行如下命令:

左右滑动查看完整内容

$ scp tests/.libs/unit-test-server root@192.168.5.9:/home/root$ scp tests/.libs/unit-test-client root@192.168.5.9:/home/root


在开发板上执行如下命令,通过Modbus TCP协议进行测试:

左右滑动查看完整内容

root@myir-remi-1g:~# cd /home/root/root@myir-remi-1g:~# ./unit-test-server tcp 127.0.0.1 &root@myir-remi-1g:~# ./unit-test-client tcp 127.0.0.1Connecting to 127.0.0.1:1502Client connection accepted from 127.0.0.1.Waiting for an indication...** UNIT TESTING **1/1 No response timeout modification on connect: OKTEST WRITE/READ:[00][01][00][00][00][06][FF][05][01][30][FF][00]<00><01><00><00><00><06><05><01><30><00>[00][01][00][00][00][06][FF][05][01][30][FF][00]Waiting for an indication...Waiting for a confirmation...<00><01><00><00><00><06><05><01><30><00>1/2 modbus_write_bit: OK


需要产品及方案支持

请扫码登记


需要技术支持?

如您在使用瑞萨MCU/MPU产品中有任何问题,可识别下方二维码或复制网址到浏览器中打开,进入瑞萨技术论坛寻找答案或获取在线技术支持。

https://community-ja.renesas.com/zh/forums-groups/mcu-mpu/



未完待续


推荐阅读

libmodbus情景分析 - RZ MPU工业控制教程连载(39)


主设备读取回应与常用接口函数 - RZ MPU工业控制教程连载(40)

Modbus接口与数据处理 - RZ MPU工业控制教程连载(41)

更多精彩,敬请关注

需要产品及方案支持

请扫码登记



评论 (0)
  • 为通过金融手段积极推进全球绿色发展,国际金融论坛(IFF)于2020年创立了“IFF全球绿色金融奖”,旨在对全球绿色金融领域取得突出成绩的机构及创新性的解决方案进行表彰和奖励。该奖项依托IFF“高层次、高水平、国际化”一流智库资源优势,积极促进绿色金融领域的国际交流合作和创新实践,助力联合国可持续发展目标的实现。“IFF全球绿色金融奖”重点关注和鼓励那些促进经济增长模式转型、防治环境污染、应对气候变化,以及致力于提高能效水平、强化节能减排实效的绿色金融创新解决方案。该奖项面向全球,是对政策创新、
    华尔街科技眼 2025-04-24 20:43 9浏览
  • 最近,途虎养车发布的2024年财报数据,可谓相当吸睛。全年营收达到147.59亿元,同比增长8.5%,这个数字直观地展现了途虎在市场上的强大吸金能力,在行业里稳稳占据前列。利润方面同样出色,毛利37.46亿元,毛利率提升0.7个百分点至25.4%;经调整净利润6.24亿元,同比增长 29.7%,经营利润同比更是增长104%至3.31亿元,盈利能力显著增强,这样的利润增长幅度,在同行业中十分亮眼。在用户规模上,途虎养车同样成绩斐然。累计注册用户近1.4亿,同比增长20.4%,交易用户数达2410万
    用户1742991715177 2025-04-24 19:12 22浏览
  •   海上训练与保障调度指挥平台系统解析   北京华盛恒辉海上训练与保障调度指挥平台系统是现代海上作战训练的核心枢纽,融合信息技术、GIS、大数据及 AI 等前沿技术,旨在实现海上训练高效组织、作战保障科学决策。以下从架构功能、应用场景、系统优势及发展挑战展开解读。   应用案例   目前,已有多个海上训练与保障调度指挥平台在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润海上训练与保障调度指挥平台。这些成功案例为海上训练与保障调度指挥平台的推广和应用提供了有力支持。   一
    华盛恒辉l58ll334744 2025-04-24 15:26 127浏览
  •   通用装备论证与评估系统平台解析   北京华盛恒辉通用装备论证与评估系统平台是服务军事装备全生命周期管理的综合性信息化平台,通过科学化、系统化手段,实现装备需求论证、效能分析等核心功能,提升装备建设效益。   应用案例   目前,已有多个通用装备论证与评估系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润通用装备论证与评估系统。这些成功案例为通用装备论证与评估系统的推广和应用提供了有力支持。   一、系统分层架构   (一)数据层   整合装备性能、作战、试验等多源异
    华盛恒辉l58ll334744 2025-04-24 16:14 130浏览
  • 引言:语音交互的智能化跃迁在全球化与智能化深度融合的今天,语音交互设备的应用场景已从单一提示功能向多语言支持、情感化表达及AI深度交互演进。传统离线语音方案受限于语种单一、存储容量不足等问题,而纯在线方案又依赖网络稳定性,难以满足复杂场景需求。WT3000A离在线TTS方案,通过“本地+云端”双引擎驱动,集成16国语种、7种方言切换、AI大模型对话扩展等创新功能,重新定义语音提示器的边界,为智能硬件开发者提供更灵活、更具竞争力的语音交互解决方案。一、方案核心亮点离在线双模融合,场景全覆盖离线模式
    广州唯创电子 2025-04-25 09:14 19浏览
  • 2025-4-25全球信息报告出版商Global Info Research(环洋市场咨询)发布了【2025年全球市场高介电常数材料总体规模、主要生产商、主要地区、产品和应用细分研究报告】,报告主要调研全球高介电常数材料总体规模、主要地区规模、主要生产商规模和份额、产品分类规模、下游主要应用规模以及未来发展前景预测。统计维度包括销量、价格、收入,和市场份额。同时也重点分析全球市场主要厂商(品牌)产品特点、产品规格、价格、销量、销售收入及发展动态。历史数据为2020至2024年,预测数据为2025
    用户1745398400862 2025-04-25 08:48 20浏览
  • 随着轻薄笔记本的普及,再加上电竞玩家对于高画质音视频体验的需求日益高涨,如何让轻薄笔记本在兼顾轻便携带性的同时,还能提供足以支持3A(AAA/Triple-A game)大作的良好运算性能,便成为各家品牌急欲突破的共同难题。然而,对于主打轻巧便携的轻薄笔记本而言,若要内置独立显卡,势必要先突破空间受限的瓶颈,同时还需解决散热问题,确实难以兼顾两全!对此,“Thunderbolt”与“OCuLink”这两项技术应运而生。用户可以通过这两种传输接口,再搭配外接显卡盒(eGPU)及高性能显卡(如NVI
    百佳泰测试实验室 2025-04-24 17:56 21浏览
  •   陆地装备体系论证与评估综合平台系统解析   北京华盛恒辉陆地装备体系论证与评估综合平台系统是契合现代军事需求而生的专业系统,借助科学化、智能化手段,实现对陆地装备体系的全方位论证与评估,为军事决策和装备发展提供关键支撑。以下从功能、技术、应用及展望展开分析。   应用案例   目前,已有多个陆地装备体系论证与评估综合平台在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润陆地装备体系论证与评估综合平台。这些成功案例为陆地装备体系论证与评估综合平台的推广和应用提供了有力支持。
    华盛恒辉l58ll334744 2025-04-24 10:53 125浏览
  •   有效样本分析决策系统平台全面解析   一、引言   北京华盛恒辉有效样本分析决策系统在当今数据驱动的时代,企业、科研机构等面临着海量数据的处理与分析挑战。有效样本分析决策系统平台应运而生,它通过对样本数据的精准分析,为决策提供有力支持,成为提升决策质量和效率的关键工具。   应用案例   目前,已有多个有效样本分析决策系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润有效样本分析决策系统。这些成功案例为有效样本分析决策系统的推广和应用提供了有力支持。   二、平台概述
    华盛恒辉l58ll334744 2025-04-24 11:13 114浏览
  •   航空兵训练与战术对抗仿真平台系统解析   北京华盛恒辉航空兵训练与战术对抗仿真平台系统是现代军事训练的关键工具,借助计算机技术构建虚拟战场,支持多兵种协同作战模拟,为军事决策、训练及装备研发提供科学依据。   应用案例   目前,已有多个航空兵训练与战术对抗仿真平台在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润航空兵训练与战术对抗仿真平台。这些成功案例为航空兵训练与战术对抗仿真平台的推广和应用提供了有力支持。   一、系统架构与核心功能   系统由模拟器、计算机兵力生
    华盛恒辉l58ll334744 2025-04-24 16:34 141浏览
  • 引言在智能语音技术飞速发展的今天,语音交互已成为消费电子、智能家居、工业控制等领域的标配功能。传统的ISD系列录音芯片虽应用广泛,但其高成本与功能局限性逐渐难以满足市场对高性价比、高灵活性的需求。推出的WT2000P录音语音芯片,凭借其卓越性能、低功耗设计及高度可定制化特性,成为ISD系列芯片的理想替代方案,助力开发者突破产品创新瓶颈。一、WT2000P产品概述WT2000P是一款专为嵌入式语音场景设计的多功能录音芯片,采用ESOP8封装,体积小巧(尺寸仅4.9mm×3.9mm),集成度高,支持
    广州唯创电子 2025-04-25 08:44 12浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦