中达电通PLC产品处 王乃全
摘要:本文重点讨论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 两种不同的通信模式
2.2串行通信
常用的串行通信也有两种,分别位RS-232和RS-485。
(1)RS-232通讯。RS-232的信号准位乃是参考地线而来的,如图2所示,传输端参考接地端1来传送数据;接收端则参考接地端2还原出传送端的信号准备。
(2)
由图2可知,由于两个接地端准位不一定一样,而且很容易受到干扰,所以信号在RS-232线路传输时,很容易产生错误。
(3)RS-485通讯。RS-485的信号传输方式如图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所示。
3.2按钮控件
此控件使用率很高,提供一个供系统用户操作用的按钮,如图5所示。
3.3定时器控件
此控件的最大作用在于固定的时间内会执行所设置的程序代码一次,如图6所示。VB还提供了大量的控件,在此不一一叙述。
3.4MScomm控件
要完成VB与PLC等串行设备的通信,MScomm控件是一个很好用的控件。所以在此有必要对MScomm控件做一个较为详细的说明。MScomm非标准控件,要手动添加,步骤如下:选择菜单的【工程】;选择【部件】;在弹出的对话框中做如图选择,在部件选项卡就会出现MScomm控件,如图7所示。MScomm控件基本属性如图8所示。
图7 MScomm控件
图8 MScomm控件基本属性
4 MODBUS ASCII通讯协议(案例)
Modbus总线通讯协议 分为ASCII和RTU两种。ASCII采用的格式和校验相对简单,本文采用ASCII格式,并仅对使用的功能码进行说明,更多的信息,请参看协议的详细说明。
4.1 通信格式
STX |
起始字符 “:”(3AH) |
ADR 1 |
通信地址(站号)采用2个字符
|
ADR 0 | |
CMD 1 |
功能码。采用2个字符 |
CMD 0 | |
DATA(0) |
数据项 |
DATA(1) | |
………. | |
DATA(n-1) | |
LRC CHK 1 |
LRC 校验码。采用2个字符
|
LRC CHK 0 | |
END 1 |
结束字符。采用2个字符。 END 1 = CR(0DH),END 0 = LF(0AH) |
END 0 |
4.2LRC算法
ADR H+CMD H+DATA H,然后取2的补码
4.3 功能码
05, 写入线圈
格式 |
例子(十六进制) |
字头 |
3A |
站号 |
01 |
功能码 |
05 |
地址 |
05 |
|
00 |
写入状态 |
FF |
|
00 |
LRC 码 |
F6 |
01, 读线圈状态
格式 |
例子 (十六进制) |
字头 |
3A |
站号 |
01 |
功能码 |
01 |
起始地址 |
06 |
|
14 |
读取数目 |
00 |
|
25 |
LRC 码 |
BF |
06, 写入单个字寄存器
格式 |
例子(十六进制) |
字头 |
3A |
站号 |
01 |
功能码 |
06 |
15
更多>同类技术
全年征稿 / 资讯合作
联系邮箱:
版权与免责声明
推荐图文
推荐技术
可能喜欢
|