
ABB DI840
ABBDI840(3BSE020836R1)TITLE=子程序注释//CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或,之后对CRC寄存器从高到低进行移位,在***高位(MSB)的位置补零,而***低位(LSB),移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码(16#A001)进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,***个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为***终的CRC值。//下面为CRC的计算过程://1.设置CRC寄存器,并给其赋值FFFF(hex)。//2.将数据的***个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。//3.CRC寄存器向右移一位,MSB补零,移出并检查LSB。//4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。//5.重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。//6.重复第2至第5步直到所有数据全部处理完成。//7.***终CRC寄存器的内容即为CRC值。////输入参数://待校验数据区指针,***个字节为数据长度//LD0DataBuffINDWORDNetwork1LD***0.0MOVW16#FFFF,AC0//初始化CRC寄存器BTI*LD0,LW4//数据缓冲区***个字节为数据长度MOVDLD0,LD6INCDLD6//指针指向***个待处理字节Network2LD***0.0FORAC2,+1,LW4//开始循环处理每一个字节Network3LD***0.0XORB*LD6,AC0//字节首先与CRC寄存器低位进行异或Network4LD***0.0FORAC1,+1,+8//移位处理循环,处理一个字节的8位Network5LD***0.0SRWAC0,1//CRC寄存器右移一位Network6LD***1.1//如果移出位为0,则进入下一次循环XORW16#A001,AC0//如果移出位为1,CRC寄存器与多项式16#A001异或Network7NEXTNetwork8LD***0.0INCDLD6//指针加1指向下一个字节Network9NEXTNetwork10LD***0.0SWAPAC0//交换CRC寄存器高低字节MOVWAC0,*LD6//CRC校验值写入数据区结尾控制系统在使用过程中,经常要修改一些参数,***常见的就是修改定时器的设定值.为了操作员方便修改定时器的设定值,可用下列方法来实现:1、使用人机界面PLC可以用触摸屏、文本显示器或工控机作人机界面,方便修改定时器参数,但成本较高.2、使用PLC内置的模拟电位器小型PLC一般都有内置的设置参数用的模拟电位器.如三菱PLCFX1N、FX1S的外部调节寄存器D8030和D8031的值与模拟电位器的位置相对应.S7-200的两个模拟电位器对应的寄存器是***B28和***B29.CP1H的模拟电位器对应的寄存器A642.3、用模拟量设定功能扩展板修改定时器的设定值三菱FX系列的模拟量设定功能扩展板FX2N-8***-BD上有8个电位器,可以用应用指令VRRD读出各电位器设定的8位二进制数,用定作定时器、计数器的设定值.4、用PLC外部触点在程序内作加减计数器实现设定定时器的设定值用按钮的上升沿与加减计数器实现.当按下按钮,加减计数器的寄存器加1或减1.而定时器的设定值就是寄存器中的数值.根据需要与定时器的基时要确定按下的次数.加计数与减计数的外部接点要分开.5、增加LCD选件板改变PLC内部定时器的设定值.可以方便的监控、变更永宏PLC内数据值,并可以实现错误状态的可视化.欧姆龙CP1H、CP1L的PLC可以增加LCD选件板CP1W-DAM01.)