1、台达PLC源码FORM VB60Public str_out As StringDim setaddr As String, char As String, setad As StringDim dz As StringDim dz1 As StringPublic str As StringPrivate Sub COMBO1_Change()Select Case COMBO1.ListIndex Case Y dz1 = Right(COMBO1.Text, Len(COMBO1.Text) - 1) Case M dz1 = Right(COMBO1.Text, Len(COMBO1.
2、Text) - 1) Case T dz1 = Right(COMBO1.Text, Len(COMBO1.Text) - 1) Case C dz1 = Right(COMBO1.Text, Len(COMBO1.Text) - 1) Case S dz1 = Right(COMBO1.Text, Len(COMBO1.Text) - 1)End SelectEnd SubPrivate Sub Command1_Click() PLC运行停止按钮If MSComm1.PortOpen = False Then 如果串口未打开MSComm1.PortOpen = True 则打开串口End
3、IfSelect Case Command1.Caption 选择事件Case PLC RUNstr = 00050C30FF00 通讯字符串LRC = Chr_lrc(str) 计算lrc校验值stx = : 起始字符冒号str_out = stx + str + LRC + Chr$(13) + Chr$(10) 发送字符串内容MSComm1.Output = str_out 通过串口发送Command1.Caption = PLC STOP 按钮显示PLC STOP 等待下次按压此按钮Command1.BackColor = &HFF& 按钮背景颜色为红色Case PLC STOP 事件
4、PLC STOPstr = 00050C300000 通讯字符串LRC = Chr_lrc(str) 计算lrc校验值stx = : 起始字符冒号str_out = stx + str + LRC + Chr$(13) + Chr$(10) 发送的字符串MSComm1.Output = str_out 通过串口发送Command1.Caption = PLC RUN 按钮显示PLC RUN 等待下次按压此按钮Command1.BackColor = &HFF00& 按钮背景颜色为绿色End SelectEnd SubPrivate Sub Command2_Click() 写寄存器按钮stx
5、= : 起始字符为冒号a = Right(Text1.Text, Len(Text1.Text) - 1) a为需要写入寄存器的数据C = Text4.Text c为需写入数据的寄存器地址If Len(C) 1 Then SRDZ = Right(C, Len(C) - 1) 如果c的长度大于1,则输入地址srdz为去掉左边的一个字符后的字符 If Mid(Text4.Text, 2) = Then 如果地址文本框的第二个字符为空格,那么 MsgBox (请输入元件号!) 提示请输入元件号 Text4.SetFocus 光标移至文本框 Text4.SelStart = 1 光标在文本框第二个字
6、符处闪烁 Exit Sub Else If Val(SRDZ) 999 Then 如果输入地址SRDZ大于999则 MsgBox (元件地址超过限制!) 提示元件地址超过限制 Text4.SetFocus 光标移至文本框 Text4.SelStart = 1 光标在文本框第二字符处闪烁 Text4.SelLength = Len(C) 文本框字符长度为原长度 Exit Sub End If End IfD = Hex(SRDZ + 4096) 输入地址转换为十六进制数的台达PLC地址If Len(a) = 0 Then 如果写入寄存器的数值大于等于零 If Mid(a, 1) = Then 如
7、果写入的数值字符的第一位是空格 MsgBox (请输入数值!) 则提示请输入数值! Text1.SetFocus 光标移至文本框 Text1.SelStart = 1 光标在文本框第二位闪烁 Exit Sub Else If Option2.Value = True Then 如果选择十六进制数制 If Len(a) = 1 Then 且数值长度为1 a1 = 000 + a 那么,写入的数值为000加上输入的一位数据 Else If Len(a) = 2 Then 如果输入数据长度为2 a1 = 00 + a 则写入的数值为00加上输入的两位数据 Else If Len(a) = 3 The
8、n 如果输入数据长度为3 a1 = 0 + a 则写入的数值为0加上输入的三位数据 Else If Len(a) = 4 Then 如果输入数据长度为4 a1 = a 则写入的数值为输入的数据 End If End If End If End If Else 如果选择十进制数制 b1 = Hex(a) 那么,直接将输入的数据转换为十六进制数 If Len(b1) = 1 Then 如果输入一位十六进制数 a1 = 000 + b1 那么,写入的数值为000加上输入的一位十六进制数 Else If Len(b1) = 2 Then 如果输入的数据长度为2 a1 = 00 + b1 那么,写入的数
9、值为00加上输入的两位十六进制数 Else If Len(b1) = 3 Then 如果输入的数据长度为3 a1 = 0 + b1 那么写入的数值为0加上输入的一位十六进制数 Else If Len(b1) = 4 Then 如果输入的数据长度为4 a1 = b1 那么写入的数值为输入的数据 End If End If End If End If End If If Val(a) 65535 Then 如果输入的数据大于65535 MsgBox (设值超过限制!) 则提示设值超过限制 Text1.SetFocus 光标移至文本框 Text1.SelStart = 1 光标在文本框第二个字符处闪
10、烁 Text1.SelLength = Len(a) 文本框长度等于原长度 Exit Sub End If End If End If str = 0106 + D + a1 发送字符地址01命令06(写入)地址D数据a1LRC = Chr_lrc(str) 计算lrc校验值If Len(LRC) = 1 Then 如果lrc校验值为一位 LRC = 0 + LRC 则lrc校验值补零 Else LRC = LRC 否则校验值为计算值 End IfMSComm1.Output = stx + str + LRC + Chr$(13) + Chr$(10) 通过串口发送写入命令MSComm1.I
11、nBufferCount = 0End SubPrivate Sub Command3_Click() 读取暂存器按钮setaddr = Text2.Text 变量setaddr为文本text2的内容 If Len(setaddr) 1 Then setad = Right(setaddr, Len(setaddr) - 1) 如果文本内容长度大于1则setad的值为去掉最左边的字符 If Mid(Text2.Text, 2) = Then 如果文本的第二个字符为空格 MsgBox (请输入地址!) 则提示请输入地址 Text2.SetFocus 同时光标移至文本框 Text2.SelStar
12、t = 1 光标在第二个字符处闪烁 Exit Sub Else If Val(setad) 1300 Then 如果输入的地址大于1300,则 MsgBox (元件地址超出范围!) 提示元件地址超出范围 Text2.SetFocus 光标移至文本框 Text2.SelStart = 1 光标在第二个字符处闪烁 Text2.SelLength = Len(setaddr) 文本框的字符长度为原长度 Exit Sub End If End If FIRSTLOOP: MSComm1.InBufferCount = 0 串口输入缓冲器清零 MSComm1.OutBufferCount = 0 串口输
13、出缓冲器清零 stx = : 起始字符为冒号 a = Hex(setad + 4096) 将地址加上H1000,并转换为16进制数 str = 0103 + a + 0001 str为0103加地址加读取长度 LRC = Chr_lrc(str) 计算str的lrc校验值 MSComm1.Output = stx + str + LRC + Chr$(13) + Chr$(10) 串口发送 Tim = Timer Do If Timer Tim + 3 Then 如果通讯200毫秒以上,那么 If MsgBox(请检查通讯!, vbRetryCancel + vbCritical) = vbC
14、ancel Then 弹出子窗口提示请检查通讯 Exit Sub Else GoTo FIRSTLOOP End If End If Loop Until MSComm1.InBufferCount = 13 直到串口输入缓冲器字符长度等于13 SETIN = MSComm1.Input SETIN为串口输入缓冲器字符串 bh = Mid(SETIN, 8, 4) bh为回传数据的第八个字符开始的4个字符 If Option1.Value = True Then 如果选择为十进制数值模式则 hcsj = Val(&H + bh) 回传数据为数值 Text3.Text = K + CStr(hcsj) 文本框显示十进制K加读回的数据 Else Text3.Text = H + bh 否则,为16进制,文本框显示16进制H加数据 End IfEnd SubPrivate Sub Command4_Click() Call dizhi stx = : str = 0105 + dz1 + FF00 LRC = Chr_lrc(str) Text6.Text = dz1 If dzcw = True Then Exit Sub MSComm1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1