正在加载图片...
《工业控制计算机》2006年19卷第8期 9 重复步骤2到步骤5,进行下一个8位数据的处理: 在锥位实时显示、反馈控制系统中,可在定时器Timer1的 最后得到的CRC寄存器即为CRC码。 Timer事件中工控机定时查询数字显示表显示数据,Interval属 根据上述规则,编写VB下CRC校验码程序如下: 性值不能设置低于100ms。 Public Function CrcResult(ByVal Data As Long,ByVal Genpoly (6)数字显示表数值读取 As Long.ByVal CrcData As Long)As Long /计算校验码 Modbus协议通过主设备(工控机)、从设备(数字显示表) Dim i As Integer 间的询问应答环路交换信息。 Data =Data2 图2是Modbus协议的询问应答环路。 For i =8 To 1 Step -1 Data =Fix(Data /2) 上设备查询消息 If ((Data Xor CrcData)And 1)Then 设各地址 CrcData Fix(CrcData /2)Xor Genpoly 功能代码 Else 派段1 数话设n CrcData Fix(CrcData 2) 散据政 研误湖 End If 从设备回成清息 Next i CrcResult =CrcData 图2 Modbus协议的询问应答环路 End Function DMP-ANFA数字显示表采用Modbus RTU通讯规约,利 计算得到的CC校验码添加到命令时,必须按低位字节在 用通讯命令,可以进行读取点(“保持寄存器”)或返回值(“输入 前、高位字节在后的顺序放置。例如,对本通信软件界面中工控 寄存器”)的操作。当通讯命令发送至仪表时,符合相应地址码的 机查询命令调用计算校验码函数得到其CRC码为0BC4,则命 设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执 令中最后两个字节是C4、0B。 行相应的任务:然后把执行结果返送给发送者。保持和输入寄存 (4)MSComm控件的触发事件 器都是16位(2字节)值,并且高位在前、低位在后。这样用于仪 在VB的控件工具箱中,提供了一个使用非常方便的串行 表的读取点和返回值都是2字节。由于一些可编程控制器不用 通信控件MSComm,它全面地提供了使用串行通信上层开发的 功能码03,所以功能码O3被用作读取点和返回值。从机(数字 所有细则,串行通信的实现既可以采用中断方式,又可以采用查 显示表)响应的命令格式是从机地址、功能码、数据区及CRC 询方式。MSComm控件提供了实现串行端口中断功能的On- 码。如果出错就不发送任何信息。 Comm事件,该事件是唯一的,可以截取串口的任何消息,当有 数字显示表应答命令中的地址码、功能码必须与工控机机 串口事件或错误发生时,VB程序就会自动转入OnComm事件 查询命令相同:命令中的模拟量数据按高位字节在前、低位字节 处理程序中.CommEvent属性存有串口最近的事件或错误的数 在后的顺序放置,而CRC码与此相反,是低位字节在前、高位字 值代码,可以在程序中随时读取CommEvent属性值来了解通 节在后。 信的状况,OnComm事件是和CommEvent属性密切相关、一 以工控机通信软件界面的显示为例,介绍数字显示表数值 起使用,当任何一个OnComm事件或错误发生时,都会使得 读取的命令格式和内容。 CommEvent属性值改变。在OnComm事件处理过程中,可以 工控机和数字显示表之间采用查询与应答方式进行通信, 通过判断CommEvent属性值,对于不同的属性值转入不同的 每一种查询命令都对应着一种应答。工控机发出的查询命令格 事件处理过程。CommEvent属性的返回值为2时,表示接收缓 式如表1所示。 冲区中的受到RThreshold个字符(本文设为9),这时可以引发 表1工控机查询偷令格式 接收中断事件,当RThreshold属性设为O时,不引发接收中断 事件。 地址码功能码起始数据高、低字节数据长度高,低字节CC校验码 本例OnComm事件处理程序: 01 03 0000 00 C4 0B Private Sub MSComm1_OnComm() 地址码“01”表示工控机要求查询01号数字显示表,功能码 Dim bytInput()As Byte Dim intInputLen As Integer “03”表示数字显示表要求读保持寄存器操作,起始数据“00 intInputLen MSComm1.InBufferCount 00”表示从第1个数据开始读,数据长度“0002”表示要求读取 ReDim bytInput(intlnputLen) 2个模拟量数据。 bytInput MSComm1.Input 数字显示表接收到表1所示命令时的正确信息应答格式如 Call InputManage(bytInput,.intInputLen)/处理接受到的命令 表2所示。 Call GetDisplayText /以十六进制显示接受字符 表2数字显示表应答命令格式 End Sub 地址码功能码数据字节数据高、低字节 数据高.低字节CC校验码 (5)其他几项重要处理 当程序启动时,打开串口:退出程序时,关闭串口 01 03 04 00 00 oC 66 7 19 (MSComm1.PortOpen=False),以便使各种操作在串口打开状 表中“01、03”如前所述,“04”为数字显示表发送数据的字 态下进行。 节个数,即数据共发送了4字节(2个数据):“00000C66”为 由于控制软件中,串行通信发送和接收的数据多为十六进 2个数据的高、低字节值。 制,因此,须进行以下两种操作:字符串表示的十六进制数据转 由于数字显示表应答数据为十六进制数,所以在保留小数 化为相应的字节串:字符表示的十六进制数转化为相应的整数。 (下转第11页) 1994-2011 China Academic Journal Electronic Publishing House.All rights reserved. http://www.cnki.net《工业控制计算机》!""# 年 $% 卷第 & 期 重复步骤 ! 到步骤 ’,进行下一个 & 位数据的处理; 最后得到的 ()( 寄存器即为 ()( 码。 根据上述规则,编写 *+ 下 ()( 校验码程序如下: ,-./01 2-314053 (61)78-/4 9+:*;/ <;4; =8 >53?@ +:*;/ A73B5/: =8 >53?@ +:*;/ (61<;4; =8 >53?C =8 >53? D D 计算校验码 <0E 0 =8 F347?76 <;4; G <;4; H ! 256 0 G & I5 $ J47B K$ <;4; G 20L9<;4; D !C FM 99<;4; N56 (61<;4;C =3O $C IP73 (61<;4; G 20L9(61<;4; D !C N56 A73B5/: Q/87 (61<;4; G 20L9(61<;4; D !C Q3O FM R7L4 0 (61)78-/4 G (61<;4; Q3O 2-314053 计算得到的 ()( 校验码添加到命令时,必须按低位字节在 前、高位字节在后的顺序放置。例如,对本通信软件界面中工控 机查询命令调用计算校验码函数得到其 ()( 码为 "+(S,则命 令中最后两个字节是 (S、"+。 (S)TJ(5EE 控件的触发事件 在 *+ 的控件工具箱中,提供了一个使用非常方便的串行 通信控件 TJ(5EE,它全面地提供了使用串行通信上层开发的 所有细则,串行通信的实现既可以采用中断方式,又可以采用查 询方式。TJ(5EE 控件提供了实现串行端口中断功能的 U3V (5EE 事件,该事件是唯一的,可以截取串口的任何消息,当有 串口事件或错误发生时,*+ 程序就会自动转入 U3(5EE 事件 处理程序中。(5EEQW734 属性存有串口最近的事件或错误的数 值代码,可以在程序中随时读取 (5EEQW734 属性值来了解通 信的状况,U3(5EE 事件是和 (5EEQW734 属性密切相关、一 起使用,当任何一个 U3(5EE 事件或错误发生时,都会使得 (5EEQW734 属性值改变。在 U3(5EE 事件处理过程中,可以 通过判断 (5EEQW734 属性值,对于不同的属性值转入不同的 事件处理过程。(5EEQW734 属性的返回值为 ! 时,表示接收缓 冲区中的受到 )IP678P5/O 个字符(本文设为 %),这时可以引发 接收中断事件,当 )IP678P5/O 属性设为 " 时,不引发接收中断 事件。 本例 U3(5EE 事件处理程序: ,60W;47 J-. TJ(5EE$XU3(5EE9C <0E .:4F3B-49C =8 +:47 <0E 034F3B-4>73 =8 F347?76 034F3B-4>73 G TJ(5EE$YF3+-MM76(5-34 )7<0E .:4F3B-49034F3B-4>73C .:4F3B-4 G TJ(5EE$YF3B-4 (;// F3B-4T;3;?79.:4F3B-4@ 034F3B-4>73C D D 处理接受到的命令 (;// A74<08B/;:I7L4 D D 以十六进制显示接受字符 Q3O J-. (’)其他几项重要处理 当 程 序 启 动 时 , 打 开 串 口 ; 退 出 程 序 时 , 关 闭 串 口 (TJ(5EE$Y,564UB73G2;/87),以便使各种操作在串口打开状 态下进行。 由于控制软件中,串行通信发送和接收的数据多为十六进 制,因此,须进行以下两种操作:字符串表示的十六进制数据转 化为相应的字节串;字符表示的十六进制数转化为相应的整数。 在锥位实时显示、反馈控制系统中,可在定时器 I0E76$ 的 I0E76 事件中工控机定时查询数字显示表显示数据,F3476W;/ 属 性值不能设置低于 $""E8。 (#)数字显示表数值读取 T5O.-8 协议通过主设备(工控机)、从设备(数字显示表) 间的询问应答环路交换信息。 图 ! 是 T5O.-8 协议的询问应答环路。 图 ! T5O.-8 协议的询问应答环路 <T,K=R2= 数字显示表采用 T5O.-8 )IZ 通讯规约,利 用通讯命令,可以进行读取点(“保持寄存器”)或返回值(“输入 寄存器”)的操作。当通讯命令发送至仪表时,符合相应地址码的 设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执 行相应的任务;然后把执行结果返送给发送者。保持和输入寄存 器都是 $# 位(! 字节)值,并且高位在前、低位在后。这样用于仪 表的读取点和返回值都是 ! 字节。由于一些可编程控制器不用 功能码 "[,所以功能码 "[ 被用作读取点和返回值。从机(数字 显示表)响应的命令格式是从机地址、功能码、数据区及 ()( 码。如果出错就不发送任何信息。 数字显示表应答命令中的地址码、功能码必须与工控机机 查询命令相同;命令中的模拟量数据按高位字节在前、低位字节 在后的顺序放置,而 ()( 码与此相反,是低位字节在前、高位字 节在后。 以工控机通信软件界面的显示为例,介绍数字显示表数值 读取的命令格式和内容。 工控机和数字显示表之间采用查询与应答方式进行通信, 每一种查询命令都对应着一种应答。工控机发出的查询命令格 式如表 $ 所示。 表 $ 工控机查询命令格式 地址码“"$”表示工控机要求查询 "$ 号数字显示表,功能码 “"[”表示数字显示表要求读保持寄存器操作,起始数据“"" ""”表示从第 $ 个数据开始读,数据长度“"" "!”表示要求读取 ! 个模拟量数据。 数字显示表接收到表 $ 所示命令时的正确信息应答格式如 表 ! 所示。 表 ! 数字显示表应答命令格式 表中“"$、"[”如前所述,“"S”为数字显示表发送数据的字 节个数,即数据共发送了 S 字节(! 个数据);“"" "" "( ##”为 ! 个数据的高、低字节值。 由于数字显示表应答数据为十六进制数,所以在保留小数 (下转第 $$ 页) 地址码 功能码 起始数据高、低字节 数据长度高、低字节 ()( 校验码 "$ "[ "" "" "" "! (S "+ 地址码 功能码 数据字节 数据高、低字节 数据高、低字节 ()( 校验码 "$ "[ "S "" "" "( ## \2 $% %
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有