OMRON的HOSTLINK协议

    我在使用OMRON的PLC时一般都用无线传输,无线传输的数据也大都采用透明方式。设备主要分为两种,一种是无线电台,一种是GPRS模块。(无线电台是一家公司从加拿大进口的丝贝克的 跳频电台,http://www.dlmytech.com/ 网站有详细的产品列表),即然使用无线数据模式,所以对于PLC之间来说,只要能识别设备,地址也不是很重要了,但我还是会按着顺序对PLC进行址编号。

     HOSTLINK协议也是应答式方式,具体的内容请参考相关的资料,这里给出一段计算校验码的代码,如下:

 

View Code
/// <summary>
        
/// 将数据进行FCS校验,并返回一个完整的命令字符串
        
/// </summary>
        
/// <param name="data">增加FCS校验的数据</param>
        
/// <returns>带有FCS校验验并可发送到 OMRON PLC的数据</returns>
        public static string FCS(string data)
        {
            
string hostlink = data + ComputeFCS(data) + "*" + (char)13;
            
return hostlink; 
        }
至于这个为什么叫FCS校验我没问过也不太清楚,是以前我的同事都这样命名的。
/// <summary>
        
/// 上位机校验
        
/// </summary>
        
/// <param name="linkstring">进行校验的数据,以@开始的字符串</param>
        
/// <returns></returns>
        private static string ComputeFCS(string linkstring)
        {
            
char inFcs = (char)linkstring[0];
            
int fcsResult = (int)inFcs;
            
for (int i = 1; i < linkstring.Length; i++)
            {
                inFcs 
= (char)linkstring[i];
                fcsResult 
^= (int)inFcs;
            }
            
return fcsResult.ToString("X");
        }
//HOSTLINK协议的校验码校验很简单,从第一位到最后一位进行累异或运算,最后的结果的高低位相易。
View Code
/// <summary>
        
/// 对带有FCS校验的数据进行校验
        
/// </summary>
        
/// <param name="receives">带有FCS的数据</param>
        
/// <returns>校验正确返回 true 否则返回 false</returns>
        public static bool CheckFCS(string receives)
        {
            
int i = receives.IndexOf('*');
            
string data = receives.Substring(0, i-2);
            
if (receives.Substring(i - 22).Equals(ComputeFCS(data)))
                
return true;
            
else return false;
        }
     这就是一个简单的HOSTLINK协议校验计算的类,我已经打成DLL形式,在应用的时候调用,并已经用在很多项目上了。
     希望能给初用这个协议的人员提供一点帮助。
posted @ 2011-04-15 10:18  Aeridy  阅读(4678)  评论(0编辑  收藏  举报