西门子6ES7315-2AH14-0AB0技术参数
2 系统功能设计
系统主要实现PLC与计算机的通讯,具体主要完成PC机指令下传、监测PLC状态、接收PLC信息等功能。系统组成:小型PLC一台、RS232串口、编程电缆、通讯界面。主操作界面在完成系统功能的前提下,力求明了直观,操作简单灵活方便。系统以VC++6.0为平台,设计的界面如图2所示。
图2 系统界面
本程序设计了四个串口可供选择,只有在选择串口之后才可进行“打开串口,关闭串口”的操作,当打开串口以后,就可以对PLC进行相应的操作了,为了使界面整洁干净,特别设计了“清空发送区”和“清空接收区”选项,当发送数据和接收数据放满编辑框时只需点击这两个按钮,数据就会清空。且实现代码相当简单,m_sSend.Empty()、m_sReceive.Empty()就可轻松实现这一任务。
PC机与PLC的通讯程序流程图如图3所示。
图3 PC机与PLC的通讯流程图
系统通信控制程序采用了MSComm控件。此控件提供了两种通信方法:①文件驱动,即用MSComm控件的OnComm文件捕获并处理通信事件和错误,它是处理串行端口交互作用的一种非常有效的方法;②查询方式,通过查询串口属性来获得事件和错误,实质上还是属于事件驱动,但在有些情况下显得更为便捷。MSComm6.0控件的属性:①CommPort,设置或返回通信端口号;②Settings,以字符串的形式设置或返回波特率、奇偶校验、数据位和停止位;③PortOpen,设置或返回通信端口的状态,也可以打开和关闭端口;④bbbbb,返回和删除接收缓冲区中的字符;⑤bbbbbMode,设置或返回bbbbb属性取回的数据的类型,数据取回的形式为字符串或二进制数据的数组;⑥CommEvent返回*近的通信事件或错误的数字代码,通信程序设计时可以根据该属性值执行不同的操作,在运行时为只写;⑦Output,将字符串写入发送缓冲区。
MSComm6.0控件只有一个事件,即Oncomm事件。在通信时如果发生错误或者事件,将会引发Oneomm事件并且改变其属性值,通过GetCommEvent()可获得Oncomm产生事件或错误的代码。在与PLC进行通信的过程中,使用MSComm6.0控件可以自动完成PLC对计算机发送信息的接收,*终实现PC机对PLC的状态检测。
软件实现过程:FX2N系列的PLC与计算机之间的通信采用RS-232C标准,其传输速率固定为9600bps,奇偶校验位采用偶校验。数据以帧为单位发送和接收。PC机向PLC中写数据时需对串口进行初始化,并对波特率、校验位等进行设置,根据通信协议对PLC进行相应的读写、复位、置位等操作,PLC根据PC机送来的控制字进行相应的操作。数据发送,采用专用发送指令XMTTABLE,CommPort,其中TABLE为发送缓冲区的首地址,首地址中保存要发送的字节数,即数据长度,*大为255,其后的地址中保存要发送的数据,CommPort指定用于发送的端口。对于数据接收,使用接收指令RCVTABLE,CommPort,接收指令激活初始化或结束接收信息,通过制定端口接收信息并存储于数据缓冲区中,数据缓冲区的第一个数据指明了接收的字节数。
3 系统功能验证
将计算机用通讯电缆与PLC相连后,发送请求05H以后,验证计算机与PLC是否可以正常通信,接收区显示06,表示PLC对ENQ的确定回答,即PLC已准备好,可以进行下面的操作,具体如图4和图5。
这里主要对PLC读值功能进行验证。读操作命令格式如下:
STX—CMD0一数据段一ETX—SUMH—SUML
在按上述命令格式发送相应的代码后,就可直接读取PLC响应的信息了。响应信息格式如下:
STX—DATA—ETX—SUMH—SUML
图6和图7分别是对PLC进行读值验证时发送数据和接收数据的显示。
图6 发送数据显示
图7 接收数据显示
其中接收数据显示中的023030033633,是对x软地址值(0080H)读取后接收到的数据。具体算法如下:
nSUMLx=(0X30+0X30+0X03)%16=3<9,
nSUMHx=((0X30+0X30+0X03)%256)/16=6<9,
nSUMLx=0x30+nSUMLYl=0X33,
nSUMHx=0X30+nSUMHY2=0X36
故,转变成两字节ASCII代码SUMLx=33;SUMHx=36。
理论分析和实际操作的结果是一致的,即证明了本设计是准确无误的。
图1 接口引脚定义
RS-422和RS-232C是两种不同标准的串行数据接口,两者的主要差别在于信号传输方式不同。RS-232C标准利用信号线与公共地线之间的电压差进行信号传输,采用的是单向传输方式;RS-422标准则是利用传输线之间信号的电压差进行传输的,采用的是差动传输方式。SC-09电缆实现了这两种不同的信号传输方式之间的转换,其内部电路如图2所示。
图2 SC-09电缆内部电路
2 通信协议
PC机与PLC之间有两种通信方式:一种是PC机具有优先权而PLC始终被动响应Pc机发来的命令;另一种则是PLC具有优先权,将命令发送给PC机,并接收来自PC机的响应。本文采用的是前一种通信方式。
为实现Pc机与FX系列PLC编程口之间的通信,系统采用的是编程口专用通信协议。
2.1 控制字符
在PC机与FX系列PLC的串行通信中,数据是以帧为单位发送和接收的。其中,控制字符ENQ(05H)、ACK(06H)和NAK(15H)可以构成单字符帧心1,其余的字符帧在发送或接收时都必须用控制字符STX(02H)和ETX(03H)分别作为该帧的起始标志和结束标志。
各控制字符的意义如表1所示。
表1 控制字符意义
2.2 命令代码
PC机对PLC相应软元件的操作是通过“0”、“1”、“7”、“8”四个命令符来实现的,各命令符的含义如表2所示。
表2 命令字符含义
2.3 命令帧
一个完整的命令帧由控制字符STX(02H)、命令码(CMD)、数据段、控制字符ETX(03H)以及和校验码五部分组成。其中,和校验码是从命令码到控制字符ETX的所有字符的ASCII码(十六进制)相加所得结果的*低两位数。
①PC机“读”命令帧
“读”命令帧由报文开始标志、命令码、软元件首地址、软元件数据长度(字节数)、报文结束标志以及和校验码组成。
当通信正确时,PLC返回的应答帧由报文开始标志、数据段、报文结束标志以及和校验码组成;通信出错时,PLC应答“NAK”