约克冷冻机组通讯协议-MODBUS

无锡约克公司YS制冷机组MODBUS通讯协议说明

VER 1.00

一. 接口

接口:RS-485/232/422

波特率:19200bps

数据位:8 bit

校验: 奇校验(ODD)

停止位: 1

二. MODBUS协议

1. 位状态的读取( 功能号:0x01 )

呼叫: 局号(1-255)

功能号(0x01)

开始地址(高位)

开始地址(低位)

点数(高位)

点数(低位)

crc16(高位)

crc16(低位)

回答: 局号(1-255)

功能号(0x01)

字节数(8点为一个字节)

数据1

数据2

......

数据n

crc16(高位)

crc16(低位)

2. 强制位状态( 功能号:0x05 )

呼叫: 局号(1-255)

功能号(0x05)

开始地址(高位)

开始地址(低位)

数据(00:off/FF:on)

crc16(高位)

crc16(低位)

回答: 局号(1-255)

功能号(0x05)

开始地址(高位)

开始地址(低位)

数据(00:off/FF:on)

crc16(高位)

crc16(低位)

3. 字数据的读取( 功能号:0x03 )

呼叫: 局号(1-255)

功能号(0x03)

开始地址(高位)

开始地址(低位)

字数(高位)

字数(低位)

crc16(高位)

crc16(低位)

回答: 局号(1-255)

功能号(0x03)

字节数(字数*2)

数据1(高位)

数据1(低位)

数据2(高位)

数据2(低位)

......

数据n(高位)

数据n(低位)

crc16(高位)

crc16(低位)

4. 字数据的写入( 功能号:0x06 )

呼叫: 局号(1-255)

功能号(0x06)

开始地址(高位)

开始地址(低位)

数据(高位)

数据(低位)

crc16(高位)

crc16(低位)

回答: 局号(1-255)

功能号(0x06)

开始地址(高位)

开始地址(低位)

数据(高位)

数据(低位)

crc16(高位)

crc16(低位)

5. 字数据的写入( 功能号:0x10 )

呼叫: 局号(1-255)

功能号(0x10)

开始地址(高位)

开始地址(低位)

字数(高位)

字数(低位)

字节数

数据1(高位)

数据1(低位)

数据2(高位)

数据2(低位)

......

数据n(高位)

数据n(低位)

crc16(高位)

crc16(低位)

回答: 局号(1-255)

功能号(0x10)

开始地址(高位)

开始地址(低位)

字数(高位)

字数(低位)

crc16(高位)

crc16(低位)

// 关于位状态的地址计算

对应输入位状态地址=输入位状态号+0X00

例: 位状态号X0 对应的字数据的地址为0x00+0X0=0x0

位状态号X1 对应的字数据的地址为0x00+0X1=0x1

对应输出位状态地址=输出位状态号+0X040

例: 位状态号Y0 对应的字数据的地址为0x040+0X0=0x040

位状态号Y1 对应的字数据的地址为0x040+0X1=0x041

对应PLC中间继电器位状态的地址= 中间继电器位状态号+ 0x80

例: 位状态号M900 对应的字数据的地址为0x080+0X384=0x404 位状态号M901 对应的字数据的地址为0x080+0X385=0x405

// 关于字数据的地址

对应字数据的地址= 寄存器号+ 0x00

例: 寄存器D6400 对应的字数据的地址为0x00+0X1900=0x1900

寄存器D6705 对应的字数据的地址为0x00+0X1A31=0x1A31

//----------------------------------------------------------

//----------------------------------------------------------

// YORK发来的YS寄存器定义信息

//----------------------------------------------------------

//----------------------------------------------------------

// YS显示信息

/ 显示信息

01. 冷冻水进水温度D6701

02. 冷冻水出水温度D6702

03. 冷却水进水温度D6703 冷却水出水温度D6704

04. 1#系统滑阀步数(未用)D6704

05. 马达电流,百分比D6706,D6705

06. 油温D6707

07. 油压D6708

08. 油过滤器压D6709

09. 滑阀位置D6710

10. 蒸发压力D6720

11. 排气温度D6713

12. 冷凝压力D6714

13. 蒸发饱和温度D6715

14. 蒸发过热度D6716

15. 冷凝饱和温度D6717

16. 排气过热度D6718 1#系统经济器压力(未用)D6719

17. 蒸发器制冷剂温度D6721 密封油压D6720

18. 2#系统马达电流,百分比(未用)D6722,D6721

19. 蒸发器小温差D6723

20. 冷凝器小温差D6724

21. 2#系统吸气温度(未用)D6725

22. 2#系统吸气压力(未用)D6726

23. 2#系统排气温度(未用)D6727

24. 2#系统冷凝器过冷温度(未用)D6728

25. 2#系统排气压力(未用)D6730

26. 2#系统吸气饱和温度(未用)D6731

27. 2#系统吸气过热度(未用)D6732

28. 2#系统排气饱和温度(未用)D6733

29. 2#系统排气过热度(未用)D6734

30. 系统运行时间D6741

31. 系统启动次数D6743

32. 1#系统除霜次数(未用)D6744

33. 2#系统除霜次数(未用) D6746

34. 年D6760

35. 月D6761

36. 日D6762 D6763 0 一

37. 星期D7203 1 二

38. 时D6764 2 三

39. 分D6765 3 四

40. 秒D6766 4 五

41. 2#系统风机反转(未用) M708 ON/OFF 5 六

42. 当前状态信息D6800 6 七

43. 故障记录信息1 #时#分#月#日D6801 D6751 D6752 D6780 D6781

44. 故障记录信息2 #时#分#月#日D6802 D6754 D6755 D6782 D6783

45. 故障记录信息3 #时#分#月#日D6803 D6757 D6758 D6784 D6785

46. 故障记录信息4 #时#分#月#日D6804 D6769 D6770 D6786 D6787

47. 故障记录信息5 #时#分#月#日D6805 D6771 D6772 D6788 D6789

48. 故障记录信息6 #时#分#月#日D6806 D6773 D6774 D6790 D6791

49. 故障记录信息7 #时#分#月#日D6807 D6775 D6776 D6792 D6793

50. 故障记录信息8 #时#分#月#日D6808 D6777 D6778 D6794 D6795

51. 1#系统经济器电磁阀(未用)M710

52. 2#系统经济器电磁阀(未用)M711

53. (未用)D6830

54. 油分温度D6831

55. 滑块位置(未用)D6832

56. (未用)D6833

57. 滑块位置(计算值)(未用)D6834

57. 滑块位置(电压)(未用)D132

58. 滑阀位置(电压)D133

59. 滑块最小位置(未用)D130

60. 滑块最大位置(未用)D131

61. 滑阀最小位置(电压)D134 *

62. 滑阀最大位置(电压)D135 *

63. 油压(电压)D51

64. 冷凝压力(电压)D52

65. 蒸发压力(电压)D53

66. 油温(电压)D56

67. 排气温度(电压)D57

68. 蒸发器制冷剂温度(电压)D63

69. 冷冻进水温度(电压)D82

70. 冷冻出水温度(电压)D83

71.冷却进水温度(电压)D84

72. 冷却出水温度(电压)D85

73. 油过滤器压力(电压)D86

74. 密封油压(电压)D87

// 设定信息

01. 冷凝压力过高D6400

02. 冷凝减载压力D6401

03. 蒸发压力过低(盐水) D6402

04. 出水停机温度D6403

05. 出水温度D6405

06. 马达减载电流D6406

07. 马达电流FLA D6407

08. 循环启动温度偏置D6407

09. 防止重复启动时间D6410

10. 智能防冻M1103 ON/OFF

11. 日程开关机允许/禁止M1104 ON/OFF

12. 降温需求时间D6411

13. 降温需求限制D6412

14. 2#系统吸气压力过低(未用)D6413

15. 2#系统马达减载电流(未用)D6414

16. 2#系统马达电流FLA(未用)D6415

17. 最小电机电流D6416

18. 排气温度过高D6417

19. 入水温度(未用)D6418

20. 水温控制回差D6419

21. 水温控制死区D6420

22. 油温过高D6421

23. 油温过低D6422

24. ΔP D6423

25. 温度控制周期D6424

26. 除霜结束温度(未用) D6425

27. 除霜间隔时间(未用) D6426

28. 平时开机时间##时##分D6428 D6427

29. 平时关机时间##时##分D6430 D6429

30. 假日开机时间##时##分D6432 D6431

31. 假日关机时间##时##分D6434 D6433

32. 假日(01) ##年##月##日D6437 D6436 D6435

33. 假日(02) ##年##月##日D6440 D6439 D6438

34. 假日(03) ##年##月##日D6443 D6442 D6441

35. 假日(04) ##年##月##日D6446 D6445 D6444

36. 假日(05) ##年##月##日D6449 D6448 D6447

37. 假日(06) ##年##月##日D6452 D6451 D6450

38. 假日(07) ##年##月##日D6455 D6454 D6453

39. 假日(08) ##年##月##日D6458 D6457 D6456

40. 假日(09) ##年##月##日D6461 D6460 D6459

41. 假日(10) ##年##月##日D6464 D6463 D6462

42. 假日(11) ##年##月##日D6467 D6466 D6465

43. 假日(12) ##年##月##日D6470 D6469 D6468

44. 假日(13) ##年##月##日D6473 D6472 D6471

45. 假日(14) ##年##月##日D6476 D6475 D6474

46. 假日(15) ##年##月##日D6479 D6478 D6477

47. 假日(16) ##年##月##日D6482 D6481 D6480

48. 假日(17) ##年##月##日D6485 D6484 D6483

49. 假日(18) ##年##月##日D6488 D6487 D6486

50. 假日(19) ##年##月##日D6491 D6490 D6489

51. 假日(20) ##年##月##日D6494 D6493 D6492

52. 控制方式D7060 0:本地1:遥控2:通讯

53. 1#系统冷凝排热压力(未用) D6500

54. 1#系统风量分档压力(未用) D6501

55. 1#系统控制回差压力(未用) D6502

56. 2#系统冷凝排热压力(未用) D6503

57. 2#系统风量分档压力(未用) D6504

58. 热气旁通ON D6505

59. 热气旁通OFF D6506

60. 热气旁通M710 ON:激活OFF:失效

61. 旁通电磁阀状态选择M712 ON:自动OFF:手动

62. 手动旁通电磁阀M713 ON/OFF

63. 最小负荷控制方式D7061 0:滑阀1:电机FLA

64. 出水温度补偿(未用)D6508

65. 入水温度补偿(未用)D6509

66. 温度重设D6510

67. 遥控电流减载重设D6511

68. 超前/滞后(未用)D6512 0:AUTO 1:1#系统2:2#系统

69. 通信地址D6515

70. 油温加热温度D6516

71. 手动滑阀上载M701 ON/OFF

72. 手动滑阀下载M702 ON/OFF

73. 密封油压M703 ON:激活OFF:失效

74. 手动滑块下载(未用)M704 ON/OFF

75. 确认滑块最小位置(未用)M700 ON/OFF

76. 确认滑块最大位置(未用)M705 ON/OFF

77. 确认滑阀最小位置M706 ON/OFF

78. 确认滑阀最大位置M707 ON/OFF

79. 油压偏移值(未用)D140 *

80. 冷凝压力偏移值(未用)D141 *

81. 蒸发压力偏移值(未用)D142 *

82. 油分温度偏移值(未用)D143 *

83. 吸气温度偏移值(未用)D144 *

84. 油温偏移值(未用)D145 *

85. 排气温度偏移值(未用)D146 *

86. 冷冻出水温度偏移值(未用)D147 *

87. 油过滤器压力偏移值(未用)D148 *

88. 密封油压偏移值(未用)D149

89.冷冻进水温度偏移值(未用)D150

90. 冷却出水温度偏移值(未用)D151

91.进水温度偏移值(未用)D152

92. C. 冷却T (未用)D138 *

93. 滑块自动/手动ON/OFF(未用)M780

94. 滑阀自动/手动ON/OFF M790

95. 启动M900

96. 停机M901

// 状态显示信息D6800

00. 压缩机运转17. 辅助触点闭合停机33. 冷冻入水温度传感器故障

01. 防止重复启动18. 警告:蒸发器压力低限制34. 蒸发压力或制冷剂温度传感器故障

02. 水流开关开,系统停机19. 冷冻水智能防冻保护35. 蒸发压力或出水温度传感器故障

03. 水温超限停机20. 智能防护,低压保护36. 冷却入水温度传感器故障

04. 排气压力过高停机21. 机组运行,降温需求37. 吸气温度传感器故障

05. 吸气压力过低停机22.机组未运行,电流>15%FLA 38.蒸发器制冷剂温度传感器故障

06. 油压高停机23. 油过滤器阻塞39. 排气温度传感器故障

07. 油压差低停机24. 密封油压差低停机40.―――――――

08. 油温过高停机25. ――――――――41. 油温传感器故障

09. 油温过低停机26. ―――――――――42. ――――――――――

10. 排气温度过高停机27. ――――――――43. 蒸发压力传感器故障

11. 吸气饱和温度过低停机28. ―――――――――44. ――――――――――

12. 启动失败,无反馈信号29. ――――――――45. 冷凝压力传感器故障

13. 低电流停机30. ―――――――――46. ―――――――

14. 过电流停机31. -------------- 47. 油压传感器故障

15. 马达保护器动作32. 冷冻出水温度传感器故障48. ―――――

16. 系统循环停机49. 电池电压低,立即更换

50. 低油位停机51. 经济器高液位停机52. 冷却出水温度传感器故障

53. 油过滤器压力传感器故障54.密封油压传感器故障55. ――――――――

56. 高压保护开关57. ――――58. 冷却水出水温度过高

59. 冷却水进水温度过低60. 日程开关机状态61. 假日开关机状态

62. 机组预润滑过程中……63. 滑阀位置>30%无法启动64. 停机过程中.....

故障记录信息D6801-D6808

00. ------- 17. 辅助触点闭合停机33. 冷冻入水温度传感器故障

01. ---- 18. 警告:蒸发器压力低限制34. 蒸发压力或制冷剂温度传感器故障

02. 水流开关开,系统停机19. 冷冻水智能防冻保护35. 蒸发压力或出水温度传感器故障

03. 水温超限停机20. 智能防护,低压保护36. 冷却入水温度传感器故障

04. 排气压力过高停机21. 机组运行,降温需求37. 吸气温度传感器故障

05. 吸气压力过低停机22. 机组未运行,电流>15%FLA 38. 蒸发器制冷剂温度传感器故障

06. 油压高停机23. . 油过滤器阻塞39. 排气温度传感器故障

07. 油压差低停机24. 密封油压差低停机40. ――――――――――

08. 油温过高停机25. ――――――――――41. 油温传感器故障

09. 油温过低停机26.――――――――――42.――――――――――

10. 排气温度过高停机27. ―――――――――43. 蒸发压力传感器故障

11. 吸气饱和温度过低停机28. ――――――――44.――――――――――

12. 启动失败,无反馈信号29. ――――――――――45. 冷凝压力传感器故障

13. 低电流停机30. -------------- 46. ―――――――――――――

14. 过电流停机31. -------------- 47. 油压传感器故障

15. 马达保护器动作32. 冷冻出水温度传感器故障48. ――――――――

16. ------------- 49. 电池电压低,立即更换

50. 低油位停机51. 经济器高液位停机52. 冷却出水温度传感器故障53. 油过滤器压力传感器故障54. 密封油压传感器故障55. ――――――――56. 高压保护开关57. ―――――――――58. 冷却水出水温度过高

59. 冷却水进水温度过低60. 日程开关机状态61. 假日开关机状态62. ――――――――63. 滑阀位置>30%无法启动64. 停机过程中.....

modbus_通讯协议_实例

上海安标电子有限公司 ——PC39A接地电阻仪通信协议 通信协议: 波特率:9600数据位:8校验位:无停止位:1 上位机(计算机): 字节号 1 2 3 4 5 6 7 8 意义ID Command 数据地址V alue CRC 注:1 ID:1个字节,由单机来定(0~255) 2 Command:1个字节,读:3或4,写:6 3 数据地址:2个字节,寄存器地址,读从100开始,写从200开始 4 V alue:2个字节,读:个数(以整型为单位),写:命令/ 数据(以整型为单位) 5 CRC:计算出CRC 下位机(PC39A): 读数据,若正确 字节号 1 2 3 3+N (N=个数*2) 3+N+1 3+N+2 意义ID Command=3 / 4 数据个数数据CRC 注:1 ID:1个字节,由单机来定(0~255) 2 Command:1个字节,收到的上位机命令 3数据个数:1个字节,返回数据个数(以字节为单位) 4 V alue:N个字节,是返回上位机的数据 5 CRC:计算出CRC 写命令,若正确 返回收到的数据: 若错误 字节号 1 2 3 4 5 意义ID Command 数据CRC 注:1 ID:1个字节,由单机来定(0~255) 2 Command:1个字节,收到的上位机命令或上0x80, 如收到3,返回0x83 3数据:1个字节,错误的指令 错误指令 1:表示command不存在 2:表示数据地址超限 4 CRC:计算出CRC

例如读PC39A 电流数据: 机器地址为12,电流的数据地址100,数据为15.45(A) (一个整型数据) 主机: ID Command 数据地址 V alue CRC 16进制 0x0c 0x03 0x0064 0x0001 CRC_H CRC_L 10进制 12 3 100 1 CRC_H CRC_L 从机返回 如正确: ID Command 数据个数(以字节为单位) V alue CRC 16进制 0x0c 0x03 0x002 0x0609 CRC_H CRC_L 10进制 12 3 2 1545 CRC_H CRC_L 如错误: ID Command 数据 CRC 16进制 0x0c 0x83 0x02 CRC_H CRC_L 10进制 12 131 2 CRC_H CRC_L 例如发PC39A 启动命令: 机器地址为12,命令的地址200,数据为25000(25000表示启动) 主机: ID Command 数据地址 V alue CRC 16进制 0x0c 0x06 0x00c8 0x61a8 CRC_H CRC_L 10进制 12 6 200 25000 CRC_H CRC_L 从机返回 如正确: ID Command 数据地址 V alue CRC 16进制 0x0c 0x06 0x00c8 0x61a8 CRC_H CRC_L 10进制 12 6 200 25000 CRC_H CRC_L 如错误: ID Command 数据 CRC 16进制 0x0c 0x86 0x02 CRC_H CRC_L 10进制 12 134 2 CRC_H CRC_L 0011 10000110 错误码0x83 功能码0x06错误码0x86

基于Modbus协议实现单片机与PLC之间的通讯

基于Modbus协议实现单片机与PLC之间的通讯 来源:PLC&FA 作者:蔡晓燕赵兴群万遂人董鹏云 关键词:可编程控制器 Modbus 通讯协议 1 引言 HMI(人机界面)以其体积小,高性能,强实时等特点,越来越多的应用于工业自动化系统和设备中。它有字母、汉字、图形和图片等不同的显示,界面简单友好。配有长寿命的薄膜按钮键盘,操作简单。它一般采用具有集成度高、速度快、高可靠且价格低等优点的单片机[1]作为其核心控制器,以实现实时快速处理。PLC和单片机结合不仅可以提PLC的数据处理能力,还可以给用户带来友好简洁的界面。本文以Modbus通讯协议为例,详细讨论了一个人机系统中,如何用C51实现单片机和PLC之间通讯的实例。 2 Modbus通讯协议[4] Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络和其它设备之间可以通信。 Modbus协议提供了主—从原则,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。主设备查询的格式:设备地址(或广播,此时不需要回应)、功能代码、所有要发送的数据、和一错误检测域。从设备回应消息包括确认地址、功能码、任何要返回的数据、和一错误检测域。如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。 控制器能设置为两种传输模式:ASCII和RTU,在同样的波特率下,RTU可比ASCII方式传送更多的数据,所以采用KTU模式。 (1) 典型的RTU消息帧 典型的RTU消息帧如表1所示。

RTU消息帧的地址域包含8bit。可能的从设备地址是0...127(十进制)。其中地址0是用作广播地址,以使所有的从设备都能认识。主设备通过将要联络的从设备的地址放入消息中的地址域来选通从设备。当从设备发送回应消息时,它把自己的地址放入回应的地址域中,以便主设备知道是哪一个设备作出回应。 RTU消息帧中的功能代码域包含了8bits,当消息从主设备发往从设备时,功能代码域将告之从设备需要执行哪些行为;当从设备回应时,它使用功能代码域来指示是正常回应(无误)还是有某种错误发生(称作异议回应,一般是将功能码的最高位由0改为1)。 从主设备发给从设备消息的数据域包含附加的信息:从设备必须用于进行执行由功能代 码所定义的行为。这包括了像不连续的寄存器地址,要处理项的数目,域中实际数据字节数。如果没有错误发生,从从设备返回的数据域包含请求的数据。如果有错误发生,此域包含一异议代码,主设备应用程序可以用来判断采取下一步行动。 当选用RTU模式作字符帧时,错误检测域包含一16Bits值(用两个8位的字符来实现)。错误检测域的内容是通过对消息内容进行循环冗长检测(CRC)方法得出的。CRC域附加在消息的最后,添加时先是低字节然后是高字节。 (2) 所有的Modbus功能码 Modbus的功能码定义如表2所示。

(完整版)MODBUS通讯协议-RTU要点

Modbus 通讯协议 (RTU传输模式)本说明仅做内部参考,详细请参阅英文版本。

第一章Modbus协议简介 Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。 当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。 协议在一根通讯线上使用应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,在相反的方向上终端设备发出的应答信号传输给主机。协议只允许在主计算机和终端设备之间,而不允许独立的设备之间的数据交换,这就不会在使它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。 1.1 传输方式 传输方式是一个信息帧内一系列独立的数据结构以及用于传输数据的有限规则,以RTU 模式在Modbus总线上进行通讯时,信息中的每8位字节分成2个4位16进制的字符,每个信息必须连续传输下面定义了与Modebus 协议– RTU方式相兼容的传输方式。 代码系统 ?8位二进制,十六进制数0...9,A...F ?消息中的每个8位域都是一个两个十六进制字符组成 每个字节的位 ?1个起始位 ?8个数据位,最小的有效位先发送 ?1个奇偶校验位,无校验则无 ?1个停止位(有校验时),2个Bit(无校验时) 错误检测域 ?CRC(循环冗长检测)

很好的威纶通MODBUSRTU通讯协议与变频器通讯案例

很好的威纶通 M O D B U S R T U通讯协议与变频器通讯案例 公司标准化编码 [QQX96QT-XQQB89Q8-NQQJ6Q8-MQM9N]

本文研究的是触摸屏通过MODBUS RTU通讯协议与变频器通讯实现变频器的控制。触摸屏采用威纶通TK6070IP,变频器用汇川MD380通用系列。通过触摸屏编程软件,编辑控制画面实现变频器的启动、停止、速度调节、多段速速度设置,通过宏指令实现工程值与实际值的转换。 一、MODBUS RTU 简介: 为了在自动化系统之间、自动化系统和所连接的分散的现场设备之间进行信息交换,如今串行现场总线被主要用作通讯系统。成千上万的应用已经强烈地证明了通过使用现场总线技术,可以节省多至40%的接线、调试及维护的费用。仅仅使用两根电线就可以传送现场设备的所有相关信息,比如输入和输出数据、参数、诊断数据。过去使用的现场总线往往是制造商的特定现场总线,并且同其它现场总线不兼容。如今使用的现场总线几乎是完全公开和标准化的。这就意味者用户可以以最合理的价格选择最好的产品,而不用依赖于每个独立的制造商。Modbus RTU是一种国际的、开放的现场总线标准。作为一种很容易实现的现场总线协议,在全世界范围内,Modbus得到了成功的应用。应用领域包括生产过程中的自动化、过程控制和楼宇自控。MODBUS RTU通讯协议的报文如图1。 图1 MODBUS RTU 通讯协议的报文功能码如下: 01H 读取线圈状态。从执行机构上读取线圈(单个位)的内容; 02H 读取离散量输入。从执行机构上读取离散量输入(多个位)的内容; 03H 读取保持寄存器。从执行机构上读取保持寄存器(16位字)的内容; 04H 读取输入寄存器。从执行机构上读取输入寄存器(16位字)的内容; 05H 强置单线圈。写数据到执行机构的线圈(单个位)为“通”(“1”)或“断”(“0”); 06H 预置单寄存器。写数据到执行机构的单个保持寄存器(16位字); 0FH 强置多线圈。写数据到执行机构的几个连续线圈(单个位)为“通”(“1”) 或“断”(“0”); 10H 预置多寄存器。写数据到执行机构的几个连续的保持寄存器(16位字)。 二、威纶通编程软件介绍: EB8000软件中MODBUS协议的设备类型为0x、1x、3x、4x、5x、6x,还有 3x_bit,4x_bit,6x_bit,0x_multi_coils等,下面分别说明这些设备类型在MODBUS协议中支持哪些功能码。 0x:是一个可读可写的设备类型,相当于操作PLC的输出点。该设备类型读取位状态的时候,发出的功能码是01H,写位状态的时候发出的功能码是05H。写多个寄存器时发出的功能码是0fH。

modbus协议下上位机编程实例

竭诚为您提供优质文档/双击可除modbus协议下上位机编程实例 篇一:modbus协议下的上位机地址 Rs485采取流量计数据,经串口com1的2号地址读到int ouch中来,双字40001、40002为浮点型瞬时流量,读到上位机项目为40001F双字40004、40005为长整型累计流量,读到上位机项目为40004l 驱动设置与intouch标记名的设置 驱动设置: 项目名设置 注:在不修改驱动设置的情况下,s=s1+s2*65535 s=s2+s1*65535 根据各个厂家的仪表,上面工式有区别,设计时各个测试一下。 篇二:modbus通讯协议实例 上海安标电子有限公司 ——pc39a接地电阻仪通信协议 通信协议:

波特率:9600数据位:8校验位:无停止位:1 上位机(计算机): 注:1id:1个字节,由单机来定(0~255) 2command:1个字节,读:3或4,写:6 3数据地址:2个字节,寄存器地址,读从100开始,写从200开始4Value:2个字节,读:个数(以整型为单位),写:命令/数据(以整型为单位)5cRc:计算出cRc下位机(pc39a ):注:1id:1个字节,由单机来定(0~255) 2command:1个字节,收到的上位机命令 3数据个数:1个字节,返回数据个数(以字节为单位)4Value:n个字节,是返回上位机的数据5cRc:计算出cRc 写命令,若正确返回收到的数据:若错误注:1id:1个字节,由单机来定(0~255) 2command:1个字节,收到的上位机命令或上0x80, 如收到3,返回0x83 3数据:1个字节,错误的指令错误指令 1:表示command不存在2:表示数据地址超限 4cRc:计算出cRc 例如读pc39a电流数据: 机器地址为12,电流的数据地址100,数据为15.45(a)(一个整型数据)

Modbus通讯协议(TCP和RTU)

1MODBUS RTU 读寄存器请求序号意义所占字节字节存放格式 1从设备地址1个字节0x00?0xff 2功能码1个字节0x03 3起始寄存器基地址两个字节高字节在前 4寄存器个数两个字节高字节在前 5CRC校验码两个字节低字节在前 读寄存器回应序号意义所占字节字节存放格式1从设备地址1个字节0x00?0xff 2功能码1个字节0x03 3数据长度1个字节寄存器个数×2 4数据寄存器个数×2个字节每个寄存器高字节在前5CRC校验码两个字节低字节在前 写单个寄存器请求序号意义所占字节字节存放格式1从设备地址1个字节0x00?0xff 2功能码1个字节0x06 3起始寄存器地址两个字节高字节在前 4寄存器值两个字节 高字节在前 5CRC校验码 两个字节 低字节在前 写单个寄存器回应序号意义所占字节字节存放格式1从设备地址1个字节0x00?0xff 2功能码1个字节0x10 3起始寄存器地址两个字节高字节在前 4寄存器值两个字节 高字节在前 5CRC校验码 两个字节 低字节在前 1

写多个寄存器请求序号意义所占字节字节存放格式1从设备地址1个字节0x00?0xff 2功能码1个字节0x10 3起始寄存器地址两个字节高字节在前 4寄存器个数两个字节 高字节在前 5数据长度 1个字节 寄存器个数×2  6数据寄存器个数×2个字节每个寄存器高字节在前7CRC校验码 两个字节 低字节在前 写多个寄存器回应序号意义所占字节字节存放格式1从设备地址1个字节0x00?0xff 2功能码1个字节0x10 3起始寄存器地址两个字节高字节在前 4寄存器个数两个字节 高字节在前 5CRC校验码 两个字节 低字节在前 错误返回序号意义所占字节字节存放格式1从设备地址1个字节0x00?0xff 2功能码1个字节请求功能码+0x80 3错误码1个字节 其代号见下面表格4CRC校验码 两个字节 低字节在前 错误代号错误代号意义 0x01不支持该功能码 0x02越界 0x03寄存器数量超出范围 0x04读写错误 2

电磁流量计实用标准MODBUS通讯协议详情(1)

电磁流量计转换器 通讯协议 2012-10-12

目录 一、概述................................................................................................. - 2 - 二、网络结构及接线................................................................................ - 2 -

三、Modbus协议RTU帧格式 .............................................................. - 2 - 四、Modbus协议命令编码定义............................................................. - 4 - 五、电磁流量计MODBUS寄存器定义 ................................................... - 5 - 1. 电磁流量计MODBUS寄存器地址定义............................................... - 5 - 2.PLC地址设置说明................................................................................ - 5 - 3.组态王地址设置说明............................................................................. - 6 -4.数据含义说明 .................................................................................... - 6 -六、通讯数据解析................................................................................... - 7 -1读瞬时流量 .......................................................................................... - 7 -2.读瞬时流速:....................................................................................... - 8 -3读累积流量 .......................................................................................... - 8 - 5.读总量流量单位 ................................................................................. - 10 - 6.读报警状态 ........................................................................................ - 10 - 七、应用举例........................................................................................ - 11 - 1.C语言MODBUS 示例程序............................................................... - 11 - 2.modbus调试软件modbus poll通讯实例....................................... - 13 - 3.modbus调试软件modscan32通讯实例 ......................................... - 15 - 4.组态王6.53通讯实例 ........................................................................ - 17 - 5.力控 6.1通讯实例.............................................................................. - 21 -

modbus通讯协议

Modbus通讯协议 图片: 图片: 图片:

Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。此协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 当在网络上通信时,Modbus协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成应答并使用Modbus协议发送给询问方。 Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。标准的Modicon控制器使用RS232C实现串行的Modbus。Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式,Master 端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。

Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP 协议是一个面向连接的可靠协议。另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通。因此,Modbus协议的可靠性较好。 下面我来简单的给大家介绍一下,对于Modbus的ASCII、RTU和TCP协议来说,其中TCP和RTU协议非常类似,我们只要把RTU协议的两个字节的校验码去掉,然后在RTU协议的开始加上5个0和一个6并通过TCP/IP网络协议发送出去即可。所以在这里我仅介绍一下Modbus的ASCII和RTU协议。 下表是ASCII协议和RTU协议进行的比较: 通过比较可以看到,ASCII协议和RTU协议相比拥有开始和结束标记,因此在进行程序处理时能更加方便,而且由于传输的都是可见的ASCII字符,所以进行调试时就更加的直观,另外它的LRC校验也比较容易。但是因为它传输的都是可见的ASCII 字符,RTU传输的数据每一个字节ASCII都要用两个字节来传输,比如RTU传输一个十六进制数0xF9,ASCII就需要传输’F’’9’的ASCII码0x39和0x46两个字节,这样它的传输的效率就比较低。所以一般来说,如果所需要传输的数据量较小可以考虑使用ASCII协议,如果所需传输的数据量比较大,最好能使用RTU协议。

MODBUS标准通讯协议

MODBUS 标准通讯协议(简版) (基于Modbus 应用协议RTU 通讯模式) 1. 前言 本协议适用于符合MODBUS 标准通讯协议的规定以及在Modbus 网络上以RTU 模式通信运行的设备和应用软件。本协议按照Modbus 应用协议标准制定。 2. 波特率可选范围 代码 6 7 8 9 10 11 12 13 14 波特率 2400 4800 9600 14400 19200 28800 38400 57600 115200 3. RTU 通讯数据传输模式 3.1 RTU 模式每个字节( 11 位 )的格式为 : 通讯传输为异步方式,并以字节(数据帧)为单位。在主站和从站之间传递的每一个数据帧都是11位的串行数据流。 编码系统: 8–位二进制,报文中每个8 位字节含有两个4 位十六进制字符(0–9, A –F) 数 据 位: 1个 起始位 8个 数据位, 首先发送最低有效位 1个 奇偶校验(注:偶校验是要求的,其它模式( 奇校验,无校验 )也可以使用) 1个 停止位 (注 :使用无校验时要求2个停止位) 帧校验域:循环冗余校验(CRC) 3.2 字符的串行传送方式: 每个字符或字节按如下顺序发送(从左到右):最低有效位 (LSB) . . . 最高有效位 (MSB) 通过配置,设备可以接受奇校验、偶校验或无校验。如果无奇偶校验,那么传送一个附加的停止位来填充数据帧使其成为完整的11位异步字符: 3.3 数据编码: Modbus 处理的所有数据按照存储数据的类型可以分为位寄存器(容量为1位)和16位寄存器(容量为16位)两种,它们的宽度都是16位(Data is packed as two bytes per register),协议允许单个选择65536个数据项,而且其读写操作可以越过多个连续数据项直到数据大小规格限制,这个数据大小规格限制与事务处理功能码有关。在Modbus PDU 中从0~65535寻址每个数据。 Modbus 使用一个‘big-Endian ’表示地址和数据项,即最高有效字节在低地址存储,最低有效字节在高字节存储。这意味着当发送多个字节时,首先发送最高有效位例如: 寄存器大小 值 16位 0x1234 发送的第一字节为0x12,然后发0x34。 4. RTU 报文帧结构 Modbus RTU 报文帧格式如下: 地址码 功能码 数据区 错误校验码 2 字节 1字节 1字节 0到252字节 CRC 低 CRC 高

Modbus协议讲解

Modbus协议讲解 一、基本术语 1、字word、字节byte、位bit 1 word = 2 byte; 1 byte = 8 bit. 2、校验码 校验码是由前面的数据通过某种算法得出的,用以检验该组数据的正确性。代 码作为数据在向计算机或其它设备进行输入时,容易产生输入错误,为了减少 这种输入错误,编码专家发明了各种校验检错方法,并依据这些方法设置了校 验码。 常用的校验有:累加和校验SUM、字节异或校验XOR、纵向冗余校验LRC、循环冗余校验CRC…… 3、协议和接口 协议是一种规范和约定,是一种通讯的语言,规定了通信双方能够识别并使用 的消息结构和数据格式。 接口是一种设备的物理连接,指的是在物理层上的定义,像 RS422/RS232/RS485/以太网口等。协议和接口并不是一个概念,不能混淆。 Modbus协议一般运行在RS485物理接口上,半双工的,是一种主从协议。 二、Modbus协议概述

Modbus协议是应用于电子控制器上的一种通用语言,实现控制器之间、控制器由网络和其它设备之间的通信,支持传统的RS232/RS422/RS485和最新发展的以太网设备。它已经成为一种通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中控制。此协议定义了一个控制器能认识使用的消息结构。 Modbus协议是一种请求——应答方式的协议。 三、两种传输方式 1、ASCII模式 ASCII:美国标准信息交换代码 特点: ②消息中每个8bit都作为两个ASCII字符发送 ②1个起始位、7个数据位、1个奇偶校验位和1个停止位(或者两个停止位) ③错误检测域是LRC检验 ④字符发送的时间间隔可达到1秒而不会产生错误 2、RTU模式 RTU:远程终端单元 特点: ①消息中每个8bit字节包含两个4bit的十六进制字符,因此,在波特率相 同的情况下,传输效率比ascii传输方式大 ②1个起始位、8个数据位、1个奇偶校验位和1个停止位(或者两个停 止位)

2019很好的威纶通MODBUS RTU通讯协议与变频器通讯案例

本文研究的是触摸屏通过MODBUS RTU通讯协议与变频器通讯实现变频器的控制。触摸屏采用威纶通TK6070IP,变频器用汇川MD380通用系列。通过触摸屏编程软件,编辑控制画面实现变频器的启动、停止、速度调节、多段速速度设置,通过宏指令实现工程值与实际值的转换。 一、MODBUS RTU 简介: 为了在自动化系统之间、自动化系统和所连接的分散的现场设备之间进行信息交换,如今串行现场总线被主要用作通讯系统。成千上万的应用已经强烈地证明了通过使用现场总线技术,可以节省多至40%的接线、调试及维护的费用。仅仅使用两根电线就可以传送现场设备的所有相关信息,比如输入和输出数据、参数、诊断数据。过去使用的现场总线往往是制造商的特定现场总线,并且同其它现场总线不兼容。如今使用的现场总线几乎是完全公开和标准化的。这就意味者用户可以以最合理的价格选择最好的产品,而不用依赖于每个独立的制造商。Modbus RTU是一种国际的、开放的现场总线标准。作为一种很容易实现的现场总线协议,在全世界范围内,Modbus得到了成功的应用。应用领域包括生产过程中的自动化、过程控制和楼宇自控。MODBUS RTU通讯协议的报文如图1。图1 MODBUS RTU 通讯协议的报文功能码如下: 01H 读取线圈状态。从执行机构上读取线圈(单个位)的内容; 02H 读取离散量输入。从执行机构上读取离散量输入(多个位)的内容; 03H 读取保持寄存器。从执行机构上读取保持寄存器(16位字)的内容; 04H 读取输入寄存器。从执行机构上读取输入寄存器(16位字)的内容; 05H 强置单线圈。写数据到执行机构的线圈(单个位)为“通”(“1”)或 “断”(“0”); 06H 预置单寄存器。写数据到执行机构的单个保持寄存器(16位字); 0FH 强置多线圈。写数据到执行机构的几个连续线圈(单个位)为“通”(“1”) 或“断”(“0”); 10H 预置多寄存器。写数据到执行机构的几个连续的保持寄存器(16位字)。 二、威纶通编程软件介绍: EB8000软件中MODBUS协议的设备类型为0x、1x、3x、4x、5x、6x,还有3x_bit,4x_bit,6x_bit,0x_multi_coils 等,下面分别说明这些设备类型在MODBUS协议中支持哪些功能码。 0x:是一个可读可写的设备类型,相当于操作PLC的输出点。该设备类型读取位状态的时候,发出的功能码是01H,写位状态的时候发出的功能码是05H。写多个寄存器时发出的功能码是0fH。 1x:是一个只读的设备类型,相当于读取PLC的输入点。读取位状态的时候发出的功能码为02H。 3x:是一个只读的设备类型,相当于读取PLC的模拟量。读数据的时候,发出的功能码是04H。 4x:是一个可读可写的设备类型,相当于操作PLC的数据寄存器。当读取数据的时候,发出的功能码是03H,当写数据的时候发出的功能码时10H,可写多个寄存器的数据。 6x:是一个可读可写的设备类型,读取数据的时候,发出的功能码也是03H,与4x不同之处在于写数据的时候发出的功能码时06H,即写单个寄存器的数据。 三、变频器参数设置: F0-02 命令源选择为:通讯命令通道(1正转运行、2反转运行、3正转点动、4反转点动、5自由停车、6减速停机); F0-03 主频率源选择为:通讯给定; F0-28 串口通讯协议选择:MODBUS 协议; Fd-00 通讯波特率:9600 BPS; Fd-01 MODBUS 数据格式:偶校检(8-E-1); Fd-02 本机地址:1 Fc-00—Fc-15 1到16段多段速运行速度

关于51单片机上实现modbus协议

你找一个MODBUS的协议详细资料好好看看,就是一种通讯约定,你按照它规定的格式通讯就可以了 协议发送给询问方。Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。标准的Modicon控制器使用RS232C实现串行的Modbus。Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP 模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通。因此,Modbus协议的可靠性较好。下面我来简单的给大家介绍一下,对于Modbus的ASCII、RTU和TCP协议来说,其中TCP 和RTU协议非常类似,我们只要把RTU协议的两个字节的校验码去掉,然后在RTU协议的开始加上5个0和一个6并通过TCP/IP网络协议发送出去即可。所以在这里我仅介绍一下Modbus的ASCII和RTU协议。下表是ASCII协议和RTU协议进行的比较:协议开始标记结束标记校验传输效率程序处理 ASCII :(冒号)CR,LF LRC 低直观,简单,易调试 RTU 无无CRC 高不直观,稍复杂 通过比较可以看到,ASCII协议和RTU协议相比拥有开始和结束标记,因此在进行程序处理时能更加方便,而且由于传输的都是可见的ASCII字符,所以进行调试时就更加的直观,另外它的LRC校验也比较容易。但是因为它传输的都是可见的ASCII字符,RTU传输的数据每一个字节ASCII都要用两个字节来传输,比如RTU传输一个十六进制数0xF9,ASCII 就需要传输’F’’9’的ASCII码0x39和0x46两个字节,这样它的传输的效率就比较低。所以一般来说,如果所需要传输的数据量较小可以考虑使用ASCII协议,如果所需传输的数据量比较大,最好能使用RTU协议。 下面对两种协议的校验进行一下介绍。 1、LRC校验 LRC域是一个包含一个8位二进制值的字节。LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算LRC,并将它和接收到消息中LRC域中的值比较,如果两值不等,说明有错误。 LRC校验比较简单,它在ASCII协议中使用,检测了消息域中除开始的冒号及结束的回车换行号外的内容。它仅仅是把每一个需要传输的数据按字节叠加后取反加1即可。下面是它的VC代码: BYTE GetCheckCode(const char * pSendBuf, int nEnd)//获得校验码 {

相关文档
最新文档