首页 上一页 1 2 3 下一页 尾页

请问谁有用VB与三菱FX2N通讯的程序? 点击:6192 | 回复:56



dencybu

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 6回
  • 年度积分:0
  • 历史总积分:40
  • 注册:2004年10月27日
发表于:2004-12-27 15:42:00
楼主
有注释最好,能发到我的邮箱吗?谢谢 keto@eyou.com



杨茂明001

  • 精华:0帖
  • 求助:0帖
  • 帖子:36帖 | 179回
  • 年度积分:0
  • 历史总积分:343
  • 注册:2004年8月03日
发表于:2004-12-29 16:48:00
1楼
Private Sub Form_Activate() start = False blnExit = False SETRST.Enabled = False '进入实时监控状态 Do While Not blnExit FirstLoop: DoEvents If start Then CommFX.InBufferCount = 0 CommFX.OutBufferCount = 0 CommFX.Output = Chr(5) + DevDat + SumChk(DevDat) Tim = Timer If DevType = "XYM" Then '监控类型为位元件 Do If Timer > Tim + 1 Then: GoTo FirstLoop Loop Until CommFX.InBufferCount > 8 SetIn = CommFX.Input If Left$(SetIn, 7) = Chr(2) + cboStation.Text + "FF0" + Chr(3) Then SETRST.Caption = "SET" ElseIf Left$(SetIn, 7) = Chr(2) + cboStation.Text + "FF1" + Chr(3) Then SETRST.Caption = "RESET" Else Text2.Text = "ONLINE ERROR" End If ElseIf DevType = "D" Then '监控类型为单字节D,T,C(16BIT) Do If Timer > Tim + 1 Then: GoTo FirstLoop Loop Until CommFX.InBufferCount = 12 SetIn = CommFX.Input If OptionD.Value Then DevDData = Val("&H" + Mid(SetIn, 6, 4)) Text2.Text = CStr(DevDData) Else Text2.Text = Mid(SetIn, 6, 4) End If ElseIf DevType = "2D" Then '监控类型为双字节D,C(32BIT) Do If Timer > Tim + 1 Then: GoTo FirstLoop Loop Until CommFX.InBufferCount = 16 SetIn = CommFX.Input If Device = "C" Then DevDataStr = Mid(SetIn, 6, 8) Else DevDataStr = Mid(SetIn, 10, 4) + Mid(SetIn, 6, 4) End If If OptionD.Value Then If Left(DevDataStr, 4) = "0000" And Mid(DevDataStr, 5, 1) <> "0" Then Text2.Text = CStr(Val("&H" + DevDataStr + "0") / 16) Else Text2.Text = CStr(Val("&H" + DevDataStr)) End If Else Text2.Text = DevDataStr End If End If If Device = "C" Or Device = "T" Then '是计数器或计时器线圈 CommFX.InBufferCount = 0 CommFX.OutBufferCount = 0 CommFX.Output = Chr(5) + DevDatTC + SumChk(DevDatTC) Tim = Timer Do If Timer > Tim + 1 Then: GoTo FirstLoop Loop Until CommFX.InBufferCount > 8 SetIn = CommFX.Input If Left$(SetIn, 7) = Chr(2) & cboStation.Text & "FF0" & Chr(3) Then SETRST.Caption = "SET" ElseIf Left$(SetIn, 7) = Chr(2) & cboStation.Text & "FF1" & Chr(3) Then SETRST.Caption = "RESET" Else Text2.Text = "ONLINE ERROR" End If End If End If Loop End Sub Private Sub Form_Unload(Cancel As Integer) start = False blnExit = True Set frmfx = Nothing End Sub Private Sub fraComm2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblTopic = "设置连接PLC的通信端口以及PLC的站号(应与D8121相同)" End Sub Private Sub Frame1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblTopic = "实时监控/设置PLC的XYMTCD设备值" End Sub Private Sub OptionD_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblTopic = "数据以十进制方式返回或设置" End Sub Private Sub OptionH_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblTopic = "数据以十六进制方式返回或设置" End Sub Private Sub SETRST_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblTopic = "对位元件(X,Y,M,T,C)线圈置位与复位" End Sub Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) SETRST.Enabled = False start = False fraComm1.Visible = True fraComm2.Visible = True End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) char = Chr(KeyAscii) setaddr = Text1.Text If Len(setaddr) > 1 Then: setad = Right(setaddr, Len(setaddr) - 1) KeyAscii = Asc(UCase(char)) '转换为大写 If KeyAscii = 13 Then '按回车键 Device = Left(setaddr, 1) Text1.SelStart = 0 Text1.SelLength = Len(setaddr) Text2.Enabled = True If (Device = "X" Or Device = "Y" And Oct(Val("&o" + setad)) = setad And Val(setad) < 178) Or (Device = "M" And CStr(Val(setad)) = setad And (Val(setad) < 1536 Or Val(setad) > 7999 And Val(setad) < 8256)) Then DevAdd = Right(("0000" + setad), 4) DevDat = cboStation.Text + "FFBR0" + Device + DevAdd + "01" DevType = "XYM" Text2.Enabled = False SETRST.Enabled = True start = True End If If Device = "D" And CStr(Val(setad)) = setad And (Val(setad) < 1000 Or Val(setad) > 7999 And Val(setad) < 8256) Then DevAdd = Right(("0000" + setad), 4) If Check1.Value = 0 Then DevDat = cboStation.Text + "FFWR0" + Device + DevAdd + "01" '使用WR命令读16bit数据 DevType = "D" Else DevDat = cboStation.Text + "FFWR0" + Device + DevAdd + "02" '使用WR命令读32bit数据 DevType = "2D" End If SETRST.Enabled = False start = True End If If Device = "T" And CStr(Val(setad)) = setad And Val(setad) < 256 Then DevAdd = Right(("000" + setad), 3) DevDatTC = cboStation.Text + "FFBR0" + Device + "S" + DevAdd + "01" 'T的线圈状态 DevDat = cboStation.Text + "FFWR0" + Device + "N" + DevAdd + "01" 'T的数据值 DevType = "D" SETRST.Enabled = True start = True End If If Device = "C" And CStr(Val(setad)) = setad And Val(setad) < 256 Then DevAdd = Right(("000" + setad), 3) DevDatTC = cboStation.Text + "FFBR0" + Device + "S" + DevAdd + "01" 'C的线圈状态 If Val(setad) > 199 Then DevDat = cboStation.Text + "FFWR0" + Device + "N" + DevAdd + "01" 'C200以上的数据值 DevType = "2D" Else DevDat = cboStation.Text + "FFWR0" + Device + "N" + DevAdd + "01" 'C200以下的数据值 DevType = "D" End If SETRST.Enabled = True start = True End If fraComm1.Visible = False fraComm2.Visible = False Else start = False fraComm1.Visible = True fraComm2.Visible = True End If End Sub Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblTopic = "输入要监控或设置的地址回车确定,如D0,T10,Y7等" End Sub Private Sub Text2_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode <> 13 Then start = False End If End Sub Private Sub Text2_KeyPress(KeyAscii As Integer) char = Chr(KeyAscii) KeyAscii = Asc(UCase(char)) If Device = "D" And CStr(Val(setad)) = setad And Val(setad) < 1000 Then start = False End If If (Device = "T" Or Device = "C") And CStr(Val(setad)) = setad And Val(setad) < 256 Then start = False End If If KeyAscii = 13 Then If Val(DevAdd) > 7999 Then If MsgBox("改变系统参数可能对系统造成破坏,是否写入?", vbOKCancel + vbCritical) = vbCancel Then Exit Sub ElseIf MsgBox("改变当前值可能对运行造成危险,是否写入?", vbOKCancel + vbExclamation) = vbCancel Then Exit Sub End If If Device = "D" And Check1.Value = 0 Then DevAdd = Right(("0000" + setad), 4) ElseIf Device = "D" And Check1.Value = 1 Then DevAdd = Right(("0000" + setad), 4) Else DevAdd = Right(("000" + setad), 3) End If If OptionD.Value Then '十进制方式 If Device = "C" And Val(setad) > 199 Then 'C200以上写入 If Val(Text2.Text) > 2847483647# Then: GoTo this DevDat1 = cboStation.Text + "FFWW0" + Device + "N" + DevAdd + "01" + Right("00000000" + Hex(Val(Text2.Text)), 8) ElseIf Device = "D" And Check1.Value = 1 Then '双字节D写入 If Val(Text2.Text) > 2847483647# Then: GoTo this DevDat1 = Right("00000000" + Hex(Val(Text2.Text)), 8) DevDat1 = Right(DevDat1, 4) + Left(DevDat1, 4) DevDat1 = cboStation.Text + "FFWW0" + Device + DevAdd + "02" + DevDat1 Else If Val(Text2.Text) > 32767 Then: GoTo this If Device = "D" Then '单字节D写入 DevDat1 = cboStation.Text + "FFWW0" + Device + DevAdd + "01" + Right("0000" + Hex(Val(Text2.Text)), 4) Else 'C200以下写入 DevDat1 = cboStation.Text + "FFWW0" + Device + "N" + DevAdd + "01" + Right("0000" + Hex(Val(Text2.Text)), 4) End If End If Else '十六进制方式 If Device = "C" And Val(setad) > 199 Then 'C200以上写入 If Val("&H" + Text2.Text) > 2847483647# Then: GoTo this DevDat1 = cboStation.Text + "FFWW0" + Device + "N" + DevAdd + "01" + Right("00000000" + Text2.Text, 8) ElseIf Device = "D" And Check1.Value = 1 Then '双字节D写入 If Val("&H" + Text2.Text) > 2847483647# Then: GoTo this DevDat1 = Right("00000000" + Text2.Text, 8) DevDat1 = Right(DevDat1, 4) + Left(DevDat1, 4) DevDat1 = cboStation.Text + "FFWW0" + Device + DevAdd + "02" + DevDat1 Else If Val("&H" + Text2.Text) > 32767 Then: GoTo this If Device = "D" Then '单字节D写入 DevDat1 = cboStation.Text + "FFWW0" + Device + DevAdd + "01" + Right("0000" + Text2.Text, 4) Else 'C200以下写入 DevDat1 = cboStation.Text + "FFWW0" + Device + "N" + DevAdd + "01" + Right("0000" + Text2.Text, 4) End If End If End If CommFX.Output = Chr(5) + DevDat1 + SumChk(DevDat1) Tim = Timer Do If Timer > Tim + 1 Then: Exit Do Loop Until CommFX.InBufferCount = 5 this: start = True Exit Sub Else start = False End If If Not (KeyAscii = 8) And (KeyAscii > 57 Or KeyAscii < 48) Then: KeyAscii = 0 End Sub '位元件置位或者复位 Private Sub SETRST_Click() If Val(DevAdd) > 7999 Then 'M8000以上是重要系统参数,小心! If MsgBox("改变系统参数可能对系统造成破坏,是否写入?", vbOKCancel + vbCritical) = vbCancel Then Exit Sub ElseIf MsgBox("改变当前值可能对运行造成危险,是否写入?", vbOKCancel + vbExclamation) = vbCancel Then Exit Sub End If If start Then start = False CommFX.OutBufferCount = 0 CommFX.InBufferCount = 0 If (Device = "T" Or Device = "C") And SETRST.Caption = "SET" Then DevDat1 = cboStation.Text + "FFBW0" + Device + "S" + DevAdd + "011" ElseIf (Device = "T" Or Device = "C") And SETRST.Caption = "RESET" Then DevDat1 = cboStation.Text + "FFBW0" + Device + "S" + DevAdd + "010" ElseIf DevType = "XYM" And SETRST.Caption = "SET" Then DevDat1 = cboStation.Text + "FFBW0" + Device + DevAdd + "011" ElseIf DevType = "XYM" And SETRST.Caption = "RESET" Then DevDat1 = cboStation.Text + "FFBW0" + Device + DevAdd + "010" End If CommFX.Output = Chr(5) + DevDat1 + SumChk(DevDat1) Tim = Timer Do If Timer > Tim + 1 Then: Exit Do Loop Until CommFX.InBufferCount = 5 start = True End If End Sub '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Private Sub CommOpen() If CommFX.PortOpen = False Then CommFX.PortOpen = True End If End Sub Private Sub CommClose() If CommFX.PortOpen = True Then CommFX.PortOpen = False End If End Sub '设置电脑通信参数 Private Sub CommSet() On Error GoTo err1 If CommFX.PortOpen = True Then CommFX.PortOpen = False End If If Not CommFX.PortOpen Then CommFX.CommPort = cboPort.ListIndex + 1 '通信口 CommFX.Settings = "9600,N,8,1" '固定值即可 CommFX.Handshaking = 0 CommFX.InputLen = 0 CommFX.OutBufferCount = 0 CommFX.InBufferCount = 0 CommFX.PortOpen = True End If Exit Sub err1: MsgBox Err.Description End Sub Private Function SumChk(Dats$) As String Dim i& Dim CHK& For i = 1 To Len(Dats) CHK = CHK + Asc(Mid(Dats, i, 1)) Next i 'SumChk = Right(Hex$(CHK + 3), 2) SumChk = Right(Hex$(CHK), 2) End Function Private Sub Text2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblTopic = "实时显示监控到的数据,或改变数据后回车确定" End Sub ------------- 源作者不是我。引用的。

萧风暮雨

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 13回
  • 年度积分:0
  • 历史总积分:243
  • 注册:2004年2月26日
发表于:2005-02-23 12:02:00
2楼
我也想要个详细注释,能不能发到我的邮箱吗?谢谢!lw2008sd@163.com qq:49127068

ZZF

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:56
  • 注册:2003年12月02日
发表于:2005-03-06 11:30:00
3楼
我也想要个详细注释,能不能发到我的邮箱吗?谢谢!zhuzf-163@163.com qq:445833585

风-

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 1回
  • 年度积分:0
  • 历史总积分:34
  • 注册:2004年7月18日
发表于:2005-03-10 15:13:00
4楼
大虾:我也想要个详细注释,能不能发到我的邮箱吗?谢谢!hxf211@sina.com

子昕

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 8回
  • 年度积分:0
  • 历史总积分:164
  • 注册:2004年5月21日
发表于:2005-03-11 14:53:00
5楼
大可不必如此麻烦! 三菱有全系列PLC和通讯模块的控件(MX Component),在VB中使用该控件,编程非常简单! 随机读X3-X6,D0 lRet = ActFXCPU1.ReadDeviceRandom2("K1X3" + vbLf + "D0", 2, lData(0)) 置位 lData(0)=1 lData(1)=1 lData(2)=1 lData(3)=1 lRet = ActFXCPU1.WriteDeviceRandom2("M1" + vbLf + "M20" + vbLf + "M3" + vbLf + "M10", 4, lData(0))

流浪电工

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 11回
  • 年度积分:0
  • 历史总积分:22
  • 注册:2004年2月18日
发表于:2005-03-11 15:18:00
6楼
to 子昕 请教怎样可以得到MX Component控件,谢谢!

增辉

  • 精华:0帖
  • 求助:1帖
  • 帖子:10帖 | 25回
  • 年度积分:0
  • 历史总积分:156
  • 注册:2004年11月15日
发表于:2005-03-11 15:50:00
7楼
to 子昕   请问怎样可以得到MX Component控件? 急需! 谢谢!

子昕

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 8回
  • 年度积分:0
  • 历史总积分:164
  • 注册:2004年5月21日
发表于:2005-03-16 13:04:00
8楼
三菱的各分销商都有! MX Component控件使用的是编程口协议,它不占用COM口,若已使用GX Developer在监视PLC,仍然可使用由MX Component控件编写的通讯程序。 在连接QPLC时,可以连422口,USB口,QJ71C24通讯口,只需更换一下控件,代码中替换一下控件名。非常方便! ————需要的朋友也可留下邮箱

◎1◎55

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2005年3月17日
发表于:2005-03-17 16:45:00
9楼
forgetmenot116@163.com 麻烦给我留一下,谢谢,希望能和你交流,

mlesec

  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 148回
  • 年度积分:0
  • 历史总积分:221
  • 注册:2002年2月21日
发表于:2005-03-23 18:26:00
10楼
http://www.syslink.com.cn 有通讯控件MELSECA.OCX

hjx6300

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 16回
  • 年度积分:0
  • 历史总积分:106
  • 注册:2003年11月11日
发表于:2005-03-24 20:28:00
11楼
hjx6300@163.com 麻烦给我留一份。谢谢

xu_lx

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 7回
  • 年度积分:0
  • 历史总积分:24
  • 注册:2003年6月25日
发表于:2005-03-30 08:15:00
12楼
to 子昕   请教怎样可以得到MX Component控件,谢谢 我的邮件地址:Lx_xu@sina.com

xu_lx

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 7回
  • 年度积分:0
  • 历史总积分:24
  • 注册:2003年6月25日
发表于:2005-03-30 08:18:00
13楼
我在http://www.syslink.com.cn下载了通讯控件MELSECA.OCX,但只能使用一小时!!需要注册!!

lifanrong

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2005年3月24日
发表于:2005-04-09 13:37:00
14楼
to 子昕 给我一分啊 ronronlong@126.com

lifanrong

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2005年3月24日
发表于:2005-04-10 11:58:00
15楼

感悟人生

  • 精华:3帖
  • 求助:0帖
  • 帖子:29帖 | 253回
  • 年度积分:0
  • 历史总积分:404
  • 注册:2003年6月02日
发表于:2005-04-13 15:21:00
16楼
TO 子昕: 请发一份给我,谢谢啦. hello0621_cn@sina.com.cn

sgs

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 17回
  • 年度积分:0
  • 历史总积分:97
  • 注册:2002年1月20日
发表于:2005-04-15 18:17:00
17楼
to 子昕   给我一分啊,谢谢! yzcc@citiz.net

sgs

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 17回
  • 年度积分:0
  • 历史总积分:97
  • 注册:2002年1月20日
发表于:2005-04-15 18:18:00
18楼
to 子昕   给我一分啊,谢谢! yzcc@citiz.net

黑猫警长

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 7回
  • 年度积分:0
  • 历史总积分:37
  • 注册:2002年12月19日
发表于:2005-04-26 15:14:00
19楼
我也想要一个详细的注释,给我发一个,好吗? zssong_cas@yahoo.com

台风来了

  • 精华:2帖
  • 求助:0帖
  • 帖子:11帖 | 61回
  • 年度积分:0
  • 历史总积分:283
  • 注册:2002年9月14日
发表于:2005-04-27 11:50:00
20楼
to 子昕    请发一份,多谢! xiezhihui_1@163.com

热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 3 下一页 尾页