技术论坛

 回复:S7-300模拟量默认地址为啥是从256开始?

返回主题列表
作者 主题
GSZN
侠圣

经验值:3288
发帖数:468
精华帖:3
楼主    2011-05-27 12:23:38
主题:S7-300模拟量默认地址为啥是从256开始?
S7-300模拟量默认地址为啥是从256开始?
lyq0536@163.com
Automann
至圣

经验值:18299
发帖数:6168
精华帖:137
7楼    2011-05-28 13:36:31
精华帖  主题:回复:S7-300模拟量默认地址为啥是从256开始?
quote:以下是引用n次看你的背影在2011-05-27 16:26:26的发言:
我个人认为:300、400PLC的CPU就是一个单片机,只不过西门子对PLC的CPU开发了专门的操作系统,并且固化在CPU内部了。

PLC与单片机有本质的区别,单片机是一种“裸机”,所有的程序需要用户编写。PLC的程序分为操作系统和用户程序,两种程序同时运行。PLC的编程语言实际上是高级语言。
追求完美
Automann
至圣

经验值:18299
发帖数:6168
精华帖:137
13楼    2011-05-29 07:19:43
精华帖  主题:回复:S7-300模拟量默认地址为啥是从256开始?
楼上网友,“汇编语言是针对8位或者16位机器而言的吧。如果汇编语言针对32位、64位的CPU编程,也不需要你说的那么多条指令吧!”是否是高级语言,与所用CPU芯片的位数无关。以定时器、计数器指令为例,不管CPU芯片多少位,其功能都不是几条汇编语言指令可以实现的。只有汇编语言是最底层的语言,其他的语言都是高级语言,不管加不加引号。高级语言(例如C语言)有很多指令的功能与汇编语言的相同,这并不影响它是高级语言。我说STL保留了一些汇编语言的痕迹,是说它保留了累加器、状态字、地址寄存器这些早期CPU芯片的东西。这是一个特例,其他PLC的指令表没有这些东西了。
“QB0、PQB0地址是同一个地址,并不是地址重叠!”我说的“重叠”是两个地址区的地址编号有重叠,都是从0号字节开始。
说QB0、PQB0是同一个地址,这在概念上就大错特错了,QB0是CPU内部存储区的过程映像输入字节,“映像”是镜中花、水中月。将数据送入QB0,并不是送到输出模块,数据还是在CPU内部。PQB0用来直接访问硬件输出模块。将数据送PQB0,数据被直接送到输出模块。QB0、PQB0绝对不是同一个地址!!!
“ L 88
T QB 0

L 99
T PQB 0
同时观察QB0和PQB0面的值,结果发现,QB0、PQB0里面的值是都是99,这就能证明QB0、PQB0地址是同一个地址!”
QB0、PQB0里面的值是都是99并不能能证明QB0、PQB0地址是同一个地址!这是因为后两条指令通过PQB0将数据送输出模块(立即输出)的同时,数据同时被送入QB0,而QB0的值要等到下一个扫描周期开始时才被送到输出模块。只不过我等凡胎肉眼,看不出这个时间差而已!
“然后你可以再测试一下:
A PI 0.0
= PQ 0.0
这两条语句连编译都无法通过,说明什么呢?我替你回答:说明 PI0.0、PQ0.0这个地址不存在!也就是说PI/PQ区的地址并不是从0开始编址的。”
这两条语句编译通不过,是因为PI、PQ区不能以位为单位访问。请问可以使用PIB0和PQB0,还不能说明PI/PQ区的地址是从0开始编址的吗?您看过STEP7的帮助中的“符号表中允许的地址和数据类型”吗?
我再举个例子说明PQB0和QB0的区别:因为QB0是存储区中的地址,它是可以读、写的。例如可以使用指令“L QB0”读取QB0的状态。而PQB0直接访问硬件输出模块,PQB0只能改写,不能读取(不能读输出模块的值),因此不能使用指令“L PQB0”,您试试就知道了。类似的道理,PI区只能读取,不能改写,不能使用指令“T PIB0”。
楼上网友,很遗憾,这个夜宵您吃不成了。非诚勿扰我们家里人也喜欢看,看来我们除了分歧还是有共同点的,我很欣赏孟飞的主持风格。




追求完美
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。