原文地址:

接口实现:http://www.cnblogs.com/canny/archive/2004/12/27/82466.aspx

CRC8:http://www.cnblogs.com/canny/archive/2004/12/27/82468.aspx

CRC16:http://www.cnblogs.com/canny/archive/2004/12/27/82470.aspx

CRC32:http://www.cnblogs.com/canny/archive/2004/12/27/82473.aspx

1.接口实现
CRC 校验有 CRC 8位 16位 32位 所以在实现这些校验算发之前,先实现它们的接口!

 


2. CRC8
 

代码
using System; 

namespace CRC 
...{ 
 
public interface ICRC 
 ...{ 
     
  
long Value 
  ...{ 
    
get
  } 
   
  
void Reset(); 
   
  
void Crc(int bval); 
   
  
void Crc(byte[] buffer); 
   
  
void Crc(byte[] buf, int off, int len); 

 } 
代码
using System;

namespace CRC 
...{ 
 
/**//// <summary> 
 
/// CRC8 的摘要说明。 
 
/// </summary> 
 public class CRC8:ICRC 
 ...{ 
  CRC 
8 位校验表#region CRC 8 位校验表 

  
/**//// <summary> 
  
/// CRC 8 位校验表 
  
/// </summary> 
  public  byte[] CRC8_Table = new byte[] 
  ...{ 
   
0,94,188,226,97,63,221,131,194,156,126,32,163,253,31,65
   
157,195,33,127,252,162,64,3095,1,227,189,62,96,130,220
   
35,125,159,193,66,28,254,160,225,191,93,3,128,222,60,98
   
190,224,2,92,223,129,99,61,124,34,192,158,29,67,161,255
   
70,24,250,164,39,121,155,197,132,218,56,102,229,187,89,7,             
   
219,133,103,57,186,228,6,88,25,71,165,251,120,38,196,154
   
101,59,217,135,4,90,184,230,167,249,27,69,198,152,122,36,                         
   
248,166,68,26,153,199,37,123,58,100,134,216,91,5,231,185,             
   
140,210,48,110,237,179,81,15,78,16,242,172,47,113,147,205
   
17,79,173,243,112,46,204,146,211,141,111,49,178,236,14,80
   
175,241,19,77,206,144,114,44,109,51,209,143,12,82,176,238
   
50,108,142,208,83,13,239,177,240,174,76,18,145,207,45,115
   
202,148,118,40,171,245,23,73,8,86,180,234,105,55,213,139
   
87,9,235,181,54,104,138,212,149,20341,119,244,170,72,22
   
233,183,85,11,136,214,52,106,43,117,151,201,74,20,246,168
   
116,42,200,150,21,75,169,247,182,232,10,84,215,137,107,53 
  }; 
  
#endregion 

  
uint crc = 0
   
  
/**//// <summary> 
  
///返回 CRC8校验结果; 
  
/// </summary> 
  public long Value 
  ...{ 
   
get 
   ...{ 
    
return crc; 
   } 
   
set 
   ...{ 
    crc 
= (uint)value; 
   } 
  } 


  
/**//// <summary> 
  
/// CRC校验前设置校验值 
  
/// </summary> 
  public void Reset() 
  ...{ 
   crc 
= 0
  } 

  
/**//// <summary> 
  
/// 8 位 CRC 校验 产生校验码 需要被校验码和校验码 
  
/// </summary> 
  
/// <param name="CRC"></param> 
  
/// <param name="OldCRC"> 初始为 0 ,以后为 返回值 ret </param> 
  
/// <returns> 产生校验码时 ret 为校验码</returns> 
   
  
public void Crc(byte CRC,byte OldCRC) 
  ...{ 
   crc 
= CRC8_Table[OldCRC ^ CRC]; 
  } 

  
/**//// <summary> 
  
/// 8 位 CRC 校验 产生校验码 只要被校验码 
  
/// </summary> 
  
/// <param name="bval"></param> 
  public void Crc(int bval) 
  ...{ 
   crc 
= CRC8_Table[crc ^ bval]; 
  } 

  
/**//// <summary> 
  
/// 8 位 CRC 校验 产生校验码 只要被校验的字节数组 
  
/// </summary> 
  
/// <param name="buffer"></param> 
  public void Crc(byte[] buffer) 
  ...{ 

   Crc(buffer,
0,buffer.Length); 
  } 

  
/**//// <summary> 
  
/// 8 位 CRC 校验 产生校验码 要被校验的字节数组、起始结果位置和字节长度 
  
/// </summary> 
  
/// <param name="buf"></param> 
  
/// <param name="off"></param> 
  
/// <param name="len"></param> 
  public void Crc(byte[] buf,int off ,int len) 
  ...{ 
   
if (buf == null
   ...{ 
    
throw new ArgumentNullException("buf"); 
   } 
    
   
if (off < 0 || len < 0 || off + len > buf.Length) 
   ...{ 
    
throw new ArgumentOutOfRangeException(); 
   } 
   
for (int i = off; i < len ; i ++
   ...{ 
    Crc(buf[i]); 
   } 
  } 
 } 





本文来自CSDN博客,转载请标明出处:http:
//blog.csdn.net/slawdan/archive/2007/04/25/1583906.aspx

 


 

3.CRC16

 

posted @ 2010-02-09 09:35 ccjvl 阅读(2) | 评论 (0)编辑
posted @ 2010-02-04 16:21 ccjvl 阅读(0) | 评论 (0)编辑

 

Dan Shiffman and I are continuing development on a Processing library for Digi’s XBee radios. Tom Igoe has also contributed code. The library now facilitates receiving multiple sample I/O packets in API mode (ATAP1) from both the 802.15.4 and ZNet 2.5 XBee radios, and returns an object that contains the analog values, digital values, sender’s address and RSSI values. We started with I/O frames because the only way to receive this information is via API mode. The ability to send remote AT commands is now included. The library has been tested on Mac OS X and Windows platforms.

DOWNLOAD

DOCUMENTATION

XBeeReader class

XBeeReader constructor takes the parent PApplet “this” and a reference to a made serial port

port = new Serial(this, Serial.list()[0], 9600);
xbee = new XBeeReader(this,port);

start() – takes in the string of your setup commands and returns a string of responses. The first command in the string must begin with AT. Any commands that follow must be separated by commas and do not use AT. There is no comma after the last command.

println("Setting up Xbee"); String response = xbee.start("ATRE,ID3333,MY89,DH0,DL0");
println("Setup response: " + response);

getXbeeReading() – returns the XBeeDataFrame object

XBeeDataFrame data = xbee.getXBeeReading();

XBeeDataFrame class

Contains the information delivered in an XBee data frame. IN THIS INITIAL EXAMPLE IT IS ONLY I/O DATA. The available methods are:

getAddress16() – returns the 16-bit transmitter address as an integer
getAddress64() – returns the 64-bit transmitter address as an long
getRSSI() – returns the RSSI reading in dBm as an integer (XBee Series 1 only)
getTotalSamples() – returns the total number of samples contained in the data frame
getDigital() – returns an array of integers that represent the current state of each digital channel with -1 indicating that the channel is not configured for digital. Use this when there is only one sample per frame.
getDigital(int n) – returns the nth sample of digital data as an array of integers with -1 indicating that the channel is not configured for digital.

getAnalog() – returns an array of integers that represents the current state of each analog channel with -1 indicating that the channel is not configured for analog. Use this when there is only one sample per frame.
getAnalog(int n) – returns the nth sample of analog data as an array of integers with -1 indicating that the channel is not configured for analog.

int addr = data.getAddress16();
int rssi = data.getRSSI();
int[] digital = data.getDigital();
int[] analog = data.getAnalog();

XBeeEvent function

This function is similar to SerialEvent. The XBeeEvent is called for you when there is data available from your XBee radio.

public void xBeeEvent(XBeeReader xbee) {
	XBeeDataFrame data = xbee.getXBeeReading();
}

 

posted @ 2010-02-04 16:10 ccjvl 阅读(1) | 评论 (0)编辑


[OSC]

Communicate with XBee modules with the Make Controller Kit via OSC. More...

Communicate with XBee modules with the Make Controller Kit via OSC.

Devices

There can only be one XBee board connected to the Make Controller Kit's serial port at a time, so there is not a device index in XBee OSC messages.

Properties

The XBee system has the following properties:
  • autosend
  • io16
  • io64
  • rx16
  • rx64
  • tx16
  • tx64
  • tx-status
  • active

Autosend
The autosend property corresponds to whether the Make Controller will automatically send out messages it receives from a connected XBee module. By default, this is turned off. To turn this on, send the message
/xbee/autosend 1 
and to turn it off, send
/xbee/autosend 0 
All autosend messages send at the same interval. You can set this interval, in milliseconds, by sending the message
/system/autosend-interval 10 
so that messages will be sent every 10 milliseconds. This can be anywhere from 1 to 5000 milliseconds.
You also need to select whether the board should send to you over USB or Ethernet. Send
/system/autosend-usb 1 
to send via USB, and
/system/autosend-udp 1 
to send via Ethernet. Via Ethernet, the board will send messages to the last address it received a message from.
io16
The io16 property corresponds to an incoming message from an XBee module with samples from its IO pins. The best way to use this is to turn the XBee system's autosend property on - then the Make Controller can relay io16 messages as soon as they're received.
Once you've turned on autosend, if there are boards on your network that are sending IO packets, you'll receive messages like
/xbee/io16 1234 28 12 0 0 1023 1023 0 512 0 1023 
The first two numbers are:
  1. the address of the module that sent the message (1234 in the example above)
  2. signal strength (28 above)
The next 9 numbers are the values from the 9 IO pins on the XBee module.
io64
The io64 property corresponds to an incoming message from an XBee module with samples from its IO pins. This message is just like the io16 message, except it's coming from a board with a 64-bit address, rather than a 16-bit address. The structure of the message is the same (see above).
rx16
The rx16 property corresponds to an incoming message from a 16-bit address XBee module with arbitrary data. The best way to use this is to turn the XBee system's autosend property on - then the Make Controller can relay rx16 messages as soon as they're received.
Once you've turned on autosend, if there are boards on your network that are sending IO packets, you'll receive messages like
/xbee/rx16 1234 28 0 [43 44 45 32 46 47 48] 
The first three numbers are:
  1. the address of the module that sent the message (1234 in the example above)
  2. signal strength (28 above)
  3. the options byte (0 above), respectively.
Following those is an OSC blob with the data (enclosed in square brackets above). These are the hex values for each byte of data.
rx64
The rx64 property corresponds to an incoming message from an XBee module with samples from its IO pins. This message is just like the io16 message, except it's coming from a board with a 64-bit address, rather than a 16-bit address. The structure of the message is the same (see above).
Transmit Status
The tx-status property gives you the status of a previously sent message. It tells you the frameID of the message that was sent and its status, which can be one of:
  • Success. Message was successfully transmitted and received.
  • No acknowledgement received. The message was successfully sent, but not successfully received on the other end.
  • CCA Failure.
  • Purged.
If you don't include a frameID for the message that you sent, a tx-status message will not be generated. An example tx-status message will look like
/xbee/tx-status 52 Success 
where 52 is the frameID and "Success" is the status.
Active
The active property corresponds to the active state of the XBee system. If you're not seeing appropriate responses to your messages to the XBee system, check whether it's active by sending the message
/xbee/active 
You can set the active flag by sending
/xbee/active 1 
posted @ 2010-02-04 16:10 ccjvl 阅读(1) | 评论 (0)编辑
128码的結构

128码A、B、C :A ASll码0-95   B:ASCll 32---127    C 00-99   (纯数字)

 


 128码开始于1981年推出,是一种长度可变、连续性的字母数字条码。与其他一维条码比较起来,128码是较为复杂的条码系统,而其所能支援的字符也相对地比其他一维条码来得多,又有不同的编码方式可供交互运用,因此其使用弹性也较大。128码的內容大致也分为起始码、资料码、终止码、检查码等四部分,其中检查码是可有可无的。Code 128 码可表示从 ASCII 0 到ASCII 127 共128个字符,故称128码。下图是128码的范例与结果。

128码的特性
  128码具有下列特性:
1. 具有A、B、C三种不同的编码类型,可提供标准ASCII中128个字符的编码使用。
2. 允许双向的扫描处理。
3. 可自行决定是否要加上检查码。
4. 条码长度可自由调整,但包括起码和终止码在內,不可超过232个字元。
5. 同一个128码,可以采用不同的方式进行编码。藉由A、B、C三种不同编码规则的互换可扩大字符选择的范围,也可缩短编码的长度。

128码的编码方式
 128码有三种不同类型的编码方式,对于选择何种编码方式,则决定于起始码的內容。
  起始码

编码类别 逻辑型态 相对值
CODE A 11010000100 103
CODE B 11010010000 104
CODE C 11010011100 105

  终止码
无论是采用A、B、C何种编码方式,128码的终止码均为固定的一种性能,其逻辑型态皆为1100011101011。

  EAN-128码
目前所推行的128码是EAN-128码,EAN-128码是根据EAN/UCC-128码作为标准将资料转变成条码符号,并采用128码逻辑,具有完整性、紧密性、连接性和高可靠度的特性。辩证范围含盖生产过程中一些补充性能且易变动之资讯,如生产日期、批号、计量等。可运用于货运标签、携带式资料库、连续性资料段、流通配送标签等。其效益有:
 1. 变动性产品资讯的条码化。
 2. 国际流通的共同协议标准。
 3. 产品运送较佳的品质管理。
 4. 更有效的控制生产及配销。
 5. 提供更安全可靠的供给源。

 

代号
码別
长度
说明
A
应用识別码
18
00代表其后之资料內容为运送容器序号,为固定18位数字
B
包装性能指示码
1
3代表无定义的包装指示码
C
前置码与公司码
7
代表EAN前置码与公司码
D
自行编定序号
9
由公司指定序号
E
检查码
1
检查码
F
应用识別码
420代表其后之资料內容为配送邮政码应用于仅有一邮政当局
G
配送邮政码
代表配送邮政码
39码 基本知识

◆ 39码是国内常见的条形码之一,三九码39码是在公元1974年发展出来的条形码系统。三九码之所以在国内常见的原因有两个,一个是因为三九码的限制很少,而且支持文数字;另一个则是它很适用在非正式场合中。
39码生成器:http://www.systron.com.cn/barcode.asp


◆ 三九码的长度,没有强迫性的限制,随着使用者的需求,可自由地调整。唯在规划时,应该考虑到条形码阅读机(Barcode Reader)所能容许的范围为限,才不致于会有无法读取完整的问题发生。

◆ 三九码所能表示的资料内容,包含有:0~9 的数字,大写 A~Z 的英文字母,「+」,「-」,「*」,「/」,「%」,「$」,「.」,以及空格符(Space)等,共44组编码。

◆ 三九码在读取方面,允许读码机进行双向的扫瞄读取;也就是说,如果使用者把三九码倒着读取也是得到相同的结果。

◆ 三九码的检查码,可有可无;使用者可自行斟酌使用。

◆ 三九码所占用的空间较一般条形码来的宽大。

◆ 三九码的起始码与终止码均为 * 字符。

39码 code 39码 知识

Code 39码是Intermec公司于1975年推出的一维条码, 39码是一种可供使用者双向扫瞄的分散式条码,也就是说相临两资料码之间,39码必须包含一个不具任何意义的空白(或细白,其逻辑值为0),且 39码具有支援文数字的能力,编码规则简单、误码率低、所能表示字符个数多等特点,39码在各个领域有着极为广泛的应用。目前较主要利用於工业产品、商业资料及医院用的保健资料,它的最大优点是码数没有强制的限定,可用大写英文字母码,且检查码可忽略不计。我国也制定了相应的 39码国家标准(GB12908-91)。

39码仅有两种单元宽度——分别为宽单元和窄单元。宽单元这宽度为窄单元的1到3倍,一般多选用2倍、2.5倍或3倍。39码的每一个条码字符由九个单元组成,其中有三个宽单元,其余是窄单元,因此称为三九码。而Code 93码与39码具有相同的字符集,但它的条码密度要比39码高,所以在面积不足的情况下,可以用93码代替39码。

标准的39码是由起始安全空间、起始码、资料码、可忽略不计的检查码、终止安全空间及终止码所构成。

39码 结构特性

◆ 三九码的构成元素如下:起始码 + 资料码 + 终止码

◆ 图解1:起始码
下面条形码的蓝色的部份为起始码

 

◆ 图解2:资料码
下面条形码的蓝色的部份为资料码

图解3:终止码
下面条形码的蓝色的部份为终止码

posted @ 2010-02-04 13:51 ccjvl 阅读(15) | 评论 (0)编辑
     摘要: 注明1:[1]到[6]需测试XBEE PRO模块验证其结果。[1]发送选项0x08不被支持。[2]发送API帧,最大RF数据负载不是72字节,由AT指令中NP命令查看。[3]64bit目标地址可以设为0,作为协调器地址。[4]最大广播半径是32。[5]在节点识别指示器(0x95)中,AT指令中NO命令可以被用包含DD参数。[6]14)节点识别指示器帧的结构需确定。注明2:nBytes代表字段的大小...  阅读全文
posted @ 2010-02-04 13:45 ccjvl 阅读(7) | 评论 (0)编辑

先引用一篇网文,作者不详,因几个地方都说自己是原创,我昏了,不知道是谁原创的 流汗

RS232中RTS和CTS的作用
问:
以前挺明白的,今天一下子觉得以前的理解都不对了,以下三种解释哪个对呢?

解释一:
RTS:终端我已经准备就绪,有数据就发过来吧
CTS:来了,接招

解释二:
RTS:终端我准备发数据给你,快用CTS应答,准备好没?
CTS:好了,来吧

解释三:
CTS:主机,我有数据,请求接收
RTS:我是主机,就绪,请求发送。

我今天弄了个SIM100模块,我将RTS设置无效之后,凡是要发往主机的数据都没有发过来(包括主动 数据RING),指令和指令返回结果都没有返回,都缓存在模块之中,等我将RTS设置有效后,缓存的数据全发来了,包括一大堆指令的执行结果,由此,我觉 得上面的“解释一”应该正确,而“解释二”应该是错的,但“解释三”是否正确呢?就是说CTS和RTS哪个是发起者呢?

答:
一是错的
二是RS232标准
三是MODEM的硬件流控
SIMCOM公司的解释完全正确

    很久很久以前,计算机还没有出现,那时就已经存在了(计算机)史前的串口设备(电传打字机,工控测量设备,通信调制解调器),为了连接这些串口,EIA制 定了RS232标准,采用DB25接插件,支持同步和异步串口,D型的接口可以有效防止插反。标准化给使用带来了便利。
    时光荏苒,个人计算机出现了,这些已有的串口设备毫无疑问地成为了最初的外设,自然而然地RS232标准被个人计算机采纳。但是设备制造商倾向于体积更 小,成本更低的接口,因此,将DB25中未使用的和支持同步模式的引脚去掉,形成DB9。最初的情况相当混乱,因为DB9只定义了信号,却没有指定信号和 引脚的对应关系,各个制造商只能自行定义。幸运的是,IBM的PC成了工业标准,DB9逐渐统一到IBM的定义上来。
    DB9只有9根线,遵循RS232标准。定义如下:
    DTR,DSR------DTE设备准备好/DCE设备准备好。主流控信号。
    RTS,CTS------请求发送/清除发送。用于半双工时,收发切换。属于辅助流控信号。半双工的意思是说,发的时候不收,收的时候不发。那么怎么区 分收发呢?缺省时是DCE向DTE发送数据,当DTE决定向DCE发数据时,先有效RTS,表示DTE希望向DCE发送,一般DCE不能马上转换收发状 态,DTE就通过监测CTS是否有效来判断可否发送,这样避免了DTE在DCE未准备好时发送所导致的数据丢失。
    全双工时,这两个信号一直有效即可。
   
    随着计算机的日益普及,很多非RS232的串口也要接入PC机,如果为每一种新出现的串口都增加一个新的I/O口显然不现实,因为PC后面板位置有限,因 此,将RS232串口和非RS232串口都通过RS232口接入是最佳方案。UART的U(通用)指的就是这个意思。早期ROM BIOS和DOS里的通信软件都是为RS232设计的,在没有检测到DCD有效前不会发送数据,因此,就连发送一个字符这样朴素的应用也要给出DCD、 DTR、DSR等控制信号。因此,串口接头上要将一些控制线短接,或者干脆绕过系统软件自己写通信程序。
    到此,UART的涵义就总结为:通用的 异步 (串行) I/O口。
    就在UART冠以通用二字,准备一统江湖的时候,制造商们不满于它的速度、体积和灵活性(软件可配置),推出了USB和1394串口。目前,笔记本上的 UART串口有被取消的趋势,因而有网友发出了“没有串口,吾谁与归”的慨叹,古今多少事,都付笑谈中,USB取代UART是后话,暂且不表。
    话说自从贺氏(Hayes)公司推出了聪明猫(SmartModem),他们制定的MODEM接口就成了业界标准,自此以后,所有公司制造的兼容猫都符合贺氏标准(连AT指令也兼容,大家一起抄他呗)。
    细观贺氏制定的MODEM串口,与RS232标准大不相同。DTR在整个通信过程中一直保持有效,DSR在MODEM上电后/可以拨号前有效(取决于软件 对DSR的理解),在通信过程的任意时刻,只要DTR/DSR无效,通信过程立即终止。在某种意义上,这也可以算是流控,但肯定不是RS232所指的那种 主流控。如果拘泥于RS232,你是不会理解DTR和DSR的用途的。
    贺氏不但改了DTR和DSR,竟然连RTS和CTS的涵义也重新定义了。因此,RTS和CTS已经不具有最开始的意义了。从字面理解RTS和CTS,是用 于半双工通信的,当DTE想从收模式改为发模式时,就有效RTS请求发送,DCE收到RTS请求后不能立即完成转换,需要一段时间,然后有效CTS通知 DTE:DCE已经转到发模式,DTE可以开始发送了。在全双工时,RTS和CTS都缺省置为有效即可。然而,在贺氏的MODEM串口定义中,RTS和 CTS用于硬件流控,和什么劳什子的全双工/半双工一点关系也没有。
    注意,硬件流控是靠软件实现的,之所以强调“硬件”二字,仅仅是因为硬件流控提供了用于流量情况指示的硬件连线,并不是说,你只要把线连上,硬件就能自己流控。如果软件不支持,光连上RTS和CTS是没有用的。
    RTS和CTS硬件流控的软件算法如下:(RTS有效表示PC机可以收,CTS有效表示MODEM可以收,这两个信号互相独立,分别指示一个方向的流量情况。

========== 我是分隔线 ==========

以下是我的几句胡言乱语

最近在捣鼓一个GSM模块,正好也要用到这东西,就baidu了一把,可以帮助我理解Datasheet的内容。看了上面的内容,我不知道各位明白了几分,如果觉得都明白了,就不用看我废话了。

还是先引用一些文字,来自Telit公司GM862 QUAD/PY的数据手册
Pin Signal    I/O Function
20 C103/TXD I Serial data input (TXD) from DTE
29 C106/CTS O Output for Clear to send signal (CTS) to DTE
33 C107/DSR O Output for Data set ready signal (DSR) to DTE
37 C104/RXD O Serial data output to DTE
43 C108/DTR I Input for Data terminal ready signal (DTR) from DTE
45 C105/RTS I Input for Request to send signal (RTS) from DTE

注意上面各个功能的I/O的方向,看到这些缩写的全称,结合信号流向,是不是更容易理解呢 大笑

DTE是数据发送的主动方,DCE是数据的接受方。

CTS是让DTE明白的,也就是说DCE需要把自己的CTS给DTE看,让他知道DEC已经准备好接受数据了。
RTS是DTE给DCE看的,告诉DCE,DTE有数据要发。

好啦,这个话题就到这里~~ 调皮 还没看懂的同学继续.....

posted @ 2010-02-04 13:34 ccjvl 阅读(6) | 评论 (0)编辑
 生产管理
 
 

    随着生产力和科技水平的不断发展,企业的生产规模越来越大,生产工序也会越来越复杂。在这种社会化大生产的情形下,许多的企业正面临一个如何进行高效管理的问题。生产型企业管理的核心环节就是生产管理,因为它关系到企业的生产效率、生产水平和生产质量,甚至企业的生死存亡。而如何对企业生产过程中产生的大量庞杂的数据信息进行有效便捷的管理正是我们迫切需要解决的问题。信息已成为决定企业经济增长的战略资源,利用先进的信息技术建立企业的管理信息系统是企业增强竞争优势的必要手段。
    MES(Manufacturing Execution System)直译成制造执行系统,俗称生产管理系统。美国的咨询调查公司(Advanced Manufacturing Research,AMR),倡导制造业用三层模型(3rd layer model)表示信息化,MES处于企业信息系统ERP/SCM和过程控制系统DCS/PLC的中间位置。ERP作为业务管理系统,DCS/PLC作为控制系统,而MES则作为生产执行系统。
    MES与上层ERP等业务系统和底层DCS等生产设备控制系统一起构成企业的神经系统,一是把业务计划的指令传达到生产现场,二是将生产现场的信息及时收集、上传和处理。MES不单是面向生产现场的系统,而是作为上、下两个层次之间双方信息的传递系统,是连结现场层和经营层,改善生产经营效益的前沿系统。

 
 
  系统概述
 
 

    传统的生产管理系统的各个环节大多数是采用手工操作的方式,数据信息大多存放在纸张上,这样必定存在存放信息少、占据空间大、信息分散、不易存放、不易更新、容易丢失、难以备份等一系列重大的缺陷。
    生产管理系统遵循先进的管理经验和方法,融入现代化知识管理技术,支持用户调整和扩展新的业务功能,为企业提供一个以提高“效率”和“效益”为目标的现代化生产管理工作平台。同时,生产管理的数据信息也是构成企业信息资源的重要组成部分。MES主要适用于生产制造企业的生产管理、企业物流管理等。

软件系统概述

    MES是应用于各种制造业的重要信息系统。生产管理系统以生产管理软件为核心,依靠计算机网络技术和数据库管理平台,以无线数据采集器、条码阅读器和条码打印机为辅助工具共同构成实物生产管理系统。
    MES系统使用实时精确的数据,优化从订单到产品完成的整个生产活动,对工厂的全部生产活动进行指导、反应和报告。通过对变化情况的快速反应,减少无附加值行为,提高工厂运行和处理的有效性。

管理流程

    生产管理强调生产计划的执行以及生产现场数据的采集和反馈。
    生产管理系统通过基于前后工序衔接的生产协调、考虑工序能力的生产计划、实时的物料跟踪与指导等功能,掌握从订单接受到发货的整个过程的物流信息,对产品订单、质量、设备、资源等进行全面的动态管理,从而保证产品的质量、数量、交货期,同时有效的利用工厂资源,最终达到:以灵活的产品结构、生产组织方式和高质量的产品响应市场需求,以有竞争力的价格、短的交货期和良好的服务占领市场;以最低的生产成本获取高的利润。

生产管理系统管理流程图如下:

生产管理系统业务流程图

 
 
  系统功能特点
 
 

    MES起着上下沟通企业管理平台和现场控制设备的垂直集成作用,同时又起着前后贯通所有产线,实现全过程的一体化产品与质量设计、计划与物流调度、生产控制与管理的核心作用。

系统结构

生产管理系统网络拓扑结构图

系统特点

    生产管理系统遵循企业生产管理业务的处理流程,采用面向对象的设计思想,并最大限度使其客户化,以适应用户业务变化的需要。它不仅实现了企业生产管理的计算机化,还规范了生产管理业务,提高了工作效率,实现了生产信息资源的共享,为领导的决策提供了依据。
    ◇敏捷生产计划管理体系
    帮助企业根据销售订单与销售预测而制定比较精确的生产计划,据此产生的生产计划可以帮助企业制定精确的原料需求计划,与供应商实现有效的协同,满足企业实现及时生产和避免库存积压的生产要求。
    ◇灵活的生产流程管理技术
    MES系统将企业内的工序、工位、作业计划单进行综合管理和过程控制,从而实现生产流程清晰可控,使人员与设备达到最佳配置,提高企业的生产效率。一旦产品属性、交货期限、数量、质量、工艺路径以及投入的物料得到确认,生产计划单就转化成为生产任务单,并开始生产。
    生产制造企业管理解决方案可对生产工艺流程进行灵活定义,自由设置工艺参数和工序,做到对整个生产流程的灵活控制管理。
    ◇生产过程全程引入条码管理
    生产管理系统采用了先进的条码技术,利用条码信息介质,对生产进行全程跟踪。在生产数据采集时,生产人员只须通过专门的条码阅读器对标识产品、人员和设备的条码进行扫描,条码信息就自动存储在条码阅读器中,读入条码完成后,将数据采集器和计算机连接或通过无线连接,将采集到的数据传输到计算机系统中,能迅速获取生产的实际情况,通过系统查询功能可立即得到实时的生产数据,并可以打印出各类统计报表。
    ◇精确实时的库存控制管理
    仓库管理模块可以对每种商品进行从入库、库存、出库、库存预警到发货、退货、盘点以及库存信息查询等进行全过程管理。在材料明细账中做详细的记录,完成从入库到出库的各种收发管理。通过库存管理模块,企业可以获得及时准确的库存信息,及时做出正确的经营决策。

    生产管理系统是生产制造企业信息化管理解决方案的重要组成部分,并与包括企业物流管理软件和设备管理软件在内的其他企业管理(ERP)产品无缝集成。

系统功能

    生产管理系统按照实际工作流程通过严格的权限设置完成不同岗位人员的录入、上报、审核、汇总、统计分析等功能。同时,为了增加数据的安全性,提供了数据备份、数据恢复等功能;为了增加程序的灵活性,提供了用户定制设计的功能。
    生产管理系统功能模块主要包括:系统管理、基础信息、客户关系、产品管理、生产管理、数据采集、仓库管理、查询统计以及成本核算。

生产管理系统功能模块图

    MES将实现以下生产管理功能及扩展功能:
    生产作业计划编制。 根据生产线的特点,对生产订单进行组批,并按工艺要求对生产对象进行排序和各种生产限制条件的检查,以形成具体的生产作业计划,使生产能连续、均衡地进行,使各种设备能在最佳状态下工作。
    生产指令生成及下达。 根据确定的计划及质量设计结果自动生成作业指令。

生产指令(生产操作卡)界面

    质量管理与质量跟踪。根据各种物料的质量要求和判定标准,MES将保存生产过程中的工序检验以及产成品检验数据。在引入了条码技术的基础上,系统可以对任何产品在生产执行过程中的质量状况进行跟踪检索。
    生产实绩收集及生产统计。对生产进程进行实时跟踪,产出产品后将生产过程中的具体设定参数及各种生产实绩,包括主副料的投用、各种测量设备测试的结果上传给MES系统。MES根据生产实绩对计划和物料作相应的处理,对计划执行状态和物料状态设置标志,并可以分品种、规格对生产结果进行实时统计。
    仓库管理。 对不同的堆场和仓库,包括原料库、中间库、成品库进行物料跟踪和库存控制,对物料进行库区和库位管理。
    成本核算。 按事先确定的成本中心收集各工序的成本数据,也同时收集生产过程中的能源消耗数据,完成对生产成本的核算。

技术特色

    ·利用先进的计算机技术,结合现代化的管理思想为用户提供了一个全面的、系统的、最优的生产管理的解决方案。
    ·系统采用主流的大型数据库系统和功能强大的开发平台,以此实现用户对企业生产的网络化管理。
    ·采用先进的软件设计策略帮助客户成功提升生产管理水平。
    ·优异的软件性能
        ① 集成性强。包括对企业内部业务的整合能力以及对供应链外部资源的整合能力。
        ② 在生产管理系统中引入业界最先进的条形码技术。
        ③ 极强的扩展能力。
        ④ 可维护性好,维护成本低。

posted @ 2010-02-04 13:33 ccjvl 阅读(1) | 评论 (0)编辑
  一、系统概述

  金动力生产管理软件针对中小型制造企业的生产应用而开发,能够帮助企业建立一个规范准确即时的生产数据库,同时实现轻松、规范、细致的生产业务、库存业务一体化管理工作。提高管理效率、掌握及时、准确、全面的生产动态,有效控制生产过程。适用于所有从事产品制造及有库存管理的企业。
  通过应用本系统的生产管理模块,管理者能够随时了解生产情况,库存存货情况,自动生成生产配料单,跟踪整个生产过程,科学管理生产物料,同时还可以帮助企业管理者有效控制生产成本,及时了解产品产量及库存的业务细节,发现存在的问题,避免库存积压,做到快速的市场反应。
  二、适用范围
  适用于所有从事产品制造及有库存管理的企业.
  三、系统功能
  1.生产管理:
  (1)物料清单支持同一产品多个版本,支持多种配方方案,从根本上控制生产成本
  (2)能够根据生产订单数量自动算料,自动生成配料单,有效避免材料浪费
  (3)领料单能够分仓库领料,自动生成,无需人工填写,审核后自动生成出库单
  (4)支持退料、补料流程,退补料自动更正产品成本
  (5)产品完工后,自动核算产品成本
  (6)支持分部门、分月份的产品生产计划管理
  2.采购管理:采购管理由请购单、采购订单、采购单、采购发票、采购退货等功能模块组成。具有以下功能特点:
  (1)系统整合了采购全面业务。从采购货品、退货、付款等一系列工作进行全面跟踪,控制采购流程合理应用。实现了业务环结紧密联接
  (2)建立完善的供应商档案,实时控制供应商资料、信用、价格、等关键环节业务处理
  (3)全方位统计分析,全面详尽掌握采购业务整体情况,减少盲目进货,降低库存积压和流动资金的大量占用
  (4)支持采购订单、采购入库、采购退货业务,满足中小型企业商贸业务中采购核算管理
  (5)支持货品条形码管理,支持批次管理、有效期管理
  (6)采购订单可以参照请购单自动生成,采购单可以参照采购订单生成,也可手动审核后生成入库单及应付款
  3.销售管理:销售管理由销售订单、销售单、零售单、销售发票、利润分析、赠品/样品等功能模块组成。支持批发和零售行业,具有以下特点:
  (1)系统整合了销售全面业务。清晰管理客户往来业务账目及订单执行过程,实现有效控制
  (2)有效的建立客户资料、价格体系、信用额度、应收款期限等关键环节业务管控,使企业灵活、快速应对市场变化,减少坏帐,规避销售风险
  (3)能够按客户、货品、销售类型、单据日期、销售排行等灵活搜索历史订单,随时导入导出Excel
  (4)全方位统计分析,全面详尽掌握销售业务整体情况,快速把握销售状况,抓住商机
  (5)支持销售、结算、退货业务,满足企业管理项目经营利润。分析项目业务拓展提供准确数据
  4.库存管理:库存管理包括入库管理、出库管理、调拨管理、盘点管理等功能模块。具有以下功能特点:
  (1)入库管理:对入库货品进行审批,也可以建立直接入库单,对入库货品进行查询和统计
  (2)出库管理:对出库货品进行审批,也可以建立直接出库单,对出库货品进行查询和统计
  (3)调拨管理:在不同仓库间调拨货品,通过货品调拨功能,加快物流周转速度,保证分销业务顺利进行
  (4)库存盘点:可以定期盘点库存,如果有出入,建立盘点清单,平衡库存
  (5)库存查看:可以对当前库存进行查询,也可以对滞销、畅销货品的查询。查询时可以根据多种条件组合查询货品记录,可通过EXL表导出数据,并可以打印出历史数据列表
  (6)库存预警:包括产品库存上限报警、产品安全库存报警、产品保质期报警;滞销产品报警预先设定商品库存上下限,实现库存报警功能,当库存产品少于产品的库存预警数时系统自动预警,以达到降低库存,减少资金占用,避免货品积压或短缺现象
  (7)库存统计:统计不同仓库的库存成本,可以分别在各栏目中查看到出入库统计、盘点统计、调拨统计等等
  (8)月末处理:包括会计日历和月结
  5.拆装管理:拆装管理包括组装和拆分,是将一个商品拆装成多个物料,其中拆装后的物料为入库、商品为出库
  (1)组装单:可将各仓库中的货品组装成一个商品,入库
  (2)拆分单:可将一个货品拆分成若干个零部件或是半成品,入库
  6.财务管理:财务管理由应收欠款、应付欠款、收款单、付款单、费用单等功能模块组成。具有以下功能特点:
  (1)无须财务专业知识,简单明了管理应收帐款、应付帐款、费用。达到清晰理财,收入支出一目了然
  (2)清晰反映每一笔业务流水帐目,及时计算每笔业务利润
  (3)提供供应商、客户的往来帐务,实时查看供应商、客户应收、应付流水明细,清楚分析经营情况表,帮助企业经营者轻松了解运营状况
  7.系统管理 :
  (1)权限控制灵活方便,通过岗位控制权限,比如:库管能使用哪个功能,能查看哪条数据,不能查看哪个项目,比如价格
  (2)在线监控能够随时查看软件的在线用户情况,保证系统安全
  (3)系统日志能够随时查询软件的使用情况,例如:谁什么时间登录,做了哪些操作,改了哪些数据
  (4)数据备份,保证数据安全。支持手动备份和定时自动备份
posted @ 2010-02-04 13:33 ccjvl 阅读(1) | 评论 (0)编辑

无线终端节点不需要设置PAN ID ,它会自动搜索并加入网络,如果网络中一直没有中心节点,自动进入睡眠,中心节点一旦开启,则终端自动加入网络,应该是通过定期监测。

注意:中心只允许最多10个终端节点,中继最多允许12个终端节点

终端或路由节点的串口选项中RO为毫秒间隔设置,设置过短则数据可能会中断
AT命令JV的作用:终端或路由自动加入网络

1) 无线模块的各种参数通过命令更改后必须使用写入命令进行固化,否则掉电后回复原来的设置。

 

   无线模块路由节点可设置JV的参数为1,使其重新上电或按重启复位按钮后可自动搜索网络,从而自动更改PAN IDCH

    无线模块终端节点不需要复位和重上电即可自动更改CH(保证PAN ID与中心节点一致),只要设置相同的PAN ID即可自由更换中心节点。

 

总结:

1、   终端节点搜索中心节点加入网络(NR网络重启命令,不要加参数1,否则一旦在网络内,再发命令全部节点都要更换网络PAN ID)最短时间为10s,返回状态信息(NR命令更新网络PANID成功返回值:模块状态信息0306    7E 00 02 8A 03 72 7E 00 02 8A 06 6F)为加入成功。

2、   NR命令作用:

协调器:

不带参数01:只更改自己的PAN ID

带参数01:更改全部加入网络节点的网络PAN ID

路由节点或终端(搜索不到协调器时该命令不起作用):

不带参数01:加入网络使自己的PANID和协调器一致(已在网络内PANID不变);

带参数01:更换全部节点包括协调器的网络PANID

 

posted @ 2010-02-02 10:04 ccjvl 阅读(2) | 评论 (0)编辑