西门子6ES7253-1AA22-0XA0大量供应
西门子6ES7253-1AA22-0XA0大量供应
1引 言 2 自动枕式包装机系统介绍
[NextPage] 3 电控系统设计
[NextPage] 4 电气配置 |
引 言
现场设备层中的设备种类繁多,有传感器、启动器、驱动器、I/O部件、变送器、阀门等等,当然也包括现场检测仪器仪表设备。PLC是现场设备控制层不可缺少的部分,已经非常普及,如何简便地实现与PLC的交互已经成为众多厂商新的竞争战场。由此产生了人机界面等软件产品,这些产品的出现简化了对PLC的控制、操作,使PLC的应用更加方便;但也有其共同的缺点,价格普遍偏高和可二开发性较差。VB作为“原始”的编程语言在这两方面无疑有着明显优势的,本文结合一个简单的案例,用比较基础的概念讨论如何通过VB实现PC与PLC之间的通信问题,这对刚涉步控制领域的工程师或许是有帮助的。在现场设备层中各式各样的设备都可以和计算机联机,而简单的自动化联机方式就是使用串行通信,VB提供了串行通信控件可以让开发者开发出串行通信的系统程序,以下是对相关问题的粗略讨论。
2 串行通信基本概念
数据通讯中有两种类型的通信形式,即并行通信(Parallel Communication)和串行通信(Serial Communication)。例如,如果有8位数据需要传送,那么并行通信一次就可以完成8位的传输量;而串行一次只能传送1位。图1表示了两种不同的通信模式,常用的串行通信也有两种,分别为RS-232和RS-485。
2.1 RS-232 串行通信
RS-232的信号准位是参考地线而言的,如图2所示。相对于参考接地端1传输端传送数据;接收端则相对于参考接地端2复现出传送端的传送的数据。
图2 RS-232 串行通信示意图
由图2可知,由于两个接地端准位不一定一样,而且很容易受到干扰,所以信号在RS-232线路传输时,很容易产生错误。
2.2 RS-485串行通信
RS-485的信号传输方式如图3所示。
RS-485的信号被传送出去时会分成正负两条线路,当到达接收端后,在将信号相减还原成原来的信号;如果将原始的信号表示成(DT),而被分成的信号分别标示成(D+)及(D-),则DT=(D+)-(D-)。同理,接收端在接收到信号后,也依据上式还原成原来的样子。如果线路受到干扰,两条线路的信号分别为(D+)+Noise与(D-)+Noise。接收端还原信号为(DT)= [(D+)+Noise]-[(D-)+Noise],与先前结果一样,所以RS-485可以有效的防止噪声的干扰。
3 VB的基本概念
VB(Visual Basic)是微软的窗口软件,提供了很多接口成员,对象、属性、事件、方法就是4个重要的接口,VB提供了许多常用的控件。
3.1卷标控件
卷标控件如图4(a)所示,该控件专用于显示文字、数字用,显示如图4(b)所示
3.2 按钮控件
按钮控件如图5(a)所示,该控件使用率很高,提供一个供系统用户操作用的按钮,如图5(b)所示。
3.3 定时器控件
定时器控件如图6所示,该控件的大作用在固定的时间内可执行所设置的程序代码一次。
VB提供了大量的控件,在此不再多述。
4 基于MScomm控件的串行通信
要完成VB与PLC等设备的串行通信要用到MScomm控件, 在此有必要对该控件作较详细的说明。Mscomm是一个非标准控件,需要要手动添加许多项目,其步骤如下。
1) 选择菜单的【工程】
2) 选择【部件】
3) 在弹出的对话框中做如图7的选择。
[NextPage]
图7 对话框界面
4)如图8所示,在部件选项卡就会出现MScomm控件。
图8 MScomm控件
5)基本属性
4.1 MODBUS ASCII
Modbus 分为ASCII和RTU两种,ASCII采用的格式和校验相对简单,本文采用ASCII格式,并仅对使用的功能码进行说明,更多的信息,请参看协议的详细说明。
1)通信格式
LRC算法:ADR H+CMD H+DATA H,然后取2的补码。
[NextPage]
2)功能码
05,写入线圈
01,读线圈状态
06,写入单个字寄存器
4.2 VB与PLC通信的实现
以下举例说明现场设备与PLC通信的实现。
1)控制要求:控制PLC的起动、停止,并显示运行状态(绿色为运行,红色为停止);能够用交替型按钮控制Y0,Y1,并用指示灯显示Y0,Y1状态(绿色为运行,红色为停止);能够对D256,D512两个寄存器进行数值写入的操作。
2)实现思路:PLC起动停止的标志位为M1072,查DVP协议,知道地址为H0C30,按功能码01操作; 同样Y0,Y1的地址分别为H0500,H0501。写入FF00为ON,0000为OFF,按功能码05操作;D256,D512地址分别为H1100,H1200,按功能码06操作即可。
3)VB接口的设计如图10所示。
[NextPage]
图10 监控程序界面
用按钮控制PLC的起动停止,Y0、Y1的ON/OFF及D256、D512写完数据的发送;用Shape组件做指示灯,表示PLC的运行状态和Y的状态;用timer组件不停的读取M1072的状态,以判断PLC的运行情况;用MScomm控件实现PC与PLC的通信。
4)编程实现的代码构成
(1) LRC算法校验的实现
Public Function LRC(str As bbbbbb) As bbbbbb
c = 0
l = Len(str)
For c = c + 1 To l
c_data = Mid$(str, c, 2)
d_lrc = d_lrc + Val("&H" + c_data)
c = c + 1
Next c
If d_lrc > &HFF Then
d_lrc = d_lrc Mod &H100
End If
h_lrc = Hex(&HFF - d_lrc + 1)
If Len(h_lrc) > 2 Then
h_lrc = Mid(h_lrc, Len(h_lrc) - 1, 2)
End If
LRC = h_lrc
End Function
(2) 运行的开始就判断PLC的状态并设置标志位
'初次运行打开串口,并显示PLC运行状态
Private Sub bbbb_Load()
Dim s1 As bbbbbb
Dim s2 As bbbbbb
Dim s22 As bbbbbb
Dim s3 As bbbbbb
Dim s4 As bbbbbb
MSComm1.PortOpen = True
s2 = "01010C300001"
s22 = LRC(s2)
s1 = ":" + s2 + s22 + Chr$(13) + Chr$(10)
MSComm1.Output = s1
s3 = MSComm1.bbbbb
s4 = Mid$(s, 6, 8)
If s4 = "0C30FF00" Then
plc = 1 'PLC为运行标志
Else
plc = 0 'PLC为停止标志
End If
End Sub
(3) 下面一段为用指示灯表示PLC的运行状态
Private Sub Timer5_Timer()
Dim s1 As bbbbbb
Dim s2 As bbbbbb
Dim s22
Dim s3 As bbbbbb
Dim s4 As bbbbbb
s2 = "01010C300001"
[NextPage]
s22 = LRC(s2)
s1 = ":" + s2 + s22 + Chr$(13) + Chr$(10)
MSComm1.Output = s1
s3 = MSComm1.bbbbb
s4 = Mid$(s3, 8, 2)
If s4 = "31" Then
plc = 1 'PLC为运行标志
Else: If s4 = "30" Then plc = 0 'PLC为停止标志
End If
If plc = 1 Then
Label2.Caption = "PLC正在运行......"
Shape1.FillColor = RGB(0, 255, 0) 'green
Else
Label2.Caption = "PLC已经停止"
Shape1.FillColor = RGB(255, 0, 0) 'red
End If
End Sub
(4) PLC的起动与停止
'起动PLC
Private Sub start_Click()
Dim strout As bbbbbb
Timer5.Enabled = False
str = "00050C30FF00" 'M1072 为PLC起动停止标志位。查地址表,M1072为OC30.FF00为置
ON,0000为置OFF。
'以上都是固定格式,要牢记。
LRCC = LRC(str) '计算 str的lrc校验码。
strout = ":" + str + LRCC + Chr$(13) + Chr$(10) '欲传送之数据。13为D,10为A
MSComm1.Output = strout
Timer5.Enabled = True
End Sub
'停止PLC
Private Sub stop_Click()
Dim strout As bbbbbb
Timer5.Enabled = False
str = "00050C300000"
LRCC = LRC(str)
strout = ":" + str + LRCC + Chr$(13) + Chr$(10)
MSComm1.Output = strout
Timer5.Enabled = True
End Sub
Y0、Y1的ON/OFF与PLC起动/停止的控制方式相同,指示灯的表示方式也相同。D256,D512数据写入的操作类似,限于篇幅其它代码就不再列出了。
5 结束语
VB语言易于编程使用,为与串行设备的通信提供了很大的方便。台达PLC采用标准的目前广为流行的MODBUS协议,为实现PLC与监控计算机的通信提供了简化的平台。由于台达所有的机电产品都支持MODBUS协议,所以,掌握了VB与PLC通信过程,也就等于掌握了PC与台达所有机电产品的通信。