邹益民,庹超超,査浩毅,李金葵(金陵科技学院网络与通信工程学院,江苏南京,210031)
基于Modbus协议的S7-200 PLC语音播报功能扩展
邹益民,庹超超,査浩毅,李金葵
(金陵科技学院网络与通信工程学院,江苏南京,210031)
介绍一种基于Modbus协议的S7-200 PLC扩展系统,该系统采用单片机和科大讯飞TTS语音模块为PLC提供语音播报功能。本文对Modbus协议,S7-200的Modbus-RTU通讯指令及单片机语音播报系统的控制方式等进行了较详细的介绍, 并开发了一种基于S7- 200PLC实际应用环境的语音播报系统。文中给出了系统的详细设计方案,可供同类系统的设计及应用提供借鉴。
Modbus协议;PLC;语音播报;单片机;TTS;语音合成模块
PLC可编程控制器由于功能强、性价比高、可靠性高、扩展灵活、环境适合能力强及安装维护方便等突出优点而在自动控制系统中得到广泛应用。但在实际应用中,单独使用PLC构建控制系统仍然存在某些不足:PLC的数据处理和管理能力较弱,也不能给用户提供良好的人机交互界面。故在某些特定应用场合,若能将PLC与单片机系统相结合,构成功能灵活的扩展模块,可大大丰富PLC的应用功能。ModBus协议是一种可靠而有效的工业控制系统通信协议,由美国莫迪康公司开发,现已被众多的硬件厂商所支持并广泛应用,通过ModBus协议可以方便地完成现场控制网络的数据传输。
本文以应用广泛的SIEMENS公司S7-200PLC为例,介绍一种以ModBus协议为纽带,利用单片机及TTS模块扩展PLC的语音播报功能,从而为S7-200 PLC用户提供一个语音播放平台的应用实例。系统设计方案是:采用单片机及TTS构成语音播放单元,而S7-200 PLC则通过Modbus通信方式控制该模块以实现即时的语音播报功能。由于ModBus支持多机网络,故若本系统应用于ModBus组网模式时,多个位于不同地理位置的PLC与语音模块可相互选择。一个PLC可控制多个语音模块;同理,一个语音模块也可为多个PLC服务,从而形成一个语音播报网络系统。
Modbus协议是全球第一个真正用于工业现场的总线协议,以主从方式工作,主从设备间的通信以请求/应答模式进行。主设备使用请求消息中的功能代码通知从设备要执行何种功能,而请求信息中的数据段则给出了所需功能的附加消息。从设备则只允许产生应答消息,以回应主设备指定的功能信息。由于请求、应答消息中均含有必要的错误检测域,从而使Modbus协议具有极强的差错检测能力。Modbus串行协议支持ASCII和RTU两种信息传输模式(另一种Modbus TCP基于TCP/IP协议),在相同的数据传输波特率下,RTU模式比ASCII模式具有更高的传输效率,但也导致其通讯处理过程相对复杂。本系统选用传输效率较高的Modbus RTU作为传输模式。
Modbus-RTU 模式消息帧由起始定界、地址字段、功能字段、数据字段、CRC校验字段及结束定界组成。其地址字段表示指定的从站地址;代码字段则表示从站应执行的具体功能;数据字段表示代码字段的附加信息;CRC校验则用来检测通讯报文有无错误。值得注意的是,在Modbus RTU消息帧传输时,协议规定在消息帧结束前每字节间不应有超过1.5个字符时间的“字符间隙”,而发送新消息帧则需与旧帧间隔3.5个字符时间“帧间隙”以上,否则将判断为传输出错。
S7-200系列PLC的ModBus通信方式仅支持ModBus-RTU模式下的01~06以及15和16功能码。其主站及从站通信指令各不相同,分述如下:
2.1S7-200 系列 PLC 的主站通信指令
S7-200的主站指令库支持端口0~1,可用的通讯指令包括:
● MBUS_CTRL指令格式
用于组态 PLC为ModBus-RTU主站,用户还可定义通讯波特率、奇偶校验及主站等待从站响应的超时值,指令还提供完成标志及错误代码输出。详细格式如下:
● MBUS_MSG指令格式
用于读写从机数据。用户可指定从设备地址、数据读/写方向、从站寄存器地址、待读写的从站数据元素(位或字)数目及主PLC存放相关数据的V存储区首地址,指令还提供完成标志及错误代码输出。详细格式如下:
2.2S7-200 系列 PLC 的从站通信指令
S7-200的从站指令库仅支持端口0,可用的通讯指令包括:
● MBUS_INIT:
组态 PLC为ModBus-RTU从站模式,用户还可定义从站地址、通讯波特率、奇偶校验、延时时间、最大开关输入输出点数、最大模拟量输入点数、最大保持寄存器字数量、保持寄存器区起始地址等;指令还提供完成标志及错误代码输出。详细格式如下:
● MBUS_SLAVE:
用于服务来自ModBus主站的请求,必须在每个循环周期都执行,以便检查和响应ModBus主站的请求,指令还提供完成标志及错误代码输出。详细格式如下:
3.1系统总体结构设计
图1 . PLC语音播报系统总体框图
图2 . 单片机语音模块硬件设计图
系统的整体结构如图1所示,S7-200 PLC与单片机语音播报系统通过RS485连接。单片机语音系统的硬件电路则主要包括单片机、语音合成模块、LCD显示模块,按键模块、RS485电平变换模块、电源模块等。
单片机语音系统的硬件部分电路设计可参见图2,由AT89C51,XF-S4240语音模块,音频放大器,喇叭等组成。单片机利用软件仿真SPI接口控制XF-S4240实施语音合成,随后由LM386完成音频放大后推动喇叭发音。本设计中另使用一片点阵式LCD作为系统的显示输出,配合4x4 薄膜键盘,为系统提供简易的人机交互接口,并可在必要时作为PLC的一种辅助人机接口使用。
3.2单片机MODBUS-RTU通信功能实现
由于AT89C51单片机与PLCModbus串口分别采用标准TTL信号及RS-485信号电平,故系统中使用了一片MAX485进行电平转换。由于RS-485采用半双工模式,故单片机还需另行分配一个IO引脚
P1.0以控制MAX485的传输方向,从而避免因多个串行接口同时进入发送状态而导致通讯出错。
数据报文的正确定界及编解码是单片机Modbus通讯协议开发的关键任务。前者可借助单片机定时中断以便对Modbus RTU协议规定的字符间隙及帧间隙进行准确判断;后者则又包括报文接收/CRC校验/报文解析以及报文装配/附加CRC校验/报文发送等过程,报文的串口收发采用中断方式以满足实时性需要。相关的设计简述如下:
由于单片机主频为11.0592MHz,本系统Modbus串行接口的波特率设计为9600bps,则可将定时器0设置为每1/9600bps≈104μs产生一次中断,恰与通讯的位速率一致。由于每字符信息包括1个起始位,8个数据位及1个停止位共计10位,故可分别用阈值15及35对Modbus协议中字符间1.5字符间隙及数据流间3.5字符间隙进行准确监测。
在定时中断服务程序中,以位速率累计串口收到数据的时间间隔值,该值在每次接收到新的信息时清零,这样该值实际代表了相邻接收字符之间的时间间隙,由此即可对字符间隙及帧间隙作出准确判断。
使用串口中断用以实现Modbus串行数据的收发操作。若发送中断有效且末发送完毕,则发送下一字符信息;若接收中断有效,则首先判断是否与上一字符间隙超过3.5字符,若是则代表上一帧信息接收完毕,可进行后续的数据解码操作;若发现与上一字符间隙为1.5~3.5字符,则按Modbus协议表明出错,应丢弃已接收的信息,此时可将接收指针清零;若与上一字符间隙小于1.5字符,则判断为正常连续字符,可正常接收本帧的后续字符。本系统设计中以S7-200 PLC为Modbus通讯主站,以方便PLC控制语音模块。故单片机还须根据Modbus协议完成对PLC数据请求包的接收、解析及响应包的装配、发送等功能。
3.3PLC ModBus-RTU通信协议设计
PLC与单片机语音模块的通信协议采用ModBus-RTU协议。S7-200 PLC工作在主站模式下,使用MBUS_CTRL及MBUS_MSG指令通过V存储区向单片机发送语音文本信息或查询单片机的状态信息,单片机在接收到合法的信息帧后将给出适当的响应信息。为扩展方便,协议支持多个PLC通过RS485连网方式向一个或多个单片机模块发送语音播报命令。
3.4语音播报功能实现
语音合成技术(TTS)被用于将文字信息转化为语音信息,以使人们获取信息的方式更加丰富和自然。本系统中选用科大讯飞的XF-S4240嵌入式中文语音合成模块。该模块支持GB2312、GBK、BIG5及UNICODE四种内码格式的中文文本,同时提供英文字母的合成。
语音合成程序的运行步骤是:单片机首先判别语音合成模块是否处于就绪状态,若是,则依次发送帧头、字节总数、语音合成命令码、语音合成格式控制码及待合成文本,语音模块将随后依所设命令完成TTS转换及语音播报。
3.5单片机软件程序设计
程序首先对单片机各IO端口、定时器、串行口、中断系统等外部设备进行初始化,随后进入工作循环。等待PLC通过ModBus协议发送的播报信息及控制命令,返回应答信号,并将相关信息送TTS模块以语音方式播报;之后读取用户按键信息,完成相关功能操作,最后根据需要刷新LCD显示。
PLC在工业控制应用广泛,但其人机接口及数据运算功能仍然相对薄弱,若配以功能灵活的单片机系统,采用ModBus-RTU协议进行相互通讯,则可方便地为PLC扩展各种增强功能。本系统利用上述技术成功地实现了单片机与S7-200PLC之间的ModBus通信,并为PLC扩展了语音实时播报功能,该系统已被应用于本校实训室小型PLC控制实验装置之中。通过PLC功能扩展一方面开拓了学生的知识面,另一方面为学生提供学习与操作的提示信息,有助于学生对PLC控制系统、单片机软硬件系统及ModBus协议的学习与认识。应用实践表明,该系统可靠性高、成本低,可获得较好的应用效果。由于多数主流PLC支持ModBus通讯,故本系统的设计思路也可为其它PLC的功能扩展提供借鉴。
[1] 张洁,马凤铭,徐颖. 基于MODBUS协议的单片机与S7-200PLC串行通信的实现[J]. 鞍山师范学院学报,2013,(4).
[2] 李振东. Modbus协议的工业PLC监控仪表设计[J]. 单片机与嵌入式系统应用,2012,(4).
[3] 顾海勤,杨 奕,全 毅,马 跃. 基于 MODBUS 协议的智能仪表与 PC 机双向通讯设计[J]. 仪表技术与传感器,2013,(12).
[4] 何跃智. MODBUS RTU通讯协议在S7-200中的应用[J]. 可编程控制器与工厂自动化,2006,(3).
[5] 何海珍,李欣,周勇,晏巍,张建国. CRC-16算法及其单片机实现[J]. 工业控制计算机,2012,(7).
[6] 朱文杰.S7-200 PLC 编程设计与案例分析[M].北京:机械工业出版社,2010.
[7] Siemens AG.S7-200可编程序控制器系统手册[M]. 北京:迪科普锐机电技术公司,2008: 348-362.
[8] 邹益民. 基于TTS模块的语音播报红外数字测温计设计[J].世界电子元器件,2013,(2).
[9] 朱志伟,刘湘云. 基于SYN6288的TTS语音系统[J]. 单片机与嵌入式系统应用,2012,(9).
邹益民,(1963年出生),男,2006年毕业于北京理工大学自动控制系,获得博士学位,教授;主要研究方向:控制理论与工程,导航与制导,图像处理,模式识别。
Extend S7-200 PLC Voice Broadcast Feature Based on Modbus Protocol
Zou Yimin,Tuo Chaochao,Zha Haoyi,Li Jinkui
(College of network and communication engineering,Jinling Institute of Technology,Nanjing,Jiangsu 210031)
Introduce of a S7-200 PLC expansion system based on Modbus protocol,which could be used to extend PLC’s voice broadcast feature using SCM and IFLYTEK TTS module.In this paper,detailed descriptions about the Modbus protocol and the S7-200 communication instruction for Modbus-RTU,and also the control method of SCM voice broadcast system were presented. A voice broadcast system based on S7-200PLC actual application was developed. This paper also described the detailed system’s schemes and could provide reference for the design and application of similar system.
Modbus protocol;PLC;Speech broadcast;SCM(Single Chip Microprocessor);Text To Speech;Speech synthesis module
TP23 TP274
A