MODBUSSDK用户手册_第1页
MODBUSSDK用户手册_第2页
MODBUSSDK用户手册_第3页
MODBUSSDK用户手册_第4页
MODBUSSDK用户手册_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、文档收集于互联网,已重新整理排版word版本可编借,有帮助欢迎下载支持. ZModbusSdk配置函数库 使用手册 1 函数库说明3 1.1 简介:3 1.2 提供的函数接口3 1.2.1 以太网链路连接3 1.2.2 串口链路连接4 123以太网与串口链路断开连接5 1.2.4以太网与串口链路的数据采集(读写)5 2 错误代码11 1文档来源为:从网络收集整理.word版本可编借. 1函数库说明 1.1简介S ZModbusSdk函数库为标准的MODBUS(主机)协议提供函数接口。开发人员可以使用此函数 库方便开发出遵循MODBUS协议的程序。如果需要开发MODBUS从机程序,开发人员需 要

2、使用其他的函数库或方法。 函数库在连接时使用对不同的链路层提供不同的函数接口如:以太网的为: ZMB_TCPConnectMDBServer,串 口的为:ZMB_SerConnectMDBSenrero 其他的函数接口都 相同,不区分连接链路。 (本文档中使用的术语服务器对应MODBUS协议里的从机模块,客户机对应MODBUS协 议里的主机模块) 1-2提供的函数接口 ZModbusSdk提供了连接到从机(服务器)和读写线圈与寄存器的函数接口。 1.2.1以太网链路连接 ZMB_TCPConnectMDBServer 描述 调用此函数连接到从机模块(或服务器)。 HANDLE ZMB_TCPC

3、onnectNlDBServer( char * szlp, int nDstPort, int nConnTimeout); 参数 szlp 指泄要进行连接的从机(服务器)的IP地址。 nDstPort 指泄从机的端口号。 nConnTimeout 指定连接超时。 返回值 返回“非NULL表示成功,否则为错误。 122串口链路连接 ZMB_SerConnectMDBServer (串 口主机使用) 描述 调用此函数连接到从机模块(或服务器)。使用者应该注意对于串口的操作每个串口在同一 时间只能打开一次,因此在操作串口时应该控制号程序使它每次只打开一次。 HANDLE ZMB_SerConne

4、ctMDBServer ( int iRtuAscii, char *szConi int iBautRate, int iByteSize, int iParity, int iStopBits, int iDtrCtk int iRtsCtl, int iCtsCtl, int iDsrCtl, int iResponse); 参数 iRtuAscii 模块工作方式:RTU:0, ASCII: 1 szCom 需要打开的计算机串口。COM1TCOM2”, iBautRate 模块工作的波特率。9600,19200, iByteSize 模块工作的数据位。数据位数(字节表示4-8位) iPa

5、rity 模块工作的校验位,奇偶校验0-4:表示:不校验,奇校验,偶校验,标号,空格 iStopBits 模块工作的停止位,O(ONESTOPBIT)表示1个停止位,KONE5STOPBITS)表示1.5个停止 位,2(TWOSTOPBITS)表示2个停止位 iDtrCtl 模块是否需要DTR控制,0不需要,1需要 iRtsCtl 模块是否需要RTS控制,0不需要,1需要 iCtsCtl 模块是否需要CTS控制,0不需要,1需要 iDsrCtl 模块是否需要Dsr控制,0不需要,1需要 iResponse 模块的超时响应,默认1000 ms 返回值 返回“非NULL表示成功,否则为失败。 1.

6、2.3以太网与串口链路断开连接 ZMB_DisConnectMDBServer 描述 调用此函数断开和从机的连接。 void ZMB_DisConnectMDBServer(HANDLE hHand); 参数 hHand 此handle是ConnectMDBServrer操作的返回值。 返回值 无a 124以太网与串口链路的数据釆集(读写) ZMB_ReadCoil 描述 调用此函数按参数中的ID号和地址读取线圈状态。 long ZMB_ReadCoil( HANDLE hand, BYTE serlD, int nStart. int nCount, BYTE * bRct/*arr of

7、coils*/, WORD TranlD); 参数 hand 此handle是ConnectMDBServrer操作的返回值。 serlD 设备ID号。 nStart 线圈的起始地址。 nCount 线圈的个数。 bRet 返回的线圈状态,已分配号的数组地址。 TranlD 在TCP的MODBUS协议里需要用到任务ID号,如果为0使用系统自生成的,串口 MODBUS 此参数无效。 返回值 返回0表示成功,否则为错误码。 ZMB_ReadInput 描述 调用此函数按参数中的ID号和地址读取线圈状态(离散输入量数据)。 long ZMB_ReadInput( HANDLE hand, BYTE

8、serlD, int nStart. int nCount. BYTE * bRet Harr ofcoils*/, WORD TranlD ); 参数 hand 此handle是ConnectMDBSenrer操作的返回值。 serlD 设备ID号。 nStart 线圈的起始地址。 nCount 线圈的个数。 bRet 返回的线圈状态,已分配号的数组地址,此数组的大小应该和nCount指左的大小相同。 TranlD 在TCP的MODBUS协议里需要用到任务ID号,如果为0使用系统自生成的,串口 MODBUS 此参数无效。 返回值 返回0表示成功,否则为错误码。 ZMB_ReadHoldReg

9、 描述 调用此函数按参数中的ID号和地址读取保持寄存器的数据。 long ZMB.ReadHoldReg ( HANDLE hand. BYTE serlD, int nStart, int nCount, WORD * bRet/*arr of reg*/, WORD TranlD ); 参数 hand 此handle是ConnectMDBServrer操作的返回值。 serlD 设备ID号。 nStart 寄存器的起始地址。 nCount 寄存器的个数。 bRct 返回的寄存器数据,已分配号的数组地址,此数组的大小应该和nCount 一样。 TranlD 在TCP的MODBUS协议里需要用

10、到任务ID号,如果为0使用系统自生成的,串口 MODBUS 此参数无效。 返回值 返回0表示成功,否则为错误码。 ZMB_ReadInputReg 描述 调用此函数按参数中的ID号和地址读取输入寄存器的数据。 long ZMB_ReadInputReg ( HANDLE hand. BYTE serlD, int nStart, int nCount, WORD * Rct/*arr of reg*/, WORD TranlD ); 参数 hand 此handle是ConnectMDBServrer操作的返回值。 serlD 设备ID号。 nStart 寄存器的起始地址。 nCount 寄存器

11、的个数。 bRet 返回的输入寄存器数据,已分配号的数组地址,此数组的大小应该和nCount -样大。 TranlD 在TCP的MODBUS协议里需要用到任务ID号,如果为0使用系统自生成的,串口 MODBUS 此参数无效。 返回值 返回0表示成功,否则为错误码。 ZMB_WriteCoilSingle 描述 调用此函数按参数中的id号和地址修改单个线圈状态。 long ZMB.WriteCoilSingle ( HANDLE hand, BYTE scrID, int nAddress, WORD wWriteData, WORD TranlD ); 参数 hand 此handle是Conn

12、ectMDBServrer操作的返回值。 serlD 设备ID号。 nAddrcss 线圈的起始地址。 wWriteData 写入的线圈数据:“0”,T“。 TranlD 在TCP的MODBUS协议里需要用到任务ID号,如果为0使用系统自生成的,串口 MODBUS 此参数无效。 返回值 返回0表示成功,否则为错误码。 ZMB_WriteCoilMulitiple 描述 调用此函数按参数中的ID号和地址修改nCount指定的多个线圈状态。 long ZMB.WriteCoilMulitiple ( HANDLE hand, BYTE serlD, int nAddress, int nCount

13、, BYTE * bWriteDataArr. WORD TranlD ); 参数 hand 此handle是ConnectMDBSenrer操作的返回值。 serlD 设备ID号。 nAddress 线圈的起始地址。 nCount 写入的线圈的个数。 bWritcDataArr 写入的线圈数据的数组,数组的每个结构保存一个线圈状态,此数组大小应该和nCount指 定的大小相同。 TranlD 在TCP的MODBUS协议里需要用到任务ID号,如果为0使用系统自生成的,串口 MODBUS 此参数无效。 返回值 返回0表示成功,否则为错误码。 ZMB_WriteRegSingle 描述 调用此函数

14、按参数中的ID号和地址修改单个保持寄存器数据匚 long ZMB_WriteRegSingle ( HANDLE hand. BYTE serlD, int nAddress, WORD wWriteData, WORD TranlD ); 参数 hand 此handle是ConnectMDBServrer操作的返回值。 serlD 设备ID号。 nAddress 保持寄存器的地址。 w Write Data 写入的寄存器数据。 TranlD 在TCP的MODBUS协议里需要用到任务ID号,如果为0使用系统自生成的,串口 MODBUS此参数无效。 返回值 返回0表示成功,否则为错误码。 ZMB

15、_WriteRegMulitiple 描述 调用此函数按参数中的ID号和地址修改nCount指定多个保持寄存器。 long ZMB.WriteRegMulitiple ( HANDLE hand, BYTE serlD. int nAddress, int nCount, WORD * writeDataArr. WORD TranlD ); 参数 hand 此handle是ConnectMDBServrer操作的返回值。 serlD 设备ID号。 nAddress 保持寄存器的起始地址。 nCount 写入的寄存器的个数。 bWriteDataArr 写入的寄存器数据的数组,数组的每个结构保

16、存一个寄存器的值,此数组个数应该和nCount 指定的个数相同,大小应该等于nCount * 2个字节。 TranlD 在TCP的MODBUS协议里需要用到任务ID号,如果为0使用系统自生成的,串口 MODBUS 此参数无效。 返回值 返回0表示成功,否则为错误码。 ZMB_WriteCmdBuf 描述 调用此函数写命令串,根据nAddCheck参数决左是否添加校验。苴中TCP Modbus协议不 会添加必要的头部,而串口 Modbus则可以根据nAddCheck指左是否添加校验,校验的格 式(CRC或LRC)由打开参数iRtuAscii指定,这里不需要再指定。 long ZMB.WriteC

17、mdBuf ( HANDLE hand. BYTE *pBuf, int iLen, int nAddCheck ); 参数 hand 此handle是ConnectMDBServrer操作的返回值。 pBuf 写数据的缓冲区。 iLcn 缓冲区长度。 nAddCheck 是否添加校验,只在串口中有效,如果打开时为RUT,且使用了添加校验,贝IJ添加CRC校 验。如果打开时为ASCII,且使用了添加校验,则添加LRC校验。 TranlD 在TCP的卜IODBUS协议里需要用到任务ID号,如果为0使用系统自生成的,串口 MODBUS 此参数无效。 返回值 返回写成功的长度。 ZMB_ReadRe

18、cBuf 描述 调用此函数读取设备的响应数据。 long ZMB_ReadRecBuf ( HANDLE hand, BYTE *pBuf. int iBufLen, int *iRecedLen ); 参数 hand 此handle是ConnectMDBServrer操作的返回值。 pBuf 读数据的缓冲区。 iBufLens 缓冲区的大小。 iRecedLen 接收到的数据的长度,(输出参数)。 TranlD 在TCP的MODBUS协议里需要用到任务ID号,如果为0使用系统自生成的,串口 MODBUS 此参数无效。 返回值 返回读取到的长度。 2错误代码 ZModbusSdk使用了标准的MODBUS错

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论