技术论坛

 回复:ADD求和?有没有好的办法?

返回主题列表
作者 主题
link_wxm
侠客

经验值:730
发帖数:125
精华帖:3
楼主    2014-07-30 15:35:02
主题:ADD求和?有没有好的办法?
最近用西门子1200跟三菱FX系列PLC的编程口通讯时,要求计算和校验。
PLC通过自由协议发送53个字节到三菱PLC,所以我建数组的时候就建成字节的数组,和校验也是以字节的方式进行的。
问题出来了,既然以字节求和那么结果大于字节怎么办,一般情况以什么数据类型进行计算结果也必须是相同的数据类型,无意间我注意到帮助文件说明里有这么一句话“指令结果超出输出 OUT 指定的数据类型的允许范围”就因为这句话马上想到和的结果是不是可以改为字或双字,于是我就MW**和MD**结果没报错,编译后下载进去结果怎么样大家应该有答案了,对了指令不执行。让我很不理解的是编译正常结果不执行也不报错(以前用日系的这样应该报错的)。
如果这样不行是不是意味着我就必须来回的转换了(如果是真的话那也太麻烦了,这才是一条就53个字节在加几条的话估计要疯了)。
望各位高手帮帮忙看看有没有别的办法?谢谢!
伊默
至圣

经验值:19233
发帖数:4257
精华帖:118
2楼    2014-07-31 17:12:43
精华帖  主题:回复: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
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。