FOR i := (dbbyte+(size -1)) TO dbbyte BY -1 DO
remainder := n MOD base;
IF remainder <= 9 THEN
WORD_TO_BLOCK_DB(INDEX).db[i] := CHAR_TO_BYTE( INT_TO_CHAR(remainder + 48) );
ELSE
WORD_TO_BLOCK_DB(INDEX).db[i] := CHAR_TO_BYTE( INT_TO_CHAR( remainder - 10 + 65 ) );
问题补充:
对于以上十进制转换ASC码的语句想了解下 remainder := n MOD base; 是不是n/base的余数,其中base := 10;n := num;
还有就是remainder - 10 +65 是不是为了处理10及以上的数转换为A-Z 如果有对数据处理或算法感兴趣的可以与我联系,希望共同进步~
最佳答案
1、mod就是取模运算符,也就是结果为余数;高级语言里面基本都这种语法(也有采用%)
2、ascii字符本身存储的时候就是ascii码而已
以上问题你都可以采用plcsim进行测试得到验证结果
提问者对于答案的评价:
非常感谢,游泳哥的解答,希望有空可以发个邮件到我邮箱,315502374@qq.com我即将进行一个大型系统的安调,里面包括安全、冗余等;网络涉及PN、DP、ASI,现在正在消化资料~
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc185187.html