登录
首页 电脑编程
回帖 发帖
正文

主题:Modbus 通讯协议编程

点击:68183 回复:86

你好:
 在网上拜读了你的文章( Modbus 通讯协议编程),本人正需要有此方面的帮助,不知
能否指点一二。谢谢。如果按你说的Modbus通讯,如何设置变频器各项参数??
台达变频器(一台)与电脑如何通信?
硬件:
台达变频器是:VFD015M21A系列
通信模块:UOTEK 公司的UT-201型号 RS2323/RS485转换器
RS232/RS485 转换器与VFD015M21A变频器的接线如下:
 RS232/RS485               变频器
T/R-   ----------------->  SG-
T/R+   ----------------->  SG+
变频器的参数设置如下:
 参数      设置值   (备注)
 P00       d03      (主频率输入通信输入RS485)  
      注:   端子插梢跳线 :J5,J6,J7皆为1脚与2脚连接
 P01       d03      (运转指令由通信输入控制,键盘STOP有效)
 P66       d60.0    (通讯主频设定)
 P88       d01      (RS485通讯地址)
 P89       d01      (资料传输速度,9600位元/秒)
 P92       d00      (通讯资料格式,)
 P113      d00      (通讯BUS选择,ASCII BUS模式)
(上面参数设置是否有误?还须设置其他的参数吗?)
软件:
上位机用VB6.0编程语言.
引入MSCOMM控件,其属性设置如下:
.Comport =1
.HandShaking=0
.InputMode =0
.InBufferSize=1024
.OutBufferSize =512
.Setting="9600,n,7,2"
其他值默认
本人依据VFD015M21A变频器的通信资料格式,用VB设计一个窗体,然后在其上
放置一个命令按钮,整个程序的代码如下:
Private Sub Command1_Click()
    '读取驱动器01位置的P04参数
  MSComm1.Output = Chr(2) + "010804" + Chr(3) + "30"
TimeDelay 100   '为一个时间延时函数
Text1.Text = MSComm1.Input
End Sub
Private Sub Command2_Click()
    '让驱动器启动反转
 MSComm1.Output = Chr(2) + "0102" + Chr(3) + SumChk("0102" + Chr(3))
End Sub
Private Sub Command3_Click()
    '让驱动器停止运转
 MSComm1.Output = Chr(2) + "0100" + Chr(3) + SumChk("0100" + Chr(3))
End Sub
Private Sub Form_Load()
MSComm1.PortOpen = True
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), 2)
End Function
       
结果上面的程序并不能与变频器通信,发送的命令变频器并不响应,并且MSCOMM
控件也没有返回值.
请问发生错误的原因是在哪一部分?是变频器参数设置部分或是VB程序中发送
给变频器的命令不正确??请问如何修正?
如果有简单的示例寄我,不胜感谢.lj-000@163.net
改用台达变频器是:VFD015M23A系列变频器试验,变频器设置同上(没有端子插
梢跳线,没有P113设置),VB程序同上,发送三个不同命令时,结果时有同一个p字
符返回, 但发送命令还是起不了作用.这又是什么原因 ?
04-01-10 21:49
你好:
 在网上拜读了你的文章( Modbus 通讯协议编程),本人正需要有此方面的帮助,不知
能否指点一二。谢谢。如果按你说的Modbus通讯,如何设置变频器各项参数??
台达变频器(一台)与电脑如何通信?
硬件:
台达变频器是:VFD015M21A系列
通信模块:UOTEK 公司的UT-201型号 RS2323/RS485转换器
RS232/RS485 转换器与VFD015M21A变频器的接线如下:
 RS232/RS485               变频器
T/R-   ----------------->  SG-
T/R+   ----------------->  SG+
变频器的参数设置如下:
 参数      设置值   (备注)
 P00       d03      (主频率输入通信输入RS485)  
      注:   端子插梢跳线 :J5,J6,J7皆为1脚与2脚连接
 P01       d03      (运转指令由通信输入控制,键盘STOP有效)
 P66       d60.0    (通讯主频设定)
 P88       d01      (RS485通讯地址)
 P89       d01      (资料传输速度,9600位元/秒)
 P92       d00      (通讯资料格式,)
 P113      d00      (通讯BUS选择,ASCII BUS模式)
(上面参数设置是否有误?还须设置其他的参数吗?)
软件:
上位机用VB6.0编程语言.
引入MSCOMM控件,其属性设置如下:
.Comport =1
.HandShaking=0
.InputMode =0
.InBufferSize=1024
.OutBufferSize =512
.Setting="9600,n,7,2"
其他值默认
本人依据VFD015M21A变频器的通信资料格式,用VB设计一个窗体,然后在其上
放置一个命令按钮,整个程序的代码如下:
Private Sub Command1_Click()
    '读取驱动器01位置的P04参数
  MSComm1.Output = Chr(2) + "010804" + Chr(3) + "30"
TimeDelay 100   '为一个时间延时函数
Text1.Text = MSComm1.Input
End Sub
Private Sub Command2_Click()
    '让驱动器启动反转
 MSComm1.Output = Chr(2) + "0102" + Chr(3) + SumChk("0102" + Chr(3))
End Sub
Private Sub Command3_Click()
    '让驱动器停止运转
 MSComm1.Output = Chr(2) + "0100" + Chr(3) + SumChk("0100" + Chr(3))
End Sub
Private Sub Form_Load()
MSComm1.PortOpen = True
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), 2)
End Function
       
结果上面的程序并不能与变频器通信,发送的命令变频器并不响应,并且MSCOMM
控件也没有返回值.
请问发生错误的原因是在哪一部分?是变频器参数设置部分或是VB程序中发送
给变频器的命令不正确??请问如何修正?
如果有简单的示例寄我,不胜感谢.lj-000@163.net
改用台达变频器是:VFD015M23A系列变频器试验,变频器设置同上(没有端子插
梢跳线,没有P113设置),VB程序同上,发送三个不同命令时,结果时有同一个p字
符返回, 但发送命令还是起不了作用.这又是什么原因 ?
04-01-10 21:52
如获至宝哇!
谢谢!
我现研究一下,有不懂的地方还要向您请教,恳请您不要拒绝。
04-01-13 10:40
你好:
      在网上拜读了你的文章( Modbus 通讯协议编程),本人正需要有此方面的帮助,不知能否指点一二。请问下位机与上位机该如何通信,我用的是汇编语言,
我的信箱是:ncdwr123@yahoo.com.cn.
04-03-01 20:10
本人水平很低,先在此注册,以后有问题时再向各位高手请教!!!
gk_mimi@tom.com
04-03-10 11:18
我也正在做这方面的,你可以帮我吗?
我是想通过pc机控制moden来拨打和接受电话,通过vb编的你能给我帮助吗?
wjf1010@sohu.com
04-04-06 13:00
嘎,感谢上传资料,我们都是用VB编的
04-04-07 12:56
thanks  good friends
04-04-08 14:14
谢谢。
04-04-25 21:28
樓主可以
04-04-26 17:31

上一页 下一页

工控新闻

更多新闻资讯