项目是一个S7200和十几台秤重仪表进行自由口通讯,再和DCS进行MODBUS通讯.在家里做实验,一个S7200与3台秤重仪表进行通讯。编了一个子程序进行通讯字节和校验。通讯程序大概过程如下:
在定时中断(100MS)里调用校验子程序,算出校验和,并发送。
在发送完成中断里调用接收指令。
在接收完成中断里置接收完成位。
在OB1里判断接收完成标志并调用校验子程序对接收的帧的正确性进行判断。
现在的问题是:
检验子程序好象重入了,在OB1里的调用执行结果总不正确。后来在两处调用分别做了两个子程序(两个程序一样)就好了。
问题时子程序怎么会重入呢?我看了一下OB1的扫描时间只有几MS,而定时中断隔100MS才会调用一次。而且我在OB1的调用检验子程序时,首先把中断关掉了,执行完程序才开中断的。