| 作者 | 主题 |
|---|---|
|
link_wxm 侠客 经验值:730 发帖数:125 精华帖:3 |
楼主
主题:ADD求和?有没有好的办法?
最近用西门子1200跟三菱FX系列PLC的编程口通讯时,要求计算和校验。
PLC通过自由协议发送53个字节到三菱PLC,所以我建数组的时候就建成字节的数组,和校验也是以字节的方式进行的。 问题出来了,既然以字节求和那么结果大于字节怎么办,一般情况以什么数据类型进行计算结果也必须是相同的数据类型,无意间我注意到帮助文件说明里有这么一句话“指令结果超出输出 OUT 指定的数据类型的允许范围”就因为这句话马上想到和的结果是不是可以改为字或双字,于是我就MW**和MD**结果没报错,编译后下载进去结果怎么样大家应该有答案了,对了指令不执行。让我很不理解的是编译正常结果不执行也不报错(以前用日系的这样应该报错的)。 如果这样不行是不是意味着我就必须来回的转换了(如果是真的话那也太麻烦了,这才是一条就53个字节在加几条的话估计要疯了)。 望各位高手帮帮忙看看有没有别的办法?谢谢! |
|
伊默 至圣 经验值:19233 发帖数:4257 精华帖:118 |
2楼
主题:回复:ADD求和?有没有好的办法?
本来你的和校验就应该用字啊!
53个字节相加,肯定在一个字的范围之内啊。 只要字节数不超过256就行了。 至于转换的问题,这不是个事啊。 你做个FOR NEXT循环,在每个循环里做这不很简单的事么? BCC : UInt; Data : Array[1..53] Of Byte; FOR i=1 TO 53 DO BCC := BCC + BYTE_TO_UINT(Data[i]); NEXT;
I can do it
|