modbusrtu通信协议串口通讯内容摘要:

| 20 | | | | | | | 29 | 28 | ----------------------------------------- 各位赋值 : | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | ----------------------------------------- 16 进制串: | C | D | 0 | 1 | ----------------------------------------- 注:没有注册的用户只能写入 00001~ 00006 范围的状态值 ; 4)、 16 功能码写多个保持寄存器数据功能函数 Function FCN16(nport,node,address,Count:longint。 Sendstr:pchar):longint。 stdcall。 参数: nport: 串口号,取值为 1~ 8,代表 COM1~ COM8。 node: modbus 从站号,取值 1~ 255; address: 元件地址,取值范围从 40001~4XXXX 地址区 (保持寄存器 )值 (你要写标准 modbus 的 40001 地址这个值为 0000,依次类推 ) Count: 写入字元件个数,一次最多 60个但不能超出寻址范围; Sendstr: 给字写入的值,该值为 4 个一组的 16进制字符串组其取值为 0000~ FFFF(整数值为 0~ 65535); 返回值: 长整数,操作成功返回 1,不能写入或操作错误返回 0; 当要写入多个字值时依次排列即可。 如给 40001 与 40002 写值 100 和 1000,先将 100 转成 16 进制字符串 006 1000 转成 16 进制字符串 03E8, 则 sendstr=006403E8;一次最多写 64 个字即字符串长应小于等于 256。 ---------- ---- ~ --------- 写字符串序列如 : | 0064 | 03E8 | 0010 | 6004 | ~ | 0008 | 0400 | ---------- ---- ~ --------- 使用举例: FCN16(1,2,1,000A0102),由 COM1 给 modbus 2 号从站 40002(标准 modbus 地址 )的字单元写入给 10(16 进制 000A)、 40003(标准modbus 地址 ) 的字单元写入给 258(16 进制 0102)返回值为 1 表示成功; 注:没有注册的用户只能写入 40001~ 40003 范围的状态值; 5)、 modbus 功能码 16的扩展功能函数 单保持寄存器的 0~ 15 相应位的置位 (- ~ - ) Function FCN16_xSet(nport,node,address,Bit:longint):longint。 stdcall。 参数: nport: 串口号,取值为 1~ 8,代表 COM1~ COM8。 node: modbus 从站号,取值 1~ 255。 address: 元件地址,取值范围从 40001~4XXXX 地址区 (保持寄存器 )值 (你要写标准 modbus 的 40001 地址这个值为 4000,依次类推 ) Bit: 保持寄存器的位,取值 0~ 15。 返回值: 长整数,操作成功返回 1,不能写入或操作错误返回 0; 使用举例: FCN16_xSet(1,12,2,0),由 COM1 将 modbus 12 号从站 40003(标准 modbus 地址 )的第 0 个位状态值置 1,返回值为 1 表示成功 注:没有注册的用户不能使用本功能; 单保持寄存器的 0~ 15 相应位的复位 (- ~ - ) Function FCN16_xReset(nport,node,address,Bit:longint):longint。 stdcall。 参数: nport: 串口号,取值为 1~ 8,代表 COM1~ COM8。 node: modbus 从站号,取值 1~ 255。 address: 元件地址,取值范围从 40001~4XXXX 地址区 (保持寄存器 )值 (你要写标准 modbus 的 40001 地址这个值为 4000,依次类推 ) Bit: 保持寄存器的位,取值 0~ 15。 返回值: 长整数,操作成功返回 1,不能写入或操作错误返回 0; 使用举例: FCN16_xReset(1,10,3,12),由 COM1 将 modbus 10 号从站 40004(标准 modbus 地址 )的第 12个位状态值置 0,返回值为 1 表示成 功 注:没有注册的用户不能使用本功能; 单保持寄存器的 0~ 15 相应位的置复位 (- ~ - )指使相应的位短时间通断一次 (接通约60ms) Function FCN16_xSetReset(nport,node,address,Bit:longint):longint。 stdcall。 参数: nport: 串口号,取值为 1~ 8,代表 COM1~ COM8。 node: modbus 从站号,取值 1~ 255。 address: 元件地址,取值范围从 40001~4XXXX 地址区 (保持寄存器 )值 (你要写标准 modbus 的 40001 地址这个值为 4000,依次类推 ) Bit: 保持寄存器的位,取值 0~ 15。 返回值: 长整数,操作成功返回 1,不能写入或操作错误返回 0; 使用举例: FCN16_xSetReset(1,10,9,10),由 COM1 将 modbus 10 号从站 40010(标准 modbus 地址 )的第 10 个位状态值置 1 后约 60ms 再置 0,返回值为 1 表示成功 注:没有 注册的用户不能使用本功能; 四、 DLL 附加函数说明 (本段函数对未注册用户没有限制,完全可以使用。 ) 串口打开状态的读取 Function ComTrue(nport:longint):longint。 stdcall。 参数: noprt: 串口号,取值为 1~ 8,代表 COM1~ COM8。 返回值:长整型,串口成功打开返回 “1”,否则返回 “0”。 这里读取是 DLL 有效取得了串口的控制权,如果其他程序占用 (串口不存在 )等原因仍返回 “0”。 整数转换成 16进制字符串 (为 VC 等非 RAD 开发 环境所增设 ) Function CIntToHex(Dcint,Digits:Longint):Pchar。 stdcall。 参数: Cint: 待转换整数,取值为( 0~ 65535)。 Digits: 转换的字符串位数,指定位数小于实际位数时按实际输出。 在参数错误等非法的情况下返回 “Error@” 使用举例: CIntToHex(200,2),则返回字符串 “C8@”。 CIntToHex(200,4),则返回字符串 “00C8@”。 CIntToHex(200,8),则返回字符串 “000000C8@”。 CIntToHex(4500,4),则返回字符串 “1194@”。 CIntToHex(4500,3),则返回字符串 “1194@”,因为 “194”不足以表示 4500 这个数所以按实际输出字符串 “1194@”。 @为字符串数据的终止符。 16 进制字符串转换成整数 (为 VC 等非 RAD 开发环境所增设 ) Function CHexToInt(CHex:Pchar):Longint。 stdcall。 参数: CHex: 待转换字符串,取值为( 0000~ FFFF)。 使用举例: CHexToInt(03E8),则返回整数 1000。 注:在参数不正确等出错情况下返回值为 “1”。 抽取 (0~ 65535)所示整数中 (0~ 15)某个位的值 Function CinBin(CHex,Start:longint):longint。 stdcall。 参数: CHex: 待转换整数,取值为 0~ 65535(0000~ FFFF)。 Start: 抽取的位,取值为( 0~ 15)。 使用举例: CinBin(15,3),则返回值 1。 CinBin(15,4),则返回值 0。 CinBin(1000,6),则返回值 1。 读取 MB0 组合成的字节值为 “FC”(252)时,要读取 的值时,则调用 CinBin(252,1)返回值 0 表示 的值为 0。 注:在参数不正确等出错情况下返回值为 “1”。 返回字符串 Text 左边的 Count 个字符 (为 VC 等非 RAD 开发环境所增设 ) Function CLeftStr(Text:Pchar。 Count:longint):Pchar。 stdcall。 参数: Text: 字符串原型。 Count: 指定返回左侧字符串个数。 在参数错误 等非法的情况下返回 “Error@” 使用举例: CleftStr(123456, 3) = 123@。 @为字符串数据的终止符。 返回字符串 Text 右边的 Count 个字符 (为 VC 等非 RAD 开发环境所增设 ) Function CRightStr(Text:Pchar。 Count:longint):Pchar。 stdcall。 参数: Text: 字符串原型。 Count: 指定返回右侧字符串个数 在参数错误等非法的情况下返回 “Error@” 使用举例: CRightStr(123456, 3) = 456@。 @为字符串数据的终止符。 返回字符串 Text 从 Start 开始的 Count 个字符 (为 VC 等非 RAD 开发环境所增设 ) Function CMidStr(Text:Pchar。 Start,Count:longint):Pchar。 stdcall。 参数: Text: 字符串原型。 Start: 指定返回字符串的起始位置。 Count: 指定返回字符串个数。 在参数错误等非法的情况下返回 “Error@” 使用举例: CMidStr(123456,2, 3) = 234@。 @为字符串数据的终止符。 字符串 Cstr 开始于字符串 Ostr 的位置 (为 VC 等非 RAD 开发环境所增设 ) Function Cinstr(Ostr,Ckstr:Pchar。 Dcint:Longint):Longint。 stdcall。 参数: Ostr: 字符串原型。 Cstr: 查询的字符串。 Dcint: 设定查询字符串的起始位置 ,取值 =1,即最少从源字符串的第一个字符开始查询; 返回值:长整型。 使用举例: CinStr(1Tfdg23456,2,2) = 6 注:在参数不正确等出错情况下返回值为 “0”。 PC 喇叭的报警过程函数; Function MyBeep(SoundHz:longint):longint。 stdcall。 参数 :SoundHz:长整型。 返回值 :长整型 ,操作成功返回 “1”,否则返回 “0”。 使用举例: MyBeep(2020)。 按 2020的频率发出报警声。 DLL 中关于传出字符串值的函数都以 @为字符串函数值终止符,这是对多开发环境应用时方便用户正确读取返回字符串数据而设。 五、 Delphi、 VB、 VC 语言环境的开发使用说明 Delphi语言环境开发说明 在 Delphi 环境下将 、 (许可文件 )复制到应用程序目录下。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。