西门子模块6ES7222-1BF22-0XA8现货包邮
低压电力线是为传输50Hz的工频电能而铺设的,是一种分布非常广泛的线路资源,长久以来,人们一直试图通过它传输数据和语音信号。随着近几年信号调制技术的进步、嵌入式软硬件技术的发展和新型集成电路的不断出现使得电力线通信(PLC)逐步从实验室走向实用,成为具有良好发展前景的通信技术之一。本文给出了基于PLC技术的远程单相复费率电表(简称基于PLC技术的远程电表)的设计与实现。
2 硬件总体设计
如图1所示,基于PLC 技术的远程电表硬件部分包含MCF5271主控板、电量采集板和PLC调制解调器,三部分电路板相对独立,并没有设计在一块电路板中电量采集板负责采集电量,MCF5271主控板通过SPI、I2C 等接口与电量采集板进行数据传输,通过符合IEEE802.3 规范的MII 接口与PLC调制解调器进行以太帧数据传输,PLC 调制解调器负责以太帧和电力线通信数据之间的转换。
图1 基于PLC 技术的远程电表模块图
3 MCF5271主控板设计
MCF5271主控板的设计参考了Freescale公司的MCF5271评估开发板的设计原理MCF5271评估开发板使用的ColdFire微处理器为196引脚的BGA封装,焊接比较困难,160引脚QFP封装的芯片与之功能相似,同样可以满足本设计需要的功能易于焊接,故使用QFP160封装的芯片做主控板。主控板与PLC调制解调器接口的主要部分为MII接口,略去了主控板与PLC调制解调器接口的介绍,而代以介绍MCF5271微处理器与INT5500之间的通过MII接口的连接。
1、MCF5271主控板板的存储器扩展
MCF5271具有外部总线接口,数据总线宽度为32位D[31∶0],寻址范围可以达到32位,与外界存储器相连的地址总线宽度为24位A。MCF5271主控板中扩展了一片1M×16位的Flash存储芯片AM29LV160DB,地址总线为20位,连接MCF5271的地址总线A[20∶1],数据总线为16位,连接D[31∶16]。两片8M字节的SDRAM芯片HY57V641620HG,每片SDR.AM的地址总线宽度为12位,数据总线宽度为16位,两片芯片使用共同的地址总线A[21∶15]和控制信号,数据总线分别连接MCF5271的D[15∶0]和D[16∶31]。
2、MCF5271与INT5500的连接
INT5500工作在PHY模式下的时候类似于以太网物理层芯片,可以与带有MII接口的MCU相连。图2所示为MCF5271与INT5500连接方式。由于此时INT5500工作在PHY模式下,MII接口的信号方向与Host/DTE模式下的方向
图2 MCF5271与INT5500连接图
MCF5271芯片MII接口的信号线可以分为三组:用作数据管理的信号线EMDIO和EMDC;反映介质状态的信号线ECOL和ECRS;其余为接收/发送信号线。
EMDIO为双向信号,在INT5500和MCF5271之间传输控制信息和状态信息。控制信息由MCF5271发给INT5500,状态信息由INT5500反馈给MCF5271。EMDC为输出信号,作为EMDIO数据传输的参考时钟。
ECOL为输入信号,该信号有效时,表示检测到传输介质上有冲突。ECRS为输入信号,该信号有效时,表示检测到传输介质忙;否则表示传输通道处于空闲状态,可以进行传输。
ERXD[0-3]用来接收INT5500发送的4位数据;ERXDV用来表示从INT5500接收到的数据是否有效,高电平为有效;ERXCLK为INT5500提供给MCF5271的数据接收时钟信号,其工作频率为数据接收速度的25%;ERXER为输入信号,该信号有效时表示检测到当前在INT5500上传输的帧出错。
ETXD[0-3]用来向INT5500发送4位数据;ETXEN为输出信号,该信号有效时表示MII总线上有数据,可以启动发送操作。ETXCLK为输出信号,作为数据发送的参考时钟信号。
4 电量采集板
电量采集板电路包括电量采集电路、ADE7756与主控芯片的通信接口、实时时钟芯片PCF8563的工作电路与对外通信接口。
1、电量采集电路
图3所示为电量采集电路,其中CT为电流互感器,电量采集芯片为ADE7756。电路中电压和电流输入通道均采用差分信号输入。普通电力线中的电流经过电流互感器CT后接到实际负载上,电流互感器将电流转换成电压信号,再经过R1与C4、R10与C6组成的滤波电路滤波后进入ADE7756的差分信号输入引脚V1P和V1N。电力线的220V电压信号经过R7、R6和R8分压及R8与C8组成的滤波电路滤波后转换为250mV的电压信号,作为AED7756的V2P的输入。
图3 电量采集模块
2、ADE7756与MCF5271主控板的接口模块
ADE7756与MCF5271主控板的接口部分包括用于通信的SPI接口和ADE7756的反馈信号。如图4所示,图中使用两片7404芯片对输入输出信号进行电压转换。7404芯片内部含有6路缓冲器,本设计中使用了每片芯片中的4路缓冲器,7404芯片为漏极开路输出,从主控芯片方输入的5V/3.3V信号经过7404后都可以转换为5V信号。向主控芯片方输出的信号可以转换为3.3V信号。
图4 ADE7756与MCU的接口部分
图中的IN_DIN、IN_SCLK、IN_CS和OUT_DOUT引脚为SPI接口的引脚;IN_RESET为从主控芯片方输入的复位控制信号;OUT_IRQ为ADE7756的中断请求输出信号;OUT_ZX为通道2的电压波形过零输出引脚,用于对电力线进行过零检测;OUT_SAG为电力线电压过低和5V工作电压过低检测输出信号。
3、实时时钟模块
图5为实时时钟模块,PCFB_563通过纽扣电池供电,MCF5271主控板通过I2C接口与PCF8563进行通信,SCL为主控芯片发送的时钟信号,SDA为数据双向数据通信引脚。主控芯片可以设置PCF8563当前时间和读取PCF8563当前时间。
图5 实时时钟模块
5 系统软件设计
基于PLC技术的远程电表的软件可以划分为两个部分:主控芯片方程序以及与后端软件的接口,两者相互独立。主控芯片方软件主要完成以下功能:
(1)定时电量采集:与ADE7756通信,通过SPI接口读取电量数据;
(2)电量数据存储:读取实时时钟获得当前时间,判断当前时段,将读取到的电量数据按照时段进行相应存储;
(3)数据通信和加密解密:接收和解析后端软件发送的命令数据包、构造和发送应答数据包;并完成命令数据的解密和应答数据的加密;
(4)命令响应:对后端软件发送的命令做出响应;
(5)掉电处理:检测到电压过低和掉电情况后及时进行重要数据存储。
后端软件接口主要包含通信协议的设计,如果将接口设计的比较合理,则对于后端软件的开发人员来说相当方便。
根据以上功能分析,软件共划分为5个模块:电量采集和存储模块、数据加密解密模块、嵌入式以太网模块、掉电处理模块和命令响应模块。
电量采集和存储模块完成定时电量采集和电量数据存储功能;
数据加密解密模块用来对后端软件的命令解密和本地应答数据的加密;
嵌入式以太网模块完成数据通信功能,该模块包含与PLC调制解调器的通信的底层驱动程序,包含网络协议,负责网络数据的解包打包功能;
掉电处理模块完成检测到电力线电压低于阈值时对重要数据的存储;
命令响应模块对后端软件的命令进行响应。
本文作者创新点:本文设计了基于PLC技术的远程电表方案,并完成了基于PLC技术的远程电表软硬件设计和实现,并编写了远程电表电量读取的PC方模拟程序。
1.诊断的必要条件
为了用STEP7对控制系统进行监控和故障诊断,下载到CPU的项目文件必须与计算机中的项目文件完全相同。如果下载的项目没有加密,可以用STEP7上载CPU中的用户程序和组态信息。
2.用快速视图诊断故障
选中SIMATIC管理器中要检查的PLC站点,执行菜单命令“PLC”→“诊断/设置”→“硬件诊断”,打开快速视图,将看到该站的CPU、有故障的模块和DP从站。选中某个DP从站,点击“模块信息”按钮,可以查看它的故障信息。
3.用CPU的诊断缓冲区诊断故障
选中快速视图中的CPU,点击“模块信息”按钮,打开CPU的模块信息对话框。在模块信息对话框的“诊断缓冲区”选项卡可以看到各种诊断事件,选中某一事件,诊断缓冲区下面“关于事件的详细资料”窗口将显示该事件的详细信息。点击“事件帮助”按钮,可得到帮助信息。
从诊断缓冲区可以获得与故障有关的详细准确的信息。包括有故障的DP从站所在的网络编号和DP从站的编号,要求调用的处理故障的OB的编号,CPU停机的原因,有故障的模块的起始地址,是什么样的故障。是进入的事件(故障出现)或者是离开的事件(故障消失)。下面的小图是详细资料的下半部分。
在SIMATIC管理器中执行菜单命令“PLC”→“诊断/设置”→“模块信息”,也可以打开CPU的模块信息对话框。
4.用诊断视图进行诊断
诊断视图实际上就是在线的硬件组态视图。点击快速视图中的“打开在线站点”按钮,打开诊断视图,
有个称重显示仪端口只支持RS232C(RXD,TXD,GND),和RS422(+IN,-IN,+OUT,-OUT)请问可以和S7-200直接通讯吗,不用中间转换器,可以用自由口通讯和表连吗?自由口底层是485,232都行么?
答:内部电路决定200PLC的串口只支持基于485的通讯,不能支持232.
你这种情况简单就是加个转换的模块,把232的转成485.
如果不想增加成本,或者时间紧,可以考虑以下两个方案
1、你看看表有没有变送的电流或电压信号,把信号送到AI模块里,自己算这个重量。
2、有没有上位机,一般的计算机都有232的串口,上位机直接和仪表通讯,再转传给PLC。
下面传个S7-200串口电路图你看看
一、概述
很多自动化工程师在实际应用中使用组态软件与PLC进行modbus通讯,组态软件作为主站PLC作为从站。组态软件来采集PLC数据使用这种方式是比较常见的。反向的利用modbus协议让PLC去读组态软件里的数据确有着特殊的意义,在某些工控场合也是很好解决方案。紫金桥软件在组态软件行业里推出了modbusserver,既紫金桥modbusserver可以作为modbus从机为其他软件和硬件设备提供数据,在这篇文章中对此功能我们详细地加以介绍。
二、S7-200Modbus主站的实现
1、S7-200Modbus 通信协议介绍
Modbus 是一种单主站的主/从通信模式。Modbus 网络上只能有一个主站存在,主站在 Modbus网络上没有地址,从站的地址范围为 0 - 247,其中 0 为广播地址,从站的实际地址范围为 1 - 247。在 S7-200 CPU通信口上实现的是 RS485 半双工通信,使用的是 S7-200 的自由口能。S7-200支持 Modbus 通信协议: S7-200CPU 上的通讯口 0 和 1 (Port 0 和 Port 1)通过指令库支持 Modbus RTU 主站模式。
2、S7-200Modbus主站的配置
西门子在 Micro/WIN V4.0 SP5 中正式推出 Modbus RTU 主站协议库(西门子标准库指令)。要使用 ModbusRTU 主站指令库,须遵循下列步骤:
⑴安装西门子标准指令库
⑵按照要求编写用户程序调用 Modubs RTU 主站指令库 Modbus RTU 主站功能编程使用 SM0.0 调用MBUS_CTRL 完成主站的初始化,并启动其功能控制:
具体参数的解释如下:
EN使能:必须保证每一扫描周期都被使能(使用SM0.0)
Mode模式:常为1,使能 Modbus 协议功能;为0 时恢复为系统 PPI 协议
Baud波特率:设为9600,要与从站波特率对应
Parity校验:校验方式选择 0=无校验
Timeout超时:主站等待从站响应的时间,以毫秒为单位,典型的设置值为1000毫秒(1秒),允许设置的范围为1-32767。注意:这个值必须设置足够大以保证从站有时间响应。
Done完成位:初始化完成,此位会自动置1。可以用该位启动 MBUS_MSG 读写操作
Error初始化错误代码(只有在 Done 位为1时有效):
0=无错误
1=校验选择非法
2=波特率选择非法
3=模式选择非法
⑶调用 Modbus RTU 主站读写子程序MBUS_MSG,发送一个Modbus 请求;
如图1所示,具体参数设置如下:
Slave从站地址:可选择的范围 1-247
RW读写操作:0=读, 1=写
注意:1. 开关量输出和保持寄存器支持读和写功能
2. 开关量输入和模拟量输入只支持读功能
Addr读写从站的数据地址:选择读写的数据类型 00001至0xxxx-开关量输出10001至1xxxx-开关量输入
30001至3xxxx-模拟量输入
40001至4xxxx-保持寄存器
Count通讯的数据个数(位或字的个数)
注意: Modbus主站可读/写的大数据量为120个字(是指每一个 MBUS_MSG 指令)
DataPtr数据指针:1. 如果是读指令,读回的数据放到这个数据区中
2. 如果是写指令,要写出的数据放到这个数据区中
Done读写功能完成位
图1西门子Modbus RTU 主站协议库
三、紫金桥软件Modbus从站的实现
1、紫金桥modbusserver的设置
Modbus 服务器可以把紫金桥数据库中的点映射为Modbus 设备的HR寄存器,当前版本为3.0,支持串口和TCP/IP访问方式,支持HR区的读和写方式。也就是说支持03、06、16 号命令。
具体操作是先在紫金桥软件的安装目录中找到 ModbusSerSet.exe并运行。其中左侧为变量配置显示区,它分为三列,分别是序号、数据库位号和Modbus地址。后两列的意义是把某一个数据库位号和一个Modbus地址建立映射关系。再调出系统设置对话框配置从机地址、串口等参数或以太网端口号、数据格式等。
2、通讯过程
配置完成后,先运行紫金桥软件在紫金桥软件的安装目录中找到 ModbusServer.exe 并运行。
从上面的通讯过程看到,S7-200与紫金桥modbus server通讯的响应速度为毫秒级的。