首页 >> 台湾泡桐

PC与松下FP系列PLC的通信0凭祥

文章来源:水产农业网  |  2022-09-08

PC与松下FP系列PLC的通信

PC与松下FP系列PLC的通信 2011年12月09日 来源: 一. 引言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 = "正在建立连接,请稍后..."DoEventsMSComm1.PortOpen = True ‘建立与串口的连接.MSComm1.InputLen = 1MSComm1.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 IfEnd SubPrivate Sub Cmd_Dt_Click()Dim I As IntegerDim TempWd As StringIf Option3.Value = True ThenCommandStr = "RD" For I = 0 To 15Text1(I).Text = ""Next ITempOutputStr = "%" & 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)ElseCommandStr = "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) <> 4TempWd = "0" & TempWdLoopTempWd = Right$(TempWd, 2) & Left$(TempWd, 2)TempOutputStr = TempOutputStr & TempWdNext IMSComm1.Output = TempOutputStr & CalBcc(TempOutputStr) & Chr$(13)Txt_PcPlc.Text = TempOutputStr & CalBcc(TempOutputStr)End IfEnd SubPrivate Sub Cmd_Run_Click() ‘控制PLC运行CommandStr = "RM"RPBoolean = TrueMSComm1.Output

慈溪市林益制笔厂

郑州华洋电气设备有限公司

富视康安防实业发展有限公司

深圳市康百视监控科技有限公司

宜春市中相生物科技有限公司

浙江长兴成达水晶烫钻公司

江门康辉国际旅行社有限公司

玉环县联华塑胶有限公司大塘分公司

江苏生态黑猪原种场

江苏博之旺自动化设备有限公司