企业: | 控制网 | 日期: | 2008-07-14 |
---|---|---|---|
领域: | 人机界面 | 点击数: | 937 |
1. 引言 随着经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通拥塞已成为一个国际性的问题。因此,设计可靠、安全、便捷的多功能交通灯控制系统有极大的现实必要性。通常情况下,交通信号灯控制的主要缺陷是交通信号灯控制系统缺乏有效的应急措施,导致十字路交通受阻,造成不必要的经济损失。为此,我们考虑设计十字路口的监控系统。以便方便、快速的对交通灯控制。Siemens公司生产的PLC由于价格低、适应工业现场以及强大联网功能特点被广泛使用。考虑到这些因素,本系统以PLC作为下位机。上位机可以采用VC++、VB、Delphi等高级语言,由于本系统实现的功能相对简单,涉及的数据处理和数据管理要求不是太高,因此考虑用价格便宜,通讯容易实现的VB作为上位机。 2. 系统构成 ![]() 图1 系统构成 系统构成如图1 3. 操作流程及通讯原理 ![]() d 在所示的界面3上点击右边栏的“双击刷新”按钮,以便搜寻正确的波特率。 e 将程序下载至PLC。 f 将 PLC处于RUN模式。 g 打开VB界面,点击菜单的“运行”选项,出现图4的所示的监控界面,在监控界面中输入需要传输的数据。 h 单击图4的监控界面上的开始按钮,通讯开始。 3.2 通讯原理 3. 4. VB中的MSComm控件简介 4.2 MSComm控件的属性 5. 方案的具体实现 ![]() 5.1.1 VB发送数据给PLC MSComm1.Output = Text2.Text & Text3.Text &Text4.Text & Text5.Text & Chr(10) ‘利用MSComm控件向PLC发送数据 (文本框内分别为控制交通灯南北直行、南北弯行、东西直行、东西弯行的时间) 说明:由于PLC识别从VB发送过来的ASCII码,所以这些文本框内为经过运算的, PLC的识别的ASCII码。这里用 p = Val(txt1.Text) Text2.Text = Chr((p - 3) * 10)等语句。 5.1.2 VB接收PLC发送过来的数据 Private Sub MSComm1_OnComm() If MSComm1.CommEvent = comEvReceive Then ‘如果接收到字符 S1 = MSComm1.Input ‘把接收缓冲区内的数据赋值给临时变量"S1" If (S1 = Chr(&H1B)) And (Len(SCOMS) > 2) Then ‘如果变量"S1"(接收缓冲区内的数据接收到起始字符‘&H1B‘,并且变量"SCOMS"中的字节数大于2),则 SCOMS = "" 清空变量"SCOMS"中的数据 Else ‘否则 If S1 <> Chr(&HD) Then ‘如果变量"S1"没有接收到结束字符‘&H0D‘,则 SCOMS = SCOMS&S1 ‘将"S1"中的数据累加到"SCOMS"中 Else ‘否则 …… ‘数据处理 End sub ‘ 结束 Text5.text=MSComm1.input xt5.T ‘ text5.Text为存放PLC发送过来的数据 End Sub 5.2下位机程序设计 5.2.1 PLC 接收VB发过来的数据 (PLC接收缓冲区的分配如图5) RCV VB100, 0 ![]() 图6 PLC 的接收缓冲区的数据分配 5.2.2 PLC向VB发送数据(PLC发送缓冲区的分配如图6) MOVB 8, VB400 //设置发送字节个数为8,发送缓冲区为VB400 MOVB 16#1B, VB401 //设置发送信息的起始字符为"16#1B" MOVB 16#0D, VB408 //设置发送信息的结束字符为"16#0D", MOVB ‘1‘, VB402 NOT MOVB ‘0‘, VB402 //若Q0.0有输出,VB402为"1",否则为"0" XMT VB400, 0 //在端口0向用户回送信息,发送缓冲区指向VB400 ![]() 图7 PLC的发送缓冲区的数据分配 6. 结论 通过VB实现与PLC通讯。使PLC的工作纳入微型计算机的管理之下。经试验验证,编制的VB程序在Microsoft windows XP系统下和PLC之间通讯运行良好、无误码,能有效的解决十字路口交通的运行状况。 |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
1.我有以下需求: | |
|
|
2.详细的需求: | |
* | |
姓名: | * |
单位: | |
电话: | * |
邮件: | * |