基于PLC和PC的分布式计算机监控系统的设计

论文价格:0元/篇 论文用途:仅供参考 编辑:论文网 点击次数:0
论文字数:**** 论文编号:lw202391206 日期:2025-01-15 来源:论文网

  将故障分类:

  PLC后备电池状态转存至23通道:

(2)上位机程序:主要负责与PLC进行串口通信,读取PLC内部通道状态加以分析,在主界面上实现故障报警、显示、故障点信息查询、故障信息记录查询以及节点信息修改查询等功能。

  上位机PC与PLC通讯时,按应答方式进行,由上位计算机发给PLC一组ASCⅡ码字符数据,这一数据称为命令块。PLC收到命令块后经分析认为命令正常,则按照命令进行操作,将操作结果返回给上位计算机,PLC返回给上位计算机的这一组数据称为响应块。若PLC收到命令后经分析确认命令不正常,则返回给上位计算机错误命令响应块。上位计算机和PLC通讯时,PLC是被动的,必须由上位计算机给PLC发出命令块,PLC作出响应发还给上位计算机响应块。

  本程序采用多重通讯方式,多重通讯时首帧以单元号(即HOST LINK的机号)开始,然后为报头、报文、校验码、结束符(只有一帧时)或分隔符(多帧时)。中间帧以报文开始,然后为校验码、分隔符,中间帧报文每帧最多125个字符。尾帧以报文开始,然后为校验码、结束符,尾帧报文最多124个字符。

  校验码FCS(Frame Check Sequence)是8位(bit)二进制数转换成的2位字符。这8位二进制数是一帧中校验码前的所有字符的ASCⅡ码按位异或的结果。转换成字符时按照2位十六进制数字转换成对应的数字字符。

  PLC收到上位计算机发出的命令块后,经分析操作返回给上位计算机响应块,在响应块中含有响应码。如果PLC正常完成上位计算机的命令,则响应码为00,否则,响应码中含有出错信息。

  上位机PC与PLC的串口通信部分:

  Timer2的值设为2000,即每隔2s上位机PC向PLC发送一次读取命令,读取信息。

  Private Sub Timer2_Timer()

  Dim a(10) As String

  a(0) = "@00RR00200004" ’单元号和报头报文

  a(1) = FCS(a(0, )) ’命令格式中的校验位

  a(2) = a(0) + a(1) + "*" + Chr$(13) ’命令码

  MSComm1.Output = a(2) ’向PLC发送命令

  a(3) = MSComm1.Input

  a(4) = Mid$(a(3), 6, 2) ’响应码

  Call Message(a(4)) ’调用响应码的错误信息

  If errortime &> 3 Then

  Timer2.Enabled = False

  intr = MsgBox(“通讯错误,是否退出检查连接?”, vbYesNoCancel + vbExclamation, “通讯连接中”)

  If intr = vbYes Then

  。。。。。。。。。

  Else

  。。。。。。。。。

  End If

  End If

  ’如果通讯连接正常则读取数据:

  a(6) = Mid$(a(3), 24, 2) ’响应块中的校验码

  a(7) = Mid$(a(3), 1, 23)

  a(8) = FCS(a(7)) ’计算校验码

  If a(8) = a(6) Then ’比较校验码是否相同

  a(9) = Mid$(a(3), 8, 16)

  a(10) = Hex2Bin$(a(9))

  z = a(10) ’得到PLC内部通道数据

  Else

  MsgBox (“校验码不正确”)

  。。。。。。。

  End If

  校验码计算函数:

  Function FCS(ByVal inputstr As String) As String

  Dim slen, n, xorresult As Integer

  Dim tempfcs As String

  slen = Len(inputstr)

  xorresult = 0

  For n = 1 To slen

  xorresult = xorresult Xor Asc(Mid$(inputstr, n, 1))

  Next n

  tempfcs = Hex$(xorresult)

  If Len(tempfcs) = 1 Then

  tempfcs = "0" + tempfcs

  End If

  FCS = tempfcs

  End Function

  将响应码中的数据转换为二进制数据:

  Function Hex2Bin$(HexValue$)

  Const BinTbl = "0000000100100011010001010110011110001001101010111100110111101111"

  Dim X, Work$

  Work$ = ""

  For X = 1 To Len(HexValue$)

  Work$ = Work$ + Mid$(BinTbl, Val("&&h" + Mid$(HexValue$, X, 1)) * 4 + 1, 4)

  Next

  Hex2Bin$ = Work$

  End Function

  监控程序功能:故障信息及节点查询如图4;PLC电池故障显示如图5;数据库将记录系统运行状态,记录故障发生的时间及相关信息,故障修复的时间及相关信息并提供查询功能如图7;可以查看主界面上位号所对应的PLC位、名称、触点状态等信息以便于故障分析,如图8;系统运行总状态指示如图6所示。



6 系统运行状态指示


7 数据库查询


8 位号对应信息查询

四、监控程序完成的功能

  1.故障指示:有报警时,对应指示灯及总状态指示灯将闪烁并声音报警,右上方显示故障信息,单击闪烁指示灯,将停止闪烁,并显示当前状态,报警为红色,正常为浅黄色;如果故障修复,则对应指示灯停止闪烁,当前状态由红色变为浅黄色。单击指示灯,则可以查看各个节点信息,右上方图框会显示该节点的位号,对应PLC位以及该报警点名称和触点状态。右上方文本框有相应的指示灯显示当前系统总运行状态,红色为报警绿色为正常。

  2.历史记录:数据库记录系统运行状态,记录报警的位号、名称、PLC位、触点状态、以及报警时间等内容,当故障解除后同样记录解除的位号、名称、PLC位、触点状态、以及故障解除时间。数据库中有位号名称对应表,以方便查询每个点的对应关系。

  3.通讯连接:用于重新连接上位机和下位机间的通讯,当单击工具栏中连接按钮时,程序检测通信连接。

  4.声音测试:用于测试声音报警是否正常。若正常,点击此按钮时系统发出报警声音。

  5.消音:用于消除系统报警时的声音,不影响指示灯闪烁报警。

五、结束语

  本系统是为齐鲁石化氯碱厂生产车间设计的电路故障报警系统,现已投入运行。在实际应用中提供了真实可靠的生产实时数据,运行情况良好。为企业减少了人力资源浪费,化工厂生产车间环境较差,改善了工人的工作环境降低了工作强度,并实现了集中监控。本系统的可扩展性也很好的适应了车间改良的需求,可根据用户的要求增加监控点并将本车间故障分类输出到上一级监控站,受到了用户的好评。

参考文献:

  1.徐德 孙同景 《可编程序控制器(PLC)应用技术》 山东科技出版社 2000

  2.李勇帆 《Visual Basic 6.0程序设计与应用》 人民邮电出版社 2006

  3.李长林 《Visual Basic串口通信技术与典型实例》 清华大学出版社 2006

转贴于
如果您有论文相关需求,可以通过下面的方式联系我们
客服微信:371975100
QQ 909091757 微信 371975100