图2 智能控制器RS-485通信接口电路
现场智能节点
智能控制器在自动控制系统中需完成现场数据采集和处理、控制器各执行器件的控制及与远程监控计算机之间的通信等主要工作,因此智能控制器的设计是整个系统的关键部分。其结构框图如图1所示。
考虑到可靠性、性价比等因素,智能控制器CPU采用三菱系列单片机M30201。智能控制器设计采用结构化设计方法,包括四大部分:RS-485通信接口电路部分、电源管理部分、信号输出执行部分、I/O接口部分。其中I/O接口部分包括现场数据采集、键盘输入与显示和执行器的控制信号输出等工作。
在某些工业控制领域,由于现场情况十分复杂,各个节点之间存在很高的共模电压。虽然RS-485接口采用的是差分传输方式,具有一定的抗共模干扰的能力,但当共模电压超过RS-485接收器的极限接收电压,即大于+12V或小于-7V时,接收器就无法正常工作,严重时甚至会烧毁芯片和仪器设备。为消除此问题,增强智能控制器在通信中的抗干扰能力,本设计采用二次集成芯片MAX1480进行信号隔离,接口电路如图2所示。
本设计的异步通信数据以字节的方式传送,在每一个字节传送之前,先要通过一个低电平起始位实现握手。为防止干扰信号误触发RO(接收器输出)产生负跳变,使接收端MCU进入接收状态,在RO引脚外接3k缴侠缱瑁籔3.4与DE引脚之间通过74HC86实现反相控制,以防止MCU上电时对总线的干扰。
图3 CRC校验码生成流程图
Modbus通讯协议及编程
本设计采用Modbus通信协议的RTU通讯模式,消息发送至少要以3.5个字符时间的停顿间隔开始。网络设备不断侦测网络总线,包括停顿间隔时间内。当个域(地址域)接收到,每个设备都进行解码以判断是否发往自己的。一个典型的消息帧为:起始位 设备地址 功能代码 数据 CRC校验 结束符。监控计算机通过将要联络的智能控制器的地址放入消息中的地址域来选通智能控制器。当智能控制器发送回应消息时,它把自己的地址放入回应的地址域中,以便监控计算机知道是哪一个设备做出回应。地址0是用作广播地址,以使所有的智能控制器都能认识。当消息从监控计算机发往智能控制器时,功能代码域将告之智能控制器需要执行哪些行为。在这里主要使用到2种功能码,03H:读寄存器数据;06H:写寄存器数据。读寄存器的内容包括开关分/合闸状态、当前电流值、电压值、故障记录值等。智能控制器回应时,它使用功能代码域来指示是正常回应(无误)还是有某种错误发生(称作异议回应)。对正常回应,智能控制器仅回应相应的功能代码。对异议回应,智能控制器返回一等同于正常代码的代码,并将功能代码首位置为逻辑1。例如:一从监控计算机发往智能控制器的消息要求读一组保持寄存器,将产生如下功能代码:0 0 0 0 0 0 1 1对正常回应,智能控制器仅回应同样的功能代码。对异议回应,它返回: 1 0 0 0 0 0 1 1除功能代码因异议错误作了修改外,智能控制器将一独特的代码放到回应消息的数据域中,监控计算机应用程序得到异议的回应后重发信息,直到智能控制器能够正确响应;通过写寄存器可实现开关遥控分/合闸控制及更改智能控制器系统参数等功能。在一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束,一个新的消息可在此停顿后开始,如果停顿时间小于3.5个字符时就会引起CRC校验错误。在程序中设置一个帧计时器,当线路上有数据时就刷新该计时器,线路空闲时则停止刷新,计时时间达到3.5帧时计时器被软件清除,而下一帧则为地址帧。
由于Modbus编程主要需处理好CRC校验码的生成及数据包开始标志的测试,图3给出CRC校验码的生成流程。
结语
Modbus协议是目前得到广泛应用的通信协议,而其构筑的硬件平台RS-485总线具有硬件设计简单、控制方便、成本低廉等优点,在工控自动化系统中将得到越来越多的应用。■
[1]. RS-485 datasheet https://www.dzsc.com/datasheet/RS-485_584821.html.
[2]. M30201 datasheet https://www.dzsc.com/datasheet/M30201_460286.html.
[3]. MAX1480 datasheet https://www.dzsc.com/datasheet/MAX1480_719497.html.
[4]. 74HC86 datasheet https://www.dzsc.com/datasheet/74HC86_1811873.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。