MDS1异步电动机监控保护故障诊断单元腾控科技.docx
《MDS1异步电动机监控保护故障诊断单元腾控科技.docx》由会员分享,可在线阅读,更多相关《MDS1异步电动机监控保护故障诊断单元腾控科技.docx(30页珍藏版)》请在冰豆网上搜索。
MDS1异步电动机监控保护故障诊断单元腾控科技
STC-1微型RTU
用户手册(V1.6)
北京易控微网科技有限公司
2005年03月
1.产品介绍3
1.1.产品设计说明3
1.2.功能特点3
1.3.系统参数3
1.3.1.直流模拟量输入3
1.3.2.开关量输入4
1.3.3.脉冲量输入(与开关量输入共用)4
1.3.4.开关量输出4
1.3.5.通信接口4
1.4.安装使用环境4
2.原理说明5
2.1.开关量输入5
2.2.开关量输出6
2.3.直流输入6
2.4.温度测量6
3.通信协议说明6
3.1.MODBUS规约简介7
3.1.1.在Modbus网络上转输7
3.1.2.在其它类型网络上转输7
3.1.3.查询—回应周期8
3.2.帧格式说明8
3.3.数据定义10
4.安装说明19
5.典型方案22
6.订货须知24
修改说明:
V1.6与V1.5比较增加了:
ASCII方式和RTU方式可软件设定。
V1.5与V1.4比较增加了:
RTU通讯方式,增加了串口通信的收发转换延时功能(便于数传电台通讯),增加了开关量输入频率测量功能
V1.4比V1.3功能修改了模拟量测量程序,修改了部分错误,增加了设置多个继电器命令
1.产品介绍
1.1.产品设计说明
STC-1微型RTU(以下简称STC-1)是我公司针对各种应用场合,研发的通用型微型RTU,广泛应用于消防、供水、石化、环保、建筑、电力、交通等各个行业,为众多系统集成商、自动化公司和研究所采用,是一种具有极高性格比、稳定可靠的数据采集产品。
STC-1模块可以单独使用,也可以通过485总线进行扩展,建议同一总线内STC-1数量低于32套。
1.2.功能特点
●8路开关量继电器输出,可以作为遥控、跳闸或者告警。
●8路开关量光耦隔离输入,也可以作为脉冲量输入,带SOE(事件顺序记录)。
●8路直流模拟量输入(0-20mA或0-5V),可以接各种变送器输出。
●1个485通信口,1个RS485/232接口,支持MODBUSASCII方式和RTU方式,两种方式可软件设定。
通讯波特率和奇偶校验可软件设定。
●贴片安装,无外部总线,高可靠性,较强抗干扰能力。
●卡式导轨或螺丝固定,现场安装更加便
1.3.系统参数
1.3.1.直流模拟量输入
容量:
8路/模块
输入信号:
0-5V或0-20mA或4-20mA
转换速度:
5uS
分辨率:
12位A/D
计算方法:
以电网频率为参考,每周波采32点,计算平均值作为测量值
精度:
0.2%FS±1字
1.3.2.开关量输入
容量:
8路/模块
额定输入:
输入直流12-48V
输入方式:
光耦隔离
扫描方式:
中断方式
SOE分辨率:
1ms
1.3.3.脉冲量输入(与开关量输入共用)
容量:
8路/模块
额定输入:
输入直流12-48V
输入方式:
光耦隔离
扫描方式:
中断方式
最高计数频率:
1000Hz
最小脉冲宽度:
0.2ms
计数器字长:
32位
1.3.4.开关量输出
容量:
8路/模块,每路提供一个常开触点,共用一个公共端
触点容量:
250V/3A交流
1.3.5.通信接口
容量:
2路
接口方式:
RS485接口RS232接口
规约:
MODBUS规约ASCII方式或RTU方式
1.3.6.安装使用环境
安装方式:
卡式导轨安装或者底部螺丝固定
温度范围:
-20℃~70℃
存贮温度:
-20℃~70℃
相对湿度:
<85%(20±5℃条件)
大气压力:
86~108Kpa
安装尺寸:
143×90×40mm
电源:
交流85~265V50HZ~60HZ
或者直流5V±10%或者直流12V±10%或者直流24V±10%(订货时确定)
功耗:
小于1W
工作环境:
无爆炸,无腐蚀性气体及导电尘埃,无严重霉菌存在,无剧烈振动,无冲击源;如果需要在此类环境下工作,请采取相应的防护措施。
2.原理说明
STC-1采用16位超低功耗单片机,单片机内部集成了几乎计算机所能外围电路,设计该产品时没有进行任何的扩展。
提高了系统的可靠性和抗干扰能力,缩小了产品的体积。
2.1.开关量输入
系统的数字输入采用光电隔离,原理图如下:
输入信号为高时,光耦导通,DI2=0。
单片机监测到信号的变化,产生中断。
单片机记下产生中断的时间,并启动一个软定时器计数。
如果没有到达设定的时间信号又发生变换,则清除中断时间和事件记录。
如果在设定的时间内信号没有发生变化,则作为输入改变,并记录改变的时间作为SOE记录。
开关量的输入是无源的,具有一个公共端子,使用时需要外接电源。
每路输入的输入电流不超过5ma,功率消耗很小。
一般情况下,输入的公共端子应该接开关量输入电源的负端,输入电源的正端接待测开关量的一端,另外一端接单元的输入端。
开关量输入不允许交流电源作为开关量输入电源,这有可能导致严重的错误。
2.2.开关量输出
开关量输出为继电器输出,响应的时间较慢,不适合需要输出快速改变的场合。
继电器的触点是直接连接到输出端子的,没有经过任何的防弧、防短路措施,使用时请多加注意,需要增加保险丝。
继电器的输出触点主要用于控制中间继电器或者交流接触器,一般不要用来直接控制功率负载,不适合控制有非常大冲击电流的负载,如开关电源等。
8路开关量共用一个公共点,请在使用时注意。
2.3.直流输入
直流输入一共是8路,可以作为电压或者电流输入。
作为电压输入时,其输入阻抗为170K;作为电流输入时,其输入阻抗为250欧姆。
但是需要在订货是说明。
输入的直流信号为了避免电网的干扰,在软件设计时,系统跟踪电网的频率。
每个电网周波也作32点采样,对采样值进行平均运算,运算结果作为输入值。
这样大大提高了系统对电网干扰的抑制能力。
2.4.温度测量
温度测量可以采用温度变送器,把热电阻或者热电偶的信号变为直流量送直流输入测量。
环境温度的测量是通过单片机内部的温度二极管进行测量的,精度可以达到±2度。
3.通信协议说明
通信协议采用MODBUS规约。
该规约具有开放性,资料丰富易得,有众多厂商的支持,本身也非常的简单。
我们的接口采用RS485接口,比RS232具有更高的通信速率和更远的通信距离。
根据我们设备的情况,我们仅仅实现了MODBUS的一个小型子集,没有完全实现其所有内容,已经能够满足我们所有的需要。
3.1.MODBUS规约简介
MODBUS规约是MODICOM公司开发的一个为很多厂商支持的开放规约
Modbus协议是应用于电子控制器上的一种通用语言。
通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。
它已经成为一通用工业标准。
有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。
它描述了控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。
它制定了消息域格局和内容的公共格式。
当在Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。
如果需要回应,控制器将生成反馈信息并用Modbus协议发出。
在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。
这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。
3.1.1.在Modbus网络上转输
标准的Modbus口是使用RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。
控制器能直接或经由Modem组网。
控制器通信使用主—从技术,即仅设备(主设备)能初始化传输(查询)。
其它设备(从设备)根据主设备查询提供的数据做出相应反应。
典型的主设备:
主机和可编程仪表。
典型的从设备:
可编程控制器。
主设备可单独和从设备通信,也能以广播方式和所有从设备通信。
如果单独通信,从设备返回消息作为回应,如果是以广播方式查询的,则不作任何回应。
Modbus协议建立了主设备查询的格式:
设备(或广播)地址、功能代码、所有要发送的数据、错误检测域。
从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据、和错误检测域。
如果在消息接收过程中发生错误,或从设备不能执行其命令,从设备将建立错误消息并把它作为回应发送出去。
3.1.2.在其它类型网络上转输
在其它网络上,控制器使用对等技术通信,故任何控制都能初始和其它控制器的通信。
这样在单独的通信过程中,控制器既可作为主设备也可作为从设备。
提供的多个内部通道可允许同时发生的传输进程。
在消息位,Modbus协议仍提供了主—从原则,尽管网络通信方法是“对等”。
如果控制器发送消息,它只是作为主设备,并期望从从设备得到回应。
同样,当控制器接收到消息,它将建立一从设备回应格式并返回给发送的控制器。
3.1.3.查询—回应周期
.查询
查询消息中的功能代码告之被选中的从设备要执行何种功能。
数据段包含了从设备要执行功能的任何附加信息。
例如功能代码03是要求从设备读保持寄存器并返回它们的内容。
数据段必须包含要告之从设备的信息:
从何寄存器开始读及要读的寄存器数量。
错误检测域为从设备提供了一种验证消息内容是否正确的方法。
.回应
如果从设备产生正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。
数据段包括了从设备收集的数据:
像寄存器值或状态。
如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。
错误检测域允许主设备确认消息内容是否可用。
3.2.帧格式说明
控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络通信。
用户选择想要的模式,包括串口通信参数(波特率、校验方式等),在配置每个控制器的时候,在Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。
ASCII模式
:
地址
功能代码
数据数量
数据1
...
数据n
LRC高字节
LRC低字节
回车
换行
RTU模式
地址
功能代码
数据数量
数据1
...
数据n
CRC高字节
CRC低字节
所选的ASCII或RTU方式仅适用于标准的Modbus网络,它定义了在这些网络上连续传输的消息段的每一位,以及决定怎样将信息打包成消息域和如何解码。
在我们的系统中,我们仅仅支持ASCII的帧格式。
当控制器设为在Modbus网络上以ASCII(美国标准信息交换代码)模式通信,在消息中的每个8Bit字节都作为两个ASCII字符发送。
这种方式的主要优点是字符发送的时间间隔可达到1秒而不产生错误。
代码系统
.十六进制,ASCII字符0...9,A...F
.消息中的每个ASCII字符都是一个十六进制字符组成
每个字节的位
.1个起始位
.8个数据位,最小的有效位先发送
.1个奇偶校验位,无校验则无
.1个停止位(有校验时),2个Bit(无校验时)
错误检测域
.LRC(纵向冗长检测)
地址域
消息帧的地址域包含两个字符(ASCII)或8Bit(RTU)。
可能的从设备地址是0...247(十进制)。
单个设备的地址范围是1...247。
主设备通过将要联络的从设备的地址放入消息中的地址域来选通从设备。
当从设备发送回应消息时,它把自己的地址放入回应的地址域中,以便主设备知道是哪一个设备做出回应。
地址0是用作广播地址,以使所有的从设备都能认识。
当Modbus协议用于更高水准的网络,广播可能不允许或以其它方式代替。
功能域
消息帧中的功能代码域包含了两个字符(ASCII)或8Bits(RTU)。
可能的代码范围是十进制的1...255。
当然,有些代码是适用于所有控制器,有此是应用于某种控制器,还有些保留以备后用。
当消息从主设备发往从设备时,功能代码域将告之从设备需要执行哪些行为。
例如去读取输入的开关状态,读一组寄存器的数据内容,读从设备的诊断状态,允许调入、记录、校验在从设备中的程序等。
当从设备回应时,它使用功能代码域来指示是正常回应(无误)还是有某种错误发生(称作异议回应)。
对正常回应,从设备仅回应相应的功能代码。
对异议回应,从设备返回一等同于正常代码的代码,但最重要的位置为逻辑1。
我们目前所支持的功能码非常有限,主要包括:
01READCOILSTATUS
02READINPUTSTATUS
03READHOLDINGREGISTERS
04READINPUTREGISTERS
05FORCESINGLECOIL
06PRESETSINGLEREGISTERS
24READFIFOQUEUE
3.3.数据定义
STC-1通信数据定义:
STC-1采用MODBUS规约的ASCII或RTU方式,出厂黙认设定为:
RTU,波特率9600BPS,1位起始位,8位数据位,1位停止位,无校验。
帧格式:
上位机发送:
ASCII方式:
单元地址功能码起始地址读取点数LRC校验CRLF
RTU方式单元地址功能码起始地址读取点数CRC校验
(:
为帧起始标志
单元地址占用两个字节为ASCII字符举例:
实际单元地址为1F对应的地址字符为0X31,0X46
功能码占用两个字节为ASCII字符举例:
功能码为01对应的功能码字符为0X30,0X31
起始地址占用四个字节为ASCII字符举例:
实际起始地址为0002对应的地址字符为0X30,0X30,0X30,0X32,对应的实际开关量或者模拟量为第三个输入或者输出。
读取点数占用四个字节为ASCII字符举例:
实际起始地址为0002对应的地址字符为0X30,0X30,0X30,0X32
LRC校验为和校验,占用两个字节。
计算方法可以参考如下的C源程序,需要注意的是首先计算LRC的值,然后把结果转换成为相应的ASCII字符串。
比如LRC结果为0X5F,则在规约中LRC的值为0X35,0X46
unsignedcharlrc(unsignedchar*str,intlenth)
{
unsignedchartmp;
tmp=0;
while(lenth--)
{
tmp+=*str++;
}
return((unsignedchar)(-((char)tmp)));
}
CR=0X0DLF=0X0A为帧结束标志
CRC校验计算:
constunsignedcharauchCRCHi[]=
{
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40
};
constunsignedcharauchCRCLo[]=
{
0x00,0xC0,0xC1,0x01,0xC3,0x03,0x02,0xC2,0xC6,0x06,0x07,0xC7,0x05,0xC5,0xC4,0x04,0xCC,0x0C,0x0D,0xCD,0x0F,0xCF,0xCE,0x0E,0x0A,0xCA,0xCB,0x0B,0xC9,0x09,0x08,0xC8,0xD8,0x18,0x19,0xD9,0x1B,0xDB,0xDA,0x1A,0x1E,0xDE,0xDF,0x1F,0xDD,0x1D,0x1C,0xDC,0x14,0xD4,0xD5,0x15,0xD7,0x17,0x16,0xD6,0xD2,0x12,0x13,0xD3,0x11,0xD1,0xD0,0x10,0xF0,0x30,0x31,0xF1,0x33,0xF3,0xF2,0x32,0x36,0xF6,0xF7,0x37,0xF5,0x35,0x34,0xF4,0x3C,0xFC,0xFD,0x3D,0xFF,0x3F,0x3E,0xFE,0xFA,0x3A,0x3B,0xFB,0x39,0xF9,0xF8,0x38,0x28,0xE8,0xE9,0x29,0xEB,0x2B,0x2A,0xEA,0xEE,0x2E,0x2F,0xEF,0x2D,0xED,0xEC,0x2C,0xE4,0x24,0x25,0xE5,0x27,0xE7,0xE6,0x26,0x22,0xE2,0xE3,0x23,0xE1,0x21,0x20,0xE0,0xA0,0x60,0x61,0xA1,0x63,0xA3,0xA2,0x62,0x66,0xA6,0xA7,0x67,0xA5,0x65,0x64,0xA4,0x6C,0xAC,0xAD,0x6D,0xAF,0x6F,0x6E,0xAE,0xAA,0x6A,0x6B,0xAB,0x69,0xA9,0xA8,0x68,0x78,0xB8,0xB9,0x79,0xBB,0x7B,0x7A,0xBA,0xBE,0x7E,0x7F,0xBF,0x7D,0xBD,0xBC,0x7C,0xB4,0x74,0x75,0xB5,0x77,0xB7,0xB6,0x76,0x72,0xB2,0xB3,0x73,0xB1,0x71,0x70,0xB0,0x50,0x90,0x91,0x51,0x93,0x53,0x52,0x92,0x96,0x56,0x57,0x97,0x55,0x95,0x94,0x54,0x9C,0x5C,0x5D,0x9D,0x5F,0x9F,0x9E,0x5E,0x5A,0x9A,0x9B,0x5B,0x99,0x59,0x58,0x98,0x88,0x48,0x49,0x89,0x4B,0x8B,0x8A,0x4A,0x4E,0x8E,0x8F,0x4F,0x8D,0x4D,0x4C,0x8C,0x44,0x84,0x85,0x45,0x87,0x47,0x46,0x86,0x82,0x42,0x43,0x83,0x41,0x81,0x80,0x40
};
unsignedshortcrc(unsignedchar*puchMsg,unsignedshortusDataLen)
{
unsignedcharuchCRCHi=0xFF;/*highbyteofCRCinitialized*/
unsignedcharuchCRCLo=0xFF;/*lowbyteofCRCinitialized*/
unsigneduIndex;/*willindexintoCRClookuptable*/
while(usDataLen--)/*passthroughmessagebuffer*/
{
uIndex=uchCRCHi^*puchMsg++;/*calculatetheCRC*/
uchCRCHi=uchCRCLo^auchCRCHi[uIndex];
uchCRCLo=auchCRCLo[uIndex];
}
return(uchCRCHi<<