| 作者 | 主题 |
|---|---|
|
ZXC2011 侠圣
经验值:3891 发帖数:627 精华帖:11 |
楼主
主题:SCL := 和Move指令还有区别? 通讯从仪表读取上来多个浮点数,MB_Master是用一串DWORD字符串去装载的. 然后转换成浮点的时候,先使用数据(REAL):=数组[0](Dword),结果是错的,看上去就是字节序号是乱的,然而使用MOVE去替换的话,又是对的. 疑惑,这两者表述还有区别?针对这个情况,Move会交换高低字? 补充模拟结果 |
|
xiatianyun 奇侠 经验值:5423 发帖数:850 精华帖:10 |
9楼
主题:回复:SCL := 和Move指令还有区别?我猜想楼主关闭了IEC检查,如果打开,你连Move都通不过。 SCL的赋值运算符确实和LAD的Move有区别,MOVE更倾向于底层位串的复制,而 := 和算术复制相当,需要考虑数据类型,如果类型不一致,除了隐式转换的情况外需要手工转换数据类型,匹配了才能:=。 := 是值赋值,位串表示的Dword的数值显然不等于需要的Real值,如果强行:=,则只会把整数简单转换为浮点数,就像21转换为21.0一样。 如果打开IEC检查,MOVE也和:=一样需要类型匹配才能Move。 我一般都打开IEC检查,遇到类似问题反而麻烦,不能像200Smart一样简单Move就把通讯传过来的DWord复制给一个Real。 |