background image

256 个串行通信端口,不过 Visual Basic 的 MSComm 控件则仅限于 16 个端口。

2. Settings 属性

Settings 属性用于设置初始化参数。以字符串的形式设置波特率、奇偶校验、数据位、停止位

4 个参数。其格式为“BBBB,P,D,S”,其中 BBBB 表示波特率,P 表示奇偶校验位检查方

式,

D 表示数据位数,S 表示停止位数。一般情况下,欧美仪器习惯使用“9600,n,8,1”当成

设置值;而日本仪器则习惯使用

“9600,e,7,2”作为设置值。Settings 设置完成之后,所传输

及接受的字符串便以此设置为准,使用

RS-232 通信的双方,Settings 必须完全一样,彼此

才能顺利地通信,否则双方将无法正确接收到彼此所传输的信号。所以,该属性的设置必
须和三菱

PLC 中 D8120 的相关设置保持一致。在这里,统一采用“9600,e,7,2”的设定。

3. PortOpen 属性

PortOpen 属性用于设置通信连接端口的状态。在使用串行端口之前必须先将要使用的串行
端口打开。在上位机程序中应进行如下设定

:

Private Sub Form_Load()          ‘窗体载入事件
MSComm1.CommPort = 1             ‘选择端口号
MSComm1.Settings = "9600,e,7,2"  ‘设置端口属性
MSComm1.PortOpen = True          ‘打开端口
End Sub

4. Output 属性

MSComm 控件的 Output 属性提供了发送的功能,当从计算机向可编程控制器写入数据或
从可编程控制器读取数据时,上位机应当先发出以下格式(格式

1)的指令字符串: 

ENQ 站号 PC 号 命令 消息等待时间 字符区域 A 和校验代码
其中站号为在

D8121 中的设定值,这里是:00,PC 号对于 FX 系列为:FF。

因为

ENQ,ACK,NAK 等通信控制字符是不可见字符,所以先用 Chr 函数对其进行赋值:

ENQ=Chr(5) ACK=Chr(6) NAK=Chr(&H15)
然后在上位机程序中写入以下代码即可发出指令:
MSComm1.Output=ENQ &“00FF<命令><消息等待时间><字符区域 A><和校验代码>”

5. Input 属性

Output 属性相反,Input 属性提供了接收数据的功能。它将对方传到输入缓冲区中的数

据读进程序中,并清除缓冲区中已被读取的数据。
a. 如果是从计算机向可编程控制器写入数据时,接收到从可编程控制器返回的应该是以下
格式的字符串:
ACK 站号 PC 号  或者  NAK 站号 PC 号 错误代码
前一种表示可编程控制器已经正确接收到从计算机发来的指令,后一种表示可编程控制
器未正确接收到从计算机发来的指令。
b. 如果是从计算机向可编程控制器读取数据时,接收到从可编程控制器返回的应该是以
下格式的字符串:
STX 站号 PC 号 字符区域 B ETX 和校验代码 或者 NAK 站号 PC 号 错误代码
如果要连续读取数据可以利用

Timer 控件。将 Output 和 Input 放在 Timer 控件的 Timer 事件

中即可。程序会以

Timer 控件的 Interval 属性中设置的间隔去发送指令和接收数据。

对于

MSComm 控件的其他一些属性使用 VB 的默认值即可。

在串行通信传输的应用中,经常使用的

Visual Basic 中的字符串处理函数如下:

Chr 函数:返回含有特定 ANSI 或 DBCS 字符码的字符串。
Asc 函数:返回字符串第一个字符的 ANSI 或 DBCS 字符码。
Len 函数:返回以字符数为单位的字符串长度。