### 三菱FX2N系列PLC与PC通讯的简易实现
#### 一、引言
在现代工业自动化领域,可编程逻辑控制器(Programmable Logic Controller,简称PLC)因其高度可靠性、强大的抗干扰能力、丰富的输入/输出(I/O)接口模块、易于编程和简便的安装等特点,成为工业控制系统中的核心组件之一。三菱FX2N系列PLC更是因其出色的性能而在市场上广受欢迎。然而,PLC在图形显示、数据分析和文本处理等方面的能力相对较弱,而这些恰恰是个人计算机(PC)的优势所在。因此,将PC作为上位机与PLC相结合,能够发挥出两者的优势,实现更为复杂的控制任务。
为了实现PC与PLC的有效通信,通常会采用专门的通信模块,如三菱的FX2N-232-BD、FX-232ADP、FX2N-232IF等。这些模块虽然能够提供稳定的通信服务,但价格不菲,从几百到几千元不等。本文介绍了一种无需额外购买专用通信模块即可实现PC与三菱FX2N系列PLC之间通信的方法,即利用PLC自带的编程接口来实现通信功能。通过这种方法,只需要简单的编程操作就能实现数据的交互。
#### 二、三菱FX2N系列PLC与计算机之间的通信协议
FX2N系列PLC的编程接口采用的是RS232C标准的异步串行通信方式,通信速率固定为9600bps。数据格式包括1位起始位、7位数据位(ASCII码)、1位偶校验位及1位停止位。具体的数据格式如图1所示。例如,字符STX(ASCII码为02H)的传送格式如图2所示。
通信通常以“帧”为单位进行,每个帧包含要传输的多个字符。三菱FX2N系列PLC定义了通信中可以使用的字符及其ASCII码和命令码,详情见表1和表2。通信过程分为两个阶段:上位机(即PC)向PLC发送命令帧;PLC接收到命令后自动向上位机发送响应帧。帧结构如图3所示,其中STX和ETX分别是帧的起始和结束标志,必须与命令码和数据一起发送。校验值是从命令码开始到ETX之间的所有字符的ASCII码之和的低两位。以读取寄存器D10为例,命令帧可以如图4所示。其中软设备首地址通过查阅FX2N的通信手册得知D10寄存器的地址为1014H;要读取从D10开始的2个字节的数据;校验值计算方法为:30H + 31H + 30H + ...
#### 三、利用VC++6.0和MSComm控件实现通信
为了实现上述通信协议,可以使用Microsoft Visual C++ 6.0环境下的MSComm ActiveX控件。MSComm控件提供了一系列的事件和方法,可以方便地实现串行通信。下面详细介绍具体的实现步骤:
1. **设置通信参数**:需要设置串行端口的基本参数,包括波特率、数据位、停止位、校验位等。对于FX2N系列PLC,这些参数应设置为:波特率9600bps、数据位7、停止位1、校验位偶校验。
2. **打开串行端口**:使用MSComm控件的`CommPort`属性指定所使用的串行端口号,并调用`Open`方法打开串行端口。
3. **编写命令帧**:根据上述通信协议构建命令帧。例如,要读取寄存器D10的数据,需要构建相应的命令帧,并计算校验值。
4. **发送命令帧**:使用MSComm控件的`Output`属性发送构建好的命令帧。
5. **接收响应帧**:当PLC接收到命令并返回响应时,可以通过MSComm控件的`Input`属性读取响应帧。
6. **解析响应帧**:解析响应帧中的数据,提取有用的信息并进行后续处理。
通过以上步骤,可以在不需要额外购买昂贵的通信模块的情况下,实现PC与三菱FX2N系列PLC之间的简单有效的通信。
#### 四、结论
本文介绍了如何利用PLC自带的编程接口和MSComm控件实现PC与三菱FX2N系列PLC之间的串行通信。这种方法不仅降低了成本,还简化了系统架构,为工业自动化领域的应用提供了新的解决方案。未来的研究可以进一步探讨提高通信效率和可靠性的方法,以及扩展更多的通信功能。