| 作者 | 主题 |
|---|---|
|
yanxiao 至圣
经验值:28603 发帖数:12143 精华帖:46 |
楼主
主题:S7300的 L 指令请教:
L指令装一个立即数(常数)到 ACCU1
L 1 如何表达我这个装入的数是Byte? Word? DWord? S7300还未入门,请高手指教! |
|
万泉河 至圣 经验值:29190 发帖数:10900 精华帖:131 |
楼
主题:回复:S7300的 L 指令请教:
在装入的时候,如果被装入的数太短,达不到4BYTE(大多情况这样),则在装入的时候,会自动填0
而在取出的时候,如果目标是4BYTE,则全盘复制,如果短了,就只复制需要的长度,另外的就被抛弃了,其实被抛弃的部分一般是0的,编程时候需要知道的。 比如L L#16#01020304,这是一个32位的DWORD 然后T MW0, 长出的部分被丢掉,最终MW0的内容为16#0304 除非有意这样做,否则做之前是要保证数据没有溢出的。否则计算就乱套了。 反过来,L 16#FFFE (INT -2) T MD0 则MD0的值为 L#16#0000FFFE (DINT 65534) 数据虽然没有溢出,但数据格式不能继承了。 这种时候,分别需要DTI 和ITD命令进行转换。 至于200里面的MOVB,MOVW,MOVD等的命令,我想,在300里面它是自动的,根据目标数的尺寸,自动实现不同的MOVE功能,与200对应。
微信公众号:PLC标准化编程,ZHO6371995
|