FTO系统数据通信处理分析论文
1技术方案
1.1传统通信方式
S7-300PLC采用CP341进行数据通信,CP341应用最多的是ModbusRTU通信方式。ModbusRTU通信协议采取主从模式:由主站发出数据操作请求,从站进行响应。整个网络可以有多个从站,但是必须有且只有一个主站。若主站不发出数据操作请求,则所有从站保持静默状态。PLC在ModbusRTU模式中一般作为从站响应上游的DCS主站请求。为保证FTO系统现场控制盘内的PLC与DCS主站通信成功,首先要确定从站能辨识主站的查询请求,其次要保证从站响应主站的报文格式正确,应符合Mod-busRTU标准格式。
1.2程序结构流程
在FTO系统的就地PLC与DCS主站通信中,采用软件结构化编程模拟传统的硬件通信模块固化的程序流程,主要的程序模块有:OB1———主程序,程序组织块,用于启用主程序;OB80———程序组织块,用于报告系统运行错误号;OB121、OB122———程序组织块,用于程序容错处理,防止PLC死机;FB7———子程序,程序功能块,用于从总线上接收主机的请求数据;FB8———子程序,程序功能块,用于把从站数据发送到总线上,以响应主机的请求;FB9———子程序,RTUSLAVE通信主程序。
1.3具体实现
程序组织块OB80、OB121、OB122可直接从Step7中调用。CP341用功能块FB7“P_RCV_RK”和FB8“P_SND_RK”分别从通信总线上接收和发送通信数据。在本通信程序中被主程序FB9调用。FB9是RTUSLAVE通信主程序,用于运行中的程序流程,由其调用FB7、FB8、FC10和FC12。起始时,FB9调用FB7从总线上接收主站请求的报文,通过解析报文的第一字节内容(从站地址),判断地址是否与本从站一致,若不一致则直接丢弃此报文,继续监测总线数据;若报文请求地址与本从站地址一致,则调用FC12子程序对报文进行CRC16校验,若校验失败则说明报文有误,直接丢弃报文;若校验通过,则继续解析此报文请求的第二字节(功能码),按功能码的请求分别转到对应的程序段执行;执行相应的请求功能后,调用FC10进行数据移动整理,并再次调用FC12对响应后的数据进行校验,并将校验码附加到响应数据的最后两个字节作为响应报文,调用FB8发送到总线供主机接收。通信程序的容错机制采用CRC16校验。CRC16校验程序由于要对通信的所有数据进行逐一字节的运算,因此极其耗费CPU运算资源,经实验,采用PLC内置硬件模块处理的通信数据量达到256Byte后CPU运算时间大于扫描周期时间的概率大为增加,容易导致通信错误和CPU死机。为了不使计算时间超出PLC的最大允许扫描时间,笔者设计将计算一串数据的CRC16校验码任务分散到各PLC周期中去。具体做法是:每个扫描周期只进行一个字节的通信数据CRC16校验计算,一串通信数据则依字节数分散到多个周期去做,设置一个全局变量存储当前的CRC16检验码值,每个周期在当前CRC16校验码值的基础上继续下一个字节的计算,得到新的CRC16校验码值,当一串数据全部计算完毕后,当前CRC16校验码值即最终值。CRC16单个字节校验编程的具体实现步骤如下:
a.设置CRC寄存器,并给其赋值FFFF(hex);
b.将待校验数据(起始位、停止位不参加计算)的第一个字节与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器;
c.CRC寄存器向右移一位,MSB补零,移出并检查LSB;
d.如果LSB为0则重复c,若LSB为1就把CRC寄存器与A001H相异或;
e.重复c与d直到8次移位全部完成,此时该字节数据处理完毕;
f.重复b~e直到所有数据全部处理完成;
g.最终CRC寄存器的'内容即为CRC值。FB9、FC10和FC12是通信程序核心,也是此方法的主要源代码内容。此程序代码实现的ModbusRTU支持的功能码为01、02、03、04、05、06、15和16。
2应用结果
FTO系统中数字量为298点,模拟量为163点,单回路8个,复杂控制回路4个。为保证PLC的运行实时性,设置其极限循环扫描时间为150ms。对3种通信方式进行对比,软件单次扫描循环方式是将通信过程中计算量最大的CRC校验计算在一个扫描周期内运行,运行时间为198ms,远超出了PLC极限循环扫描时间,引起CPU停机;采用传统的硬件通信模块时,扫描时间为142ms,比较接近150ms的极限,若考虑到模拟量控制回路运行时间的不确定性,则复杂工况下,也存在导致CPU停机的风险;利用多个扫描周期来计算CRC校验码值的方式,每次循环只要89ms,保证了CPU循环扫描时间的足够裕量,有利于系统稳定可靠运行。从通信成本投入看,尤其是对中小型PLC系统,软件多次扫描循环方法是经济的。
3结束语
FTO系统运行至今,回路显示、控制和通信数据的交换一直稳定、可靠,达到了预期目的。应用结果表明,该方法提高了PLC处理大量通信数据时的运行可靠性,保证了FTO系统的可靠运行,同时节省了购置PLC通信硬件的高额成本,应用前景广阔。
【FTO系统数据通信处理分析论文】相关文章: