(5)模式选择:进入interface界面(见图2),把操作模式选择为half duplex(rs485) two-wiremode。表示此通信运行在rs485半双工模式。  

  6 软件编程  硬件组态完成后,接下来就进行软件编程,在ob1中调用fb3发送程序块。  call fb 3,db22  req :=m0.0  r :=  laddr :=256  db-n0 :=10  len :=8  done :=  error :=  status :=  引脚说明:  req:发送请求,每个上升沿发送一帧数据  r:复位请求  laddr:cp340的逻辑地址(硬件组态中的地址)  db_no:指定发送区(db块)  dbb_no:指定发送区在db中的起始字节  len:发送字节的长度  done:发送完成输出一个脉冲  error:发送失败输出1  status:状态字  此程序的功能为,当m0.0每个上升沿的时候把数据块db10中的前8个字节的数据从cp340的通信口发出,数据内如表2所示。  

  该发送数据包内容可以解释为,请求读取站地址为16#b的通信处理器中从16#4100开始的22个寄存器中的数据。即前面提到的网关变量表中的内容。  图中byte7(db10.dbb6),byte8(db10.dbb8)两个字节是crc校验字,crc校验的步骤如下:  (1)装载16#ffff到一个16位crc寄存器;  (2)将crc寄存器的高8位字节与信息中的第一个8位字节相异或,结果返回到crc寄存器中;  (3)将crc寄存器数据向右移动一位;  (4)如果溢出的位等于1,则将crc寄存器与16#a001相异或,结果返回到crc寄存器中;  (5)如果溢出的位等于0,则重复第3步;  (6)重复第3、4步骤,直到已经移位了8次;  (7)将crc寄存器的高8位字节与信息中的下一个8位字节相异或,结果返回到crc寄存器中;  (8)重复第3步到第6步,直到信息中所有字节都与crc寄存器相异或,并都移位了8次;  (9)最后的crc寄存器中的结果即为crc校验码,最后被添加到信息(数据)的末尾(交换!低8位在前,高8位在后!)。  按照以上校验步骤,编写crc校验功能子程序fc6(见表3)。  

  在ob1中调用子程序fc6,计算出db10中的crc校验值。  call fc 6  db_no :=db10 //发送数据块  start_byte :=0 //起始字节  length :=6 //字节个数  crc_msb :=db10.dbb6 //crc高8位  crc_lsb :=db10.dbb7 //crc低8位  然后在ob1中调用串口数据接收功能块fb2:  all fb 2,db21  en-r :=m0.0  r :=  laddr :=256  db-n0 :=11  dbb-no :=0  ndr :=  error :=  len :=  status :=  引脚说明:  en_r:接收使能  laddr:cp340的逻辑地址  db_no:指定接收db  dbb_no:指定接收db中的起始字节。  ndr:接收新数据输出一个脉冲  error:接收失败输出1  len:输出接收字节的长度  status:状态字  此程序的含义为,在m0.1为1的时候从cp340接收数据,并把数据存在数据块db11中。  之后再提取db11中的数据,得到以下冷冻机的实际运行参数值(见表4)。

  7 结束语  本文详细阐述了如何采用modbus协议实现s7-300与冷冻机之间的数据通信。实现了异种设备之间的连接,为实现公司的集中监控目标铺平了道路。
共两页 第1页   第2页