西门子6ES222-1EF22-0XA0大量现货
西门子6ES222-1EF22-0XA0大量现货
0 引言
打包机是现代高速线材生产线特有的设备,它集机械、液压、电气控制于一体,位于高线的精整区域。打包机将由C型钩运来的盘卷经过打包机压紧,沿线卷圆周方向成900等分打4个平行结头。打包后线卷小长度可达0.5 -0.6m,大大方便了盘卷的储藏和运输。
韶关市伯顿工业技术有限公司设计和制造的BT4600型打包机,其电气控制系统动作准确、可靠、智能化程度高。控制系统采用分布式VO进行数据采集和控制,降低了接线成本,提高了数据安全性,增加了系统灵活性;实时监控打包机的状态,便于操作维修人员对设备进行监控和及时发现设备所存在的隐患,及时采取有效措施,避免事故的扩大化。压实车、线道架的速度和打包线张力能自动跟随校正,保证了压实和捆紧效果。
1 系统结构及工艺过程
1.1 系统结构
高线打包机是一套非常复杂的机电液一体化的全自动智能控制设备。它包括了几方面的自动控制:位置控制、运动控制、速度控制、液压控制、报警控制、联锁控制和顺序控制等。打包机PLC控制系统结构如图1所示,按功能可以划分成以下3大块:①外围设备,这部分包括液压润滑站、主控台、配电柜;②打包机主体设备,包括4个打包头、2台压实车、1个升降台、4个喂线轮、线库和线道架;③现场总线,用于主控台和打包机、液压站之间的信号连接和通信。
图1打包机PLC控制系统结构图
由图1可知,打包机的控制比较分散,因此采用基于DP总线的分布式vo控制系统设计。PLC控制系统由1套S7-300 CPU主站、7套ET200S从站和1套MP277按键屏组成。DP主站选用CPU 317-2PN/DP,是整个控制系统的中心。A 101 , A201 , A202 , A203 ,A204,A205这6个从站均选用6ES7 151-1 AA05-0ABOET-2005 IM 151 DP接口模板。其中,A101站用作主控台的本地控制和用户接口;A201站用作线库、举升台和压实车驱动的控制;A202站用作1#,2#打包单元的控制和i"压实车位置检测;A203站用作3#,4#打包单元的控制;A204站用作1#~4#,喂线单元的控制;A205站用作线道架的控制和2#压实车位置检测。All站为智能从站,选用6ES7 151-7AA21-0ABO ET-200S IM 151带CPU的DP接口模板,集成24 kB工作内存,用作液压润滑站的控制。
1.2 工艺过程位
夹紧器闭合锁定,PF线自动控制系统发出开始打包
当带有盘卷的C型钩停在打包机中心线位置时,定指令启动打包机。打包机检测信号布置图如图2所示。
图2 打包机检测信号布置图
打包机自动打包工艺流程说明如下。
①预压紧。1#,2#压实车在液压缸的驱动下朝盘卷方向同时运动,线道架从压实车上开始朝前运动,举升台往上运动到盘卷刚好与C型钩之间保持着自由状态。
②压紧。2#压实车刚好接触到盘卷边时(S8光电开关动作),举升台继续上升托起盘卷,然后压实车压紧盘卷,同时线道架靠拢至关闭(电感传感器S12动作)。
③开始喂线,冲压就绪。液压马达驱动送线机构送出打包线,同时锁定1#,2#压实车。
④停止喂线.夹紧线头。打包线沿着线道到达扭结装置,在碰到夹紧装置的挡板时停止喂线,打包线头部被夹紧。
⑤拉紧打包线。扭结装置向内运行移动到打包位置,兜线轮打开,同时喂线轮反转,打包线被拉紧,剩余的线被送回线库。
⑥扭结,剪切。喂线轮停止,脉冲编码器给出指示后,扭结。扭结完成,打包线被剪断。这时打包完成。
⑦返回初始位置。打包结束后,1",2"压实车返回初始位置,线道架返回起始位置,举升台返回起始位置。
自动打包机循环打包流程如图3所示。
图3 打包机循环打包流社图
打包好的盘卷挂在C型吊钩上,打包机控制系统向PF线控制系统发出打包完成指令。
由打包工艺过程分析可知,打包机实现快速准确的打包控制,除了要求各个检测信号正常外,还必须要求升降台的高度位置要控制准确,压实车要快速预压和冲压就绪,打包线速度控制合适,线道架能快速关闭。升降台位置,2台压实车位置和4道打包线速度控制分别采用编码器G3,G1和G2 ,1S18一4518来实现,编码器型号选用6ES7 138}DA04-0ABO型高速计数模块24 VDC/100 kHz。
2 通信功能的设计
2.1 通伯网络的设计
通信网路可查看图1所示系统结构图。主站CPU317、人机界面MP277与上位机之间通过RJ45口用双绞线通信,CPU的IP地址为192.168.0.3 , MP277的IP地址为192.168.0.1。主站与HMI , DP从站之间采用DP屏蔽双绞铜线通信。主站、HMI, A101从站、A201从站、A202从站、A203从站、A204从站、A205从站和All智能从站的DP地址分别为3,12,11,21,22,23,24 ,25 ,8。主站直接访问远程vo从站的地址。
2.2 主站与智能从站主从通信方式的组态
DP主站不是直接访问智能DP从站的输人/输出,而是访问CPU的输人/输出地址空间的传输区,由智能从站的CPU处理该地址区与实际的输人/输出之间的数据交换。主站与智能从站之间的数据交换是由PLC的操作系统周期性自动完成的,不需要用户编程。
主站和智能从站之间的DP主从通信地址组态如表1所示。点击DP从站对话框的“组态”选项卡,点击“新建”按钮,在弹出的对话框中。按表1的内容设置通信模式、输人输出地址、交换区长度和单位等参数。
设置通信用的输入/输出区时,应确保DP主站的一个输出区分配给DP从站的一个输人区,反之亦然。组态完成后,返回主站的硬件组态窗口,编译保存组态结果。
2.3 DP主从通信信息的设计
打包机的通信信号共59个。主从站之间的通信数据交换信号主要有:通信正确信号,急停信号,液压泵的启停、运行、封锁和故障信号,循环泵和加热器的启停、运行、封锁和故障信号,油位、油温高低检测信号,油温值等。
3 主要控制功能的设计
打包机的PLC控制系统的功能主要包括初始位置控制、手动控制、压实车运动控制、压实力控制、举升台控制、线道架运动控制、送线系统控制、打包线速度控制、扭结装置控制、液压系统控制和通信等。下面介绍部分主要控制功能。
3.1初始位t控制
打包机在初始位置才能启动自动模式。打包机原位的条件为:一是压实返回初始位置,二是打包头返回初始位置。压实原位的条件为:1#压实车在后限位S3 ,2#压实车在后限位S6,举升台在下限位S10,线道架在后限位S14。打包头原位的条件为:扭结装置在初始位SS,打包头在初始位S20。如果系统不满足原位条件,则通过主控台上的压实操作选择开关和打包头操作选择开关,手动复位操作。
3.2 压实车运动控制
压实车的主要任务是完成盘卷的对中压实功能,其控制主要包括压实车的逻辑控制、对中控制、位置和压实力的计算。其中,逻辑控制主要完成1 x `2x压实车的前进、锁定、后退以及与打捆的联锁等功能。位置控制的主要任务是计算2台压实车的位移,产生压实过程中高速前进、低速前进、低速后退和压实完成等信号,并计算盘卷长度和判断盘卷对中。
盘卷长度计算公式如式(1)所示。
对于压实车的对中控制,将盘卷偏移量S。作为给定信号、压实车的位移差(Spp1-SPP2)作为反馈信号,输人PID运算器,产生的输出用于控制2"压实车的速度值,从而保证压实完成后盘卷中心与吊钩中心重合,达到使吊钩平衡的目的。
3.3 线道架的控制
线道架的运动曲线如图4所示,图中虚线表示极限运行轨迹。
线道架的运动部分安装在2#压实车上,由一台液压马达驱动;固定部分安装在1#压实车上。线道架除了跟随压实车运动外,运动部分还有相对压实车的移动过程。线道架比较轻,运动速度快,除了减速控制外,还安装了减震器进行冲击防护。线道架的运动与压实车的运动需要配合良好。打包机启动后伸出减震器,预压紧完成发出指令(GC_ FWD),启动线道架高速( V111)前进,运动到前进减速位S15后转为低速(VL1)前进;线道架合拢( S12得电),启动送线,同时收回减爬器。在送线打程中,为了保持线道架处于有效合拢状态,液压马达低速工作。打包完成后发出指令( GC_REV ),线道架先高速(v112)后退,到位置S16时转为低速(吃)退回原位S14。加装前进极限位S13检测,线道架前进到S13立即停止。
3.4 打包线速度控制
打包线的速度控制有高速送线、低速送线、高速抽紧、低速抽紧和低速收线等过程,而检测信号只有打包线在喂线单元检测S4和打包线预进打包头检测S2两个。送线速度的控制信号需由脉冲编码器S18配合传感器来实现。打包线的速度控制曲线如图5所示。
喂线启动命令(START}FEED),喂线轮液压马达高速(VHI)正转,打包线沿线道环绕盘卷,接近打包头时(即编码器S18发出8 200个脉冲),喂线轮低速正转(VL1),打包线进人打包头(S2下降沿到来),继续走420个脉冲到达挡块,完成送线过程。当打包头夹紧完成时,抽紧信号(BU ST11)到,喂线轮高速(Vta)反转,当编码器S18的脉冲数不变化时,表示一次拉紧结束;兜线轮打开后,喂线轮进人低速( Vts)反转,当编码器S18的脉冲数不再变化时,表示二次拉紧结束。当扭结、剪切完成,打包头返回信号(BU_ ST19)到时,喂线轮低速(v+)反转,进行收线,当打包头初始位盆( S20)信号到,且喂线单元有打包线(S4有信号)时,收线结束,打包完成。若打包头返回初始位置,喂线单元无打包线(S4无信号),表示打包故障,需要二次打包。
4 实时监控功能的设计
打包机的HMI采用西门子公司的MP277 10"key实时监控,便于现场操作员操控和监视打包机。HMI监控画面采用西门子的WinCC flexib1e2008软件开发,共18幅,主要有以下功能。
打包机主控画面,可以实现手动与自动地切换、进人其他监控画面,监视打包机整体运行状态,监视盘卷状态,记录打包数量和盘卷长度等。
4个打包头监视画面,用于打包头、喂线单元、扭结装置、打包线等的位置检测和运动状态监视。
压实状态监控画面,可监视压实车、线道架、举升台的位置检测,实时显示压实车和线道架的速度和压实力的数值,监视压实车和举升台的编码位移脉冲数等。
液压站监控画面,可监视液压马达、循环泵的启停控制和运行状态,还可监视液位、温度和油路蝶阀等数值和运行情况。
其他的信息显示画面有打包头状态画面、打包头工作过程画面、打包头设置画面、打包机状态画面、打包机工作过程画面、压实设置画面、与PF线通信状态画面、Profibus通信信号状态画面等。实时报警画面有打包头故障显示画面、压实过程故障显示画面、液压站帮助画面等。
5 结束语
BT4600型打包机在洛阳伟业轧钢有限公司高速线材生产线投人运行,改变了高线原来手动打包效率低下的状况,有效改善了操作人员的工作环境,极大提高了工作效率,使高线精整区打包工序的自动化生产成为现实。打包机自投人运行以来,扭结失败率低,大盘卷打包时间约40 s,满足厂家65 s左右的轧钢生产节奏。当然,与国外高性能的同类产品(扭结失败率<0. 3%,打包时间约35 s)比较,还存在一定的技术差距,还需在运行环境下不断优化控制参数。
一. 引言
PLC作为工业现场的控制器,以其性能稳定,编程简单,结构紧凑,通用性强等优点,已得到了广泛的运用;而计算器在图象处理,报表打印,中文显示等方面具有很强的功能;在现代的控制系统中,已经在很多地方将两者结合起来使用,充分发挥两者的优势,因此,PC和PLC之间的通信显的尤为重要,大多数PLC的通信协议都采用的是MODBUS,而松下FP系列采用的是其专用的MEWTOCOL-COM协议.本文通过实例详细讲解了利用该协议,达到PC和PLC通信的目的.
二. 松下PLC的通信协议
松下FP系列PLC的通信协议是采用松下公司专用的MEWTOCOL-COM协议.在该协议中,数据传送采用的是ASCII码形式,首先由计算器发送指令,PLC接受到指令后,自动进行相应的响应,计算器根据PLC的响应,可以得知PLC是否正确执行了刚刚发送的指令,这样就构成了一个交互式的操作,以确保PC 与 PLC之间的通信正常. MEWTOCOL-COM的指令格式如下:
指令信息:
应答信息(正常时):
应答信息(发生错误时):
其中, “ % ”为起始符号,标记每一帧报文的开始. “ CR ”为结束符号,标记每一帧报文的结束. “ AD ”为每一站PLC的地址,用两位十六进制数表示,如 01 则代表台PLC. “ # ”, “ $ ”, “ ! ”标记该帧报文为何种类型,其分别对应为:指令信息,应答信息(正常),应答信息(错误). “ BCC ”为校验码,为两位十六进制数,其初值为“ 0 ”,然后从起始符开始与该帧报文中每一字节按位进行异或运算得到的.
三. PC端VB程序的编写
PC端的程序我们采用VB6.0 和 MSCOMM32 控件来编写.VB的通信控件MSCOMM32提供了简单的串行口通信功能,使用它可以建立与串行口的连接,通过串行口连接到其它设备,发送命令,接受资料,以及监视和响应串行通信中发生的事件和错误等.我们只要通过上位机的程序,向PLC按照MEWTOCOL-COM协议规定的格式发送命令,PLC就可以作出相应的响应.为了使读者能够清楚的了解两者之间的通信,现举例如下:
整个程序的界面如图 (1) 所示.
程序的部分代码如下:
Private Sub Cmd_Connect_Click()
Lbl_State.Caption = "正在建立连接,请稍后..."
DoEvents
MSComm1.PortOpen = True ‘建立与串口的连接.
MSComm1.bbbbbLen = 1
MSComm1.RThreshold = 1 ‘设置接受缓冲区接受到一个字符就产生OnComm事件.
TempOutputStr = "%" & Trim(Combo2.Text) & "#RT" ‘Combo2为PLC的站别.
CommandStr = "RT" ‘ “RT”命令用来读取PLC当前的相关信息.
MSComm1.Output = TempOutputStr & CalBcc(TempOutputStr) & Chr$(13)
Txt_PcPlc.Text = TempOutputStr & CalBcc(TempOutputStr) ‘将传送的内容显示在文本框中
Timer1.Enabled = True ‘ 系统开始计时,以判断PC和PLC连接是否正常.
End If
End Sub
Private Sub Cmd_Dt_Click()
Dim I As Integer
Dim TempWd As bbbbbb
If Option3.Value = True Then
CommandStr = "RD"
For I = 0 To 15
Text1(I).Text = ""
Next I
TempOutputStr = "%" & Trim(Combo2.Text) & "#RD" & "D" & Trim(UCase(Txt_Bof.Text)) & Trim(UCase(Txt_Eof.Text)) ‘” RD “’命令用来读取DT中的数据.
MSComm1.Output = TempOutputStr & CalBcc(TempOutputStr) & Chr$(13)
Txt_PcPlc.Text = TempOutputStr & CalBcc(TempOutputStr)
Else
CommandStr = "WD"
TempOutputStr = "%" & Trim(Combo2.Text) & "#WD" & "D" & Trim(UCase(Txt_Bof.Text)) & Trim(UCase(Txt_Eof.Text)) ‘” WD “命令用来将数据写入到相应的DT中.
For I = 0 To Val(Txt_Eof.Text) - Val(Txt_Bof.Text)
TempWd = Hex$(Val(Text1(I).Text))
Do While Len(TempWd) <> 4
TempWd = "0" & TempWd
Loop
TempWd = Right$(TempWd, 2) & Left$(TempWd, 2)
TempOutputStr = TempOutputStr & TempWd
Next I
MSComm1.Output = TempOutputStr & CalBcc(TempOutputStr) & Chr$(13)
Txt_PcPlc.Text = TempOutputStr & CalBcc(TempOutputStr)
End If
End Sub
Private Sub Cmd_Run_Click() ‘控制PLC运行
CommandStr = "RM"
RPBoolean = True
MSComm1.Output = "%" & Trim(Combo2.Text) & "#RMR4A" & Chr$(13)
Txt_PcPlc.Text = "%" & Trim(Combo2.Text) & "#RMR4A"
End Sub
Private Sub Cmd_Stop_Click() ‘控制PLC停止
CommandStr = "RM"
RPBoolean = False
MSComm1.Output = "%" & Trim(Combo2.Text) & "#RMP48" & Chr$(13)
Txt_PcPlc.Text = "%" & Trim(Combo2.Text) & "#RMP48"
End Sub
Private Sub Cmd_TC_Click()
Dim TempWs As bbbbbb
Dim TempWk As bbbbbb
If Option9.Value = True And Option11.Value = True Then
CommandStr = "RS" ‘读取定时器/计数器中的默认值
TempOutputStr = "%" & Trim(Combo2.Text) & "#RS" & Trim(UCase(Txt_TC.Text)) & Trim(UCase(Txt_TC.Text))
MSComm1.Output = TempOutputStr & CalBcc(TempOutputStr) & Chr$(13)
Txt_PcPlc.Text = TempOutputStr & CalBcc(TempOutputStr)
End If
If Option9.Value = True And Option12.Value = True Then
CommandStr = "WS" ‘写入定时器/计数器中的默认值
TempOutputStr = "%" & Trim(Combo2.Text) & "#WS" & Trim(UCase(Txt_TC.Text)) & Trim(UCase(Txt_TC.Text))
TempWs = Hex$(Val(Text2.Text))
Do While Len(TempWs) <> 4
TempWs = "0" & TempWs
Loop
TempWs = Right$(TempWs, 2) & Left$(TempWs, 2)
TempOutputStr = TempOutputStr & TempWs
MSComm1.Output = TempOutputStr & CalBcc(TempOutputStr) & Chr$(13)
Txt_PcPlc.Text = TempOutputStr & CalBcc(TempOutputStr)
End If
If Option10.Value = True And Option11.Value = True Then
CommandStr = "RK" ‘读取定时器/计数器中的经过值
TempOutputStr = "%" & Trim(Combo2.Text) & "#RK" & Trim(UCase(Txt_TC.Text)) & Trim(UCase(Txt_TC.Text))
MSComm1.Output = TempOutputStr & CalBcc(TempOutputStr) & Chr$(13)
Txt_PcPlc.Text = TempOutputStr & CalBcc(TempOutputStr)
End If
If Option10.Value = True And Option12.Value = True Then
CommandStr = "WK" ‘写入定时器/计数器中的经过值
TempOutputStr = "%" & Trim(Combo2.Text) & "#WK" & Trim(UCase(Txt_TC.Text)) & Trim(UCase(Txt_TC.Text))
TempWk = Hex$(Val(Text2.Text))
Do While Len(TempWk) <> 4
TempWk = "0" & TempWk
Loop
TempWk = Right$(TempWk, 2) & Left$(TempWk, 2)
MSComm1.Output = TempOutputStr & CalBcc(TempOutputStr) & Chr$(13)
Txt_PcPlc.Text = TempOutputStr & CalBcc(TempOutputStr)
End If
End Sub
Private Sub Cmd_YR_Click()
Dim TempYR As bbbbbb
Dim TempValue As bbbbbb
Dim BinValue As bbbbbb
Dim HexValue As bbbbbb
Dim I As Integer
If Option1.Value = True Then
TempYR = "Y"
Else
TempYR = "R"
End If
If Option5.Value = True And Option7.Value = True Then
CommandStr = "RCS" ‘读取单个触点的状态
TempOutputStr = "%" & Trim(Combo2.Text) & "#RCS" & TempYR & Trim(UCase(Txt_YR.Text))
MSComm1.Output = TempOutputStr & CalBcc(TempOutputStr) & Chr$(13)
Txt_PcPlc.Text = TempOutputStr & CalBcc(TempOutputStr)
End If
If Option6.Value = True And Option7.Value = True Then
CommandStr = "WCS" ‘写入单个触点的状态
If Label22.BackColor = &HC0& Then
TempValue = "1"
Else
TempValue = "0"
End If
TempOutputStr = "%" & Trim(Combo2.Text) & "#WCS" & TempYR & Trim(UCase(Txt_YR.Text)) & TempValue
MSComm1.Output = TempOutputStr & CalBcc(TempOutputStr) & Chr$(13)
Txt_PcPlc.Text = TempOutputStr & CalBcc(TempOutputStr)
End If
If Option5.Value = True And Option8.Value = True Then
CommandStr = "RCC" ‘读取字单元触点的状态
TempOutputStr = "%" & Trim(Combo2.Text) & "#RCC" & TempYR & Trim(UCase(Txt_YR.Text)) & Trim(UCase(Txt_YR.Text))
MSComm1.Output = TempOutputStr & CalBcc(TempOutputStr) & Chr$(13)
Txt_PcPlc.Text = TempOutputStr & CalBcc(TempOutputStr)
End If
If Option6.Value = True And Option8.Value = True Then
CommandStr = "WCC" ‘写入字单元触点的状态
For I = 0 To 15
If Label1(I).BackColor = &HC0& Then
TempValue = "1"
Else
TempValue = "0"
End If
BinValue = BinValue & TempValue
Next I
For I = 1 To 16 Step 4
TempValue = BinToHex(Mid$(BinValue, I, 4))
HexValue = HexValue & TempValue
Next I
TempOutputStr = "%" & Trim(Combo2.Text) & "#WCC" & TempYR & Trim(UCase(Txt_YR.Text)) & Trim(UCase(Txt_YR.Text)) & HexValue
MSComm1.Output = TempOutputStr & CalBcc(TempOutputStr) & Chr$(13)
Txt_PcPlc.Text = TempOutputStr & CalBcc(TempOutputStr)
End If
End Sub
Private Sub MSComm1_OnComm()
Dim I As Integer
Dim TempRec As bbbbbb
Dim TempbbbbbSingle As bbbbbb
Dim TempValue As bbbbbb
Dim BinValue As bbbbbb
TempbbbbbSingle = MSComm1.bbbbb ‘读取接收缓冲区中的内容,并清空缓冲区
Tempbbbbb = Tempbbbbb + TempbbbbbSingle
If TempbbbbbSingle = Chr$(13) Then ‘当接收到回车符时,表示一帧内容接受完毕.
If InStr(1, Tempbbbbb, "!") <> 0 Then
Lbl_State.Caption = "命令参数错误,请输入正确的参数!"
Tempbbbbb = ""
Exit Sub
Else
Tempbbbbb = Trim(Tempbbbbb)
Txt_PlcPc.Text = Tempbbbbb ‘将接收到的信息显示在文本框中.
Select Case CommandStr ‘分类对接收到的信息进行处理.
Case "RT"
Select Case Mid$(Tempbbbbb, 7, 2)
Case "20"
Lbl_Kind.Caption = " FPΣ系列"
Case "03"
Lbl_Kind.Caption = " FP3 系列"
Case "02"
Lbl_Kind.Caption = " FP5 系列"
Case Else
Lbl_Kind.Caption = "未知系列"
End Select
Lbl_Version.Caption = Mid$(Tempbbbbb, 9, 2)
Lbl_Size.Caption = Mid$(Tempbbbbb, 11, 2) & "K"
If Mid$(Tempbbbbb, 15, 9) = "000000000" Then
Lbl_Error.Caption = "无错误!"
Else
Lbl_Error.Caption = "PLC 有错误!"
End If
If Mid$(Tempbbbbb, 14, 1) = "1" Then
Shape_Run.FillColor = &HC0&
Shape_Stop.FillColor = &H80FFFF
Else
Shape_Run.FillColor = &H80FFFF
Shape_Stop.FillColor = &HC0&
End If
Timer1.Enabled = False
Lbl_State.Caption = "连接成功!"
Case "RM"
If RPBoolean = True Then
Shape_Run.FillColor = &HC0&
Shape_Stop.FillColor = &H80FFFF
Else
Shape_Run.FillColor = &H80FFFF
Shape_Stop.FillColor = &HC0&
End If
Case "RD"
For I = 0 To Len(Tempbbbbb) - 10 Step 4
TempRec = Mid$(Tempbbbbb, 7 + I, 4)
Text1(I / 4).Text = Val("&H" & Right(TempRec, 2) & Left(TempRec, 2))
Next I
Case "RCS"
TempRec = Mid$(Tempbbbbb, 7, 1)
If TempRec = "1" Then
Label22.BackColor = &HC0&
Else
Label22.BackColor = &HFFFF&
End If
Case "RCC"
TempRec = Mid$(Tempbbbbb, 7, 4)
For I = 1 To 4
TempValue = HexToBin(Mid$(TempRec, I, 1))
BinValue = BinValue & TempValue
Next I
For I = 0 To 15
If Mid$(BinValue, I + 1, 1) = "1" Then
Label1(I).BackColor = &HC0&
Else
Label1(I).BackColor = &HFFFF&
End If
Next I
Case "RS"
TempRec = Mid$(Tempbbbbb, 7, 4)
Text2.Text = Val("&H" & Right(TempRec, 2) & Left(TempRec, 2))
Case "RK"
TempRec = Mid$(Tempbbbbb, 7, 4)
Text2.Text = Val("&H" & Right(TempRec, 2) & Left(TempRec, 2))
End Select
Tempbbbbb = ""
End If
End If
End Sub
Private Sub Timer1_Timer()
TryNum = TryNum + 1
If TryNum = 4 Then ‘总共发送三次连接信息,如无响应,则提示错误!
Lbl_State.Caption = "PC 与 PLC 通讯失败,请检查通讯线路是否正常!"
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
Timer1.Enabled = False
TryNum = 0
Exit Sub
End If
MSComm1.Output = TempOutputStr & CalBcc(TempOutputStr) & Chr$(13)
End Sub
Public Function CalBcc(ByVal bbbbbStr$) As bbbbbb 计算校验码
Dim I As Integer
Dim TempStr As Byte
TempStr = 0
bbbbbStr$ = Trim(bbbbbStr$)
For I = 1 To Len(bbbbbStr$)
TempStr = TempStr Xor Asc(Mid(bbbbbStr$, I, 1))
Next I
CalBcc = Right$("0" & Hex$(TempStr), 2)
End Function
以上程序在Win98+VB6.0中调试通过,串行通信参数须设置为 “9600,o,8,1”.
四. 结论
PC不仅能实现一般人机界面的相关功能,而且还可以处理和统计大量的数据,另外,通过网络,也可以实现远程控制.本文只是拋砖引玉,读者可以根据实际的需要,利用MEWTOCOL-COM协议,制作出现场所需要的控制程序.