pc与cpu226通过pc/ppi转接线通讯,采用用户自定义协议,plc端程序采用西门子网站上的一个例子,网址http://www.ad.siemens.com.cn/applic/as/s7_200/freeport.asp,pc端采用vb。
现在有几个问题,请斑竹和各位高手指点一二。
问题一:实验目的在于仿真plc输入点的状态,比如说plc输入点i0.0接通,我要在pc上实时显示出来。我知道cpu226有输入映像寄存器,地址分布从I0.0到
I15.7,总共有8*16位,但是cpu只有14个输入点。我想知道,这8*16个位里,那些点代表这14个输入点的状态?还是另有其他点?小弟初学,错误之处请勿见笑。
问题二:该实验的协议采用bcc校验,也就是各位的异或和就是校验码。请参考上述提供的网页链接里的例子,pc发送的数据有33位,假设其为sdata(0 to 32),sdata(0)是起始字符,sdata(32)终止字符,sdata(1)是指令类型,sdata(2)和sdata(3)是目标plc地址,sdata(4)到sdata(11)是目标寄存器地址,sdata(12)和sdata(13)是读/写字节数M,sdata(14)到sdata(29)是要写入的数据,sdata(30)和sdata(31)是bcc校验码。这些字符全部采用十六进制格式。假设codebcc是校验码,按照bcc校验的规定,codebcc应该等于sdata(1)到sdata(29)各数据的异或和,即codebcc=sdata(1)xor sdata(2)........xor sdata(29),那么codebcc应该是一个字节阿,怎么发送字符里却是两个字节sdata(30)和sdata(31)?或者我的校验方式不对?
请斑竹和各位高手花费一点点时间,回个帖,指点一下,小弟多谢了!