大家好,本人正在着手学习基于CP340来编写MODBUS通讯程序,看了很多资料,发现在编程的时候对寻址要很熟悉,找了相关资料,有一篇是西门子提供的“S7-300和S7-400寻址”,阅读后发表一下个人的看法,请大家一块学习与讨论。
先来看下这段程序,
这个程序不难,但小弟有一点不同意里面的,就是在
L 320 //320转换指针为P#40.0并装载到MD28中。
T MD 28
我感觉320转换指针应该是P#100.0,320=0011 0010 0000=100.0呀,个人愚见,欢迎大家一起讨论。
第二个问题:
个人疑问:
1、
L MD 4 // 将地址指针加2(每个相邻的字地址相差2)。
L P#2.0
+D
T MD 4
L MW 100 //次数减1,跳回next,如果MW100等于0,跳
LOOP NEXT //出循环操作LOOP指令,LOOP指令固定格式。
问题:如何能体现“次数减1,跳回next,如果MW100等于0”我感觉很奇怪,MD4里字的地址加2后,个人认为程序应该是这样
L MD 4 // 将地址指针加2(每个相邻的字地址相差2)。
L P#2.0
+D
T MD 4
L MW 100 //次数减1,跳回next,如果MW100等于0,跳
<D
JC NEXT
如果大家认为西门子里说的是对的,请给小弟讲明原因,在此拜谢,个人认为我修改后的应该可以体现循环的要求,请大家评下……
2、JCN m2 //的位置((地址值/P#2.0)+1)值存储于MD8中。
L MD 4
L P#2.0
/D
+ L#1
T MD 8
m2: NOP 0
m2是条空指令,这样编的意义是什么,小弟初学,谢谢指教。
大家请看下面一段例程: