工控网首页
>

应用设计

>

VB与台达触摸屏通信的实现

VB与台达触摸屏通信的实现

2007/7/11 9:52:00
摘要:本文重点讨论MODBUS ASCII通信协议及通过VB如何实现与台达触摸屏的通信。对于Visual Basic6编程语言亦有简要的介绍。 关键词:Visual Basic MODBUS ASCII HMI 1 引言 在自动化工程集成中经常遇到VB与触摸屏通信问题。对于不同的MODBUS通信协议触摸屏产品,无论是通信协议和VB中的编程原理都是一样的,所不同的仅是MODBUS在PLC和HMI中的地址映射不一样。为了集中解决这个问题,本文以台达触摸屏通讯案例为背景,采用了一个比较简单的实例描述如何建立双方的通信,不涉及到更为复杂的VB与HMI的操作和编程技巧。 2 串行通信基本概念 2.1 通信的种类 通常通信的形式可以分为两种,并行通信(Parallel Communication)和串行通信(Serial Communication)。所谓并行,既是一次传输量为8位;而串行一次只传1位。这两种不同的通信模式如图1所示。
图1图1 两种不同的通信模式
2.2 串行通信 常用的串行通信也有两种,分别位RS-232和RS-485。 (1)RS-232通讯。RS-232的信号准位乃是参考地线而来的,如图2所示,传输端参考接地端1来传送数据;接收端则参考接地端2还原出传送端的信号准备。
图2图2 RS-232通讯
由图2可知,由于两个接地端准位不一定一样,而且很容易受到干扰,所以信号在RS-232线路传输时,很容易产生错误。 (2)RS-485通讯。RS-485的信号传输方式如图3所示。
图3图3 RS-485通讯
RS-485的信号将被传送出去时会分成正负两条线路,当到达接收端后,在将信号相减还原成原来的信号;如果将原始的信号表示成(DT),而被分成的信号分别标示成(D+)及(D-),则DT= (D+)-(D-) 同样地,接收端在接收到信号后,也依据上式还原成原来的样子。如果线路受到干扰,两条线路的信号分别为(D+)+Noise (D-)+Noise。接收端还原信号为 (DT)= [(D+)+Noise]-[ (D-)+Noise] 与先前结果一样,所以RS-485可以有效的防止噪声的干扰。 3 Visual Basic控件 VB是微软的窗口软件,提供了很多接口成员。对象、属性、事件、方法就是四个重要的接口。 3.1 卷标控件 此控件专用于显示文字,数字用,显示如图4所示。
图4图4 卷标控件
3.2 按钮控件 此控件使用率很高,提供一个供系统用户操作用的按钮,如图5所示。
图5图5 按钮控件
3.3 定时器控件 此控件的最大作用在于固定的时间内会执行所设置的程序代码一次,如图6所示。VB还提供了大量的控件,在此不一一叙述。
图6图6 定时器控件
3.4 MScomm控件 要完成VB与PLC等串行设备的通信,MScomm控件是一个很好用的控件。所以在此有必要对MScomm控件做一个较为详细的说明。MScomm非标准控件,要手动添加,步骤如下:选择菜单的【工程】;选择【部件】;在弹出的对话框中做如图选择,在部件选项卡就会出现MScomm控件,如图7所示。MScomm控件基本属性如图8所示。
图7图7 MScomm控件
MScomm控件基本属性: PortOpen :通信口是否打开 Input:收到的字符 Output:发送的字符
图8图8 MScomm控件基本属性
4 MODBUS ASCII通讯协议(案例) Modbus总线通讯协议 分为ASCII和RTU两种。ASCII采用的格式和校验相对简单,本文采用ASCII格式,并仅对使用的功能码进行说明,更多的信息,请参看协议的详细说明。 4.1 通信格式
4.2 LRC算法 ADR H+CMD H+DATA H,然后取2的补码 4.3 功能码
5 VB与台达HMI通信的实现(案例) 5.1 控制要求 (1)PC能控制HMI中某个位地址的启动、停止。 (2)在HMI上对某个内部寄存器进行数值修改操作,在PC上能同步显示。 5.2 设计思路 (1)PC控制的内部地址为$2000.0,查看映射表,知道为MODBUS地址为B00001。在PC上按功能码05操作。 (2)HMI上写入的寄存器地址为$0,查看映射表,知道为MODBUS地址为W40001。在PC上按功能码03操作。 HMI内部地址与MODBUS地址映射表
5.3 VB接口的设计
用按钮控制$2000.0的启动停止; 用timer组件不停的读取$0的显示值(十六进制显示,可以转换为十进制); 用MScomm控件实现PC与PLC的通信。 5.4 代码构成 (1)LRC算法校验的实现: Public Function LRC(str As String) As String c = 0 l = Len(str) For c = c + 1 To l c_data = Mid$(str, c, 2) d_lrc = d_lrc + Val(“&H” + c_data) c = c + 1 Next c If d_lrc > &HFF Then d_lrc = d_lrc Mod &H100 End If h_lrc = Hex(&HFF - d_lrc + 1) If Len(h_lrc) > 2 Then h_lrc = Mid(h_lrc, Len(h_lrc) - 1, 2) End If LRC = h_lrc End Function (2)读取$0,也就是W40001数值: Private Sub Timer1_Timer() MSComm1.Output = “:” + “010300000001” + LRC(“010300000001”) + Chr$(13) + Chr$(10) MSComm1.Output = “:” + “00050500FF00” + LRC(“00050500FF00”) + Chr$(13) + Chr$(10) inputstring = MSComm1.Input Text1.Text = Mid(inputstring, 8, 4) End Sub (3)控制$2000.0 ON: Private Sub Command1_Click() MSComm1.Output = “:” + “00050000FF00” + LRC(“00050000FF00”) + Chr$(13) + Chr$(10) End Sub (4)控制$2000.0 OFF: Private Sub Command2_Click() MSComm1.Output = “:” + “000500000000” + LRC(“000500000000”) + Chr$(13) + Chr$(10) End Sub (5)HMI中的程序与设置如图9所示(要注意【人机站号】与【控制器】的设置):
图9图9 台达HMI中的程序与设置
6 结束语 VB语言使用的简易为众多工程技术人员与串行设备的通信提供了很大的方便。 台达触摸屏采用标准的MODBUS协议,这一协议目前广为流行,为大家所熟知,也为大家最终实现通信提供了简化的平台。由于台达所有的机电产品都支持MODBUS协议,所以,掌握了VB与触摸屏通信过程,也就等于掌握了PC与台达所有机电产品的通信。 参考文献 [1]VB与RS-232通信实例. [2]VB6从入门到精通. [3]DOP系列人机界面应用技术手册. [4]DVP-Protocal. 2007-3-15
投诉建议

提交

查看更多评论
其他资讯

查看更多

追“光”而行 台达邀您共赴上海光伏展之约

台达“解密Cloud to Edge AI” 于COMPUTEX 2024展出驱动AI技术

台达参编中国企业可持续发展报告指南6.0 助力高质量ESG信息披露 共创低碳可持续未来

再获嘉奖 台达收获“中国自动化产业年会”三大奖项

夯实智造升级基础:设备联网 信息通畅