S地址映射
- 格式:doc
- 大小:56.50 KB
- 文档页数:6
内存寻址的三种模型1. 地址的种类首先明确一下逻辑地址和线性地址这两个概念:1. 逻辑地址2. 线性地址3. 物理地址1.1 逻辑地址:逻辑地址是编译器生成的,我们使用在linux环境下,使用C语言指针时,指针的值就是逻辑地址。
对于每个进程而言,他们都有一样的进程地址空间,类似的逻辑地址,甚至很可能相同。
1.2 线性地址:线性地址是由分段机制将逻辑地址转化而来的,如果没有分段机制作用,那么程序的逻辑地址就是线性地址了。
1.3 物理地址物理地址是CPU在地址总线上发出的电平信号,要得到物理地址,必须要将逻辑地址经过分段,分页等机制转化而来。
2. 三种寻址模型x86体系结构下,使用的较多的内存寻址模型主要有三种:1. 实模式扁平模型real mode flat model2. 实模式分段模型real mode segment model3. 保护模式扁平模型protected mode flat model下面是对这三种模型的描述实模式和保护模式相对,实模式运行于20位地址总线,保护模式则启用了32位地址总线,地址使用的是虚拟地址,引入了描述符表;虽然二者都引入了段这样一个概念,但是实模式的段是64KB固定大小,只有16KB个不同的段,CS,DS等存储的是段的序号(想想为什么?)。
保护模式则引入了GDT和LDT段描述符表的数据结构来定义每个段。
扁平模型和分段模型相对,区别在于程序的线性地址是共享一个地址空间还是需要分成多个段,即为多个程序同时运行在同一个CS,DS的范围内还是每个程序都拥有自己的CS,DS:前者(flat)指令的逻辑地址要形成线性地址,不需要切换CS,DS;后者的逻辑地址,必须要经过段选择子去查找段描述符,切换CS,DS,才能形成线性地址。
3. 实模式扁平模型该模式只有在386及更高的处理器中才能出现!80386的实模式,就是指CPU可用的地址线只有20位,能寻址0~1MB的地址空间。
首先配置路由器的接口的ip地址,参考命令如下:[R1]interfacee0[R1-Ethernet0]ip add 192.168.2.1 24[R1]interfacee1[R1-Ethernet1]ip add192.192.169.10 24 //这里假设出口ip是192.192.169.10然后配置地址转换,参考命令如下:[R1]acl number 2000 //在vrp为3.4的路由器上,2000-2999表示basic acl [R1-acl-basic-2000]rule permit source 192.168.2.0 0.0.0.255(地址掩码的反码)[R1-acl-basic-2000]rule deny source any#这个访问控制列表定义了IP源地址为192.168.2.0/24的外出数据包[R1] interface e 1[R1-Ethernet1]nat server protocol tcp global 192.192.169.10(E1的ip) inside 192.168.2.1(内网网关E0的ip)[R1-Ethernet1] nat outbound 2000(acl的编号)[R1]ip route-static 0.0.0.0 0.0.0.0 192.192.169.10#上面设置了路由器的E0和E1端口IP地址,并在路由表中添加缺省路由。
配置实例:[Quidway]dis cur#sysname Quidway#super password level 3 cipher1^S=\(G5!WGQ=^Q`MAF4<1!!#nat address-group 1 10.63.128.4110.63.128.45#radius scheme system#domain system#local-user adminpassword cipher .]@USE=B,53Q=^Q`MAF4<1!!service-type telnet terminallevel 3service-type ftplocal-user datapartpassword cipher 1^S=\(G5!WGQ=^Q`MAF4<1!!service-type telnetlevel 3local-user sjbpassword cipher 1^S=\(G5!WGQ=^Q`MAF4<1!!service-type telnetlevel 3#acl number 2000rule 0 permit source 10.65.160.0 0.0.0.255rule 1 permit source 10.65.170.0 0.0.0.255rule 2 permit source 10.65.162.0 0.0.0.255rule 3 deny#interface Aux0async mode flow#interface Ethernet0/0ip address dhcp-alloc#interface Ethernet0/1ip address dhcp-alloc#interface Ethernet3/0ip address 10.63.128.55 255.255.255.0nat outbound 2000nat server protocol tcp global 10.63.128.55 anyinside 10.65.156.100 any #interface Ethernet3/1ip address 10.65.156.27 255.255.128.0#interfaceNULL0#FTP server enable#ip route-static 0.0.0.0 0.0.0.0 10.65.155.0preference 60ip route-static 10.0.0.0 255.0.0.0 10.63.128.251preference 60ip route-static 10.65.155.18 255.255.255.25510.65.155.0 preference 60 #user-interface con 0user-interface aux 0user-interface vty 0 4authentication-mode scheme#return。
主存和cache的地址映射cache是⼀种⾼速缓冲寄存器,是为解决CPU和主存之间速度不匹配⽽采⽤的⼀项重要技术。
主存与cache的地址映射⽅式有全相联⽅式、直接⽅式和组相联⽅式三种。
直接映射(directmapping):将⼀个主存块存储到唯⼀的⼀个Cache⾏。
全相联映射(fullyassociative mapping):可以将⼀个主存块存储到任意⼀个Cache⾏。
组相联映射(setassociative mapping):可以将⼀个主存块存储到唯⼀的⼀个Cache组中任意⼀个⾏。
1.直接映射多对⼀的映射关系,但⼀个主存块只能拷贝到cache的⼀个特定⾏位置上去。
cache的⾏号i和主存的块号j有如下函数关系:i=j mod m (m为cache中的总⾏数)优点:硬件简单,容易实现缺点:命中率低, Cache的存储空间利⽤率低直接映射的cache检索过程在直接映射⽅式中,⾸先⽤r位⾏号找到cache中的对应⾏,然后⽤地址中的s-r位标记部分与此⾏的标记在⽐较器中做⽐较。
若符合命中,在cache中找到了对应的块,然后⽤地址中最低位w读取所需的字。
若未命中,按内存地址从主存中读取这个字。
2.全相联映射主存的⼀个块直接拷贝到cache中的任意⼀⾏上优点:命中率较⾼,Cache的存储空间利⽤率⾼缺点:线路复杂,成本⾼,速度低全相联映射⽅式检索过程在全相联映射⽅式中,将内存地址的s位块号与cache中所有⾏的标记同时在⽐较器中做⽐较。
若块号命中,按w位字地址从cache中读取⼀个字;若未命中,则按内存地址从主存中读取这个字。
3.组相联映射将cache分成u组,每组v⾏,主存块存放到哪个组是固定的,⾄于存到该组哪⼀⾏是灵活的,即有如下函数关系:cache总⾏数m=u×v 组号q=j mod u组间采⽤直接映射,组内为全相联硬件较简单,速度较快,命中率较⾼组相联cache的检索过程在组相联映射⽅式中,⾸先⽤给定s位块号的低d位找到cache的相应组,然后将块号的⾼s-d位与该组v(=2d)⾏中的所有标记同时⽐较,哪⼀⾏的标记相符即该⾏命中。
s平面与z平面映射关系在这个世界上,平面真是个有趣的概念,尤其是s平面和z平面这对儿好兄弟。
说到这俩,可能很多人一头雾水,咋还分出个平面来呢?其实它们可都是在工程、信号处理和控制理论中搞事情的。
想象一下,s平面就像是一位老练的音乐家,指挥着各种信号的变化,而z平面则是那位擅长编曲的作曲家,把这些变化变得更加丰富多彩。
真是有意思吧?这两者的关系就像是水和冰,都是同一种东西,但表现出来的样子完全不同。
s平面是连续时间信号的舞台,哦,想象一下,那是一个流动的河流,信号在里面自由地游来游去。
它的坐标轴上有实部和虚部,实部就像是一个温和的阳光,照亮了信号的每一个细节,而虚部则是那神秘的夜空,给信号增添了一丝梦幻的色彩。
看,s平面的信号可以用拉普拉斯变换来分析,这就像是用望远镜观察星空,能发现很多平时看不到的美景。
然后,咱们说说z平面,嘿,它可是个离散信号的舞台,仿佛是一个跳动的音符,节奏分明。
z平面通过z变换将s平面的那些信号搬到了一个全新的世界。
在这里,信号不再是流动的河水,而是欢快的小鸟,叽叽喳喳,活力四射。
咱们的z平面同样有实部和虚部,不过这次它是用来表示时间的离散点。
想象一下,每个点都是一个小派对,信号在这里尽情舞动,让人忍不住跟着节拍摇摆。
嘿,二者之间的关系可不简单。
你看,s平面的那些信号要想在z平面里发光发热,就得经过一个“变身”过程。
这就像是小蝌蚪变成小青蛙,变化的过程真是让人惊奇。
通过某种变换,比如双线性变换,s平面的信号就能摇身一变,成为z平面的明星。
这样的转换不仅有趣,还能保留信号的特性,就像一个人不管在哪个舞台上都能把自己的风格发挥得淋漓尽致。
很多人可能会想,这俩平面到底有啥用呢?嘿,别小看它们,s平面和z平面可是现代技术的基础。
在自动控制系统里,控制器的设计往往需要在这两者之间切换。
就像在打游戏一样,有时候你需要迅速反应,有时候又要谋划全局。
平面间的转换就好比是在不同的关卡之间切换,得根据需要来调整策略。
第一章2.0S的作用可表现在哪几个方面?(1) OS作为用户与计算机硬件系统之间的接口(2) OS作为计算机系统资源的管理者(3)OS实现了对计算机资源的抽象11. OS有哪几大特征?其最基本的特征是什么?答:并发性、共享性、虚拟性和异步性四个基本特征;最基本的特征是并发性。
20.试描述什么是微内核0S。
答: 1)足够小的内核2)基于客户/服务器模式3)应用机制与策略分离原理4)采用面向对象技术。
第二章2.画出下面四条语句的前趋图:S1=a:=x+y; S2=b:=z+1; S3=c:=a- b; S4=w:=c+1;答:其前趋图为:6.试从动态性,并发性和独立性上比较进程和程序?答: (1) 动态性是进程最基本的特性,表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,由撤销而消亡。
进程有一定的生命期,而程序只是一组有序的指令集合,是静态实体。
(2)并发性是进程的重要特征,同时也是OS的重要特征。
引入进程的目的正是为了使其程序能和其它进程的程序并发执行,而程序是不能并发执行的。
(3)独立性是指进程实体是一个能独立运行的基本单位,也是系统中独立获得资源和独立调度的基本单位。
对于未建立任何进程的程序,不能作为独立单位参加运行。
7.试说明PCB的作用,为什么说PCB是进程存在的惟一标志?答: PCB 是进程实体的一-部分,是操作系统中最重要的记录型数据结构。
作用是使一个在多道程序环境下不能独立运行的程序,成为-一个能独立运行的基本单位,成为能与其它进程并发执行的进程。
OS是根据PCB对并发执行的进程进行控制和管理的。
11.试说明进程在三个基本状态之间转换的典型原因。
答: (1) 就绪状态→执行状态:进程分配到CPU资源(2)执行状态→就绪状态:时间片用完(3)执行状态→阻塞状态: I/0 请求(4)阻塞状态→就绪状态: I/0完成21.试从调度性,并收性,拥有资源及系统开销方面对进程和线程进行比较。
1.操作系统:操作系统(OS,Operating system): 操作系统是计算机系统中的一个系统软件;是这样一些程序模块的集合:它们管理和控制计算机系统中的硬件及软件资源,合理的组织计算机工作流程,以便有效地利用这些资源为用户提供一个功能强大,使用方便和可扩展的工作环境,从而在计算机与其用户之间起到接口的作用。
2. 分时系统:是指多个用户分享使用同一台计算机,即是把计算机的系统资源(主要是cpu)在时间上加以分割,形成一个个的时间段,每个时间段称为一个“时间片”,每个用户依次使用一个时间片,从而可以将cpu工作时间轮流地提供给多个用户使用。
3. 多道程序设计:是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行。
两个或两个以上程序在计算机系统中同处于开始个结束之间的状态。
这就称为多道程序技术运行的特征:多道、宏观上并行、微观上串行4. 系统调用:系统调用(System call): 它是操作系统提供给软件开发人员的唯一接口,开发人员可利用它使用系统功能。
5. 进程:是可并发执行的程序。
在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位,也是称活动、路径或任务,它有两方面性质:活动性、并发性。
进程可以划分为运行、阻塞、就绪三种状态,并随一定条件而相互转化:就绪--运行,运行--阻塞,阻塞--就绪。
6. 线程:是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。
由于线程之间的相互制约,致使线程在运行中呈现出间断性。
线程也有就绪、阻塞和运行三种基本状态。
7. 原语:是由若干多机器指令构成的完成某种特定功能的一段程序,具有不可分割性.即原语的执行必须是连续的,在执行过程中不允许被中断8. 进程控制块(PCB):系统为了管理进程设置的一个专门的数据结构,用它来记录进程的外部特征,描述进程的运动变化过程。
S7-200 通过以下方式支持Modbus 通信协议:。
S7-200 CPU 上的通信口0(Port 0)通过指令库支持Modbus RTU 从站模式。
S7-200 CPU 上的通讯口0 和1 (Port 0 和Port 1)通过指令库支持Modbus RTU 主站模式。
S7-200 CPU 通过EM241 模块的Modem 接口支持Modbus RTU 模式通过S7-200 CPU 通信口的自由口模式实现Modbus 通信协议,可以通过无线数据电台等慢速通信设备传输。
这为组成S7-200 之间的简单无线通信网络提供了便利。
详细情况请参考《S7-200系统手册》(2002 年10 月或以后版本)的相应章节。
Modbus 是公开通信协议,其最简单的串行通信部分仅规定了在串行线路的基本数据传输格式,在OSI 七层协议模型中只到1,2 层。
Modbus 具有两种串行传输模式,ASCII 和RTU。
它们定义了数据如何打包、解码的不同方式。
支持Modbus 协议的设备一般都支持RTU 格式。
通信双方必须同时支持上述模式中的一种。
Modbus 是一种单主站的主/从通信模式。
Modbus 网络上只能有一个主站存在,主站在Modbus 网络上没有地址,从站的地址范围为0 - 247,其中0 为广播地址,从站的实际地址范围为1 - 247。
Modbus 通信标准协议可以通过各种传输方式传播,如RS232C、RS485、光纤、无线电等。
在S7-200 CPU 通信口上实现的是RS485 半双工通信,使用的是S7-200 的自由口能。
详细的协议和规范,请访问Modbus 组织的网站:西门子在Micro/WIN V4.0 SP5 中正式推出Modbus RTU 主站协议库(西门子标准库指令)。
注意:1. Modbus RTU 主站指令库的功能是通过在用户程序中调用预先编好的程序功能块实现的,该库对Port 0 和Port 1 有效。
该指令库将设置通信口工作在自由口模式下。
2. Modbus RTU 主站指令库使用了一些用户中断功能,编其他程序时不能在用户程序中禁止中断。
3. Modbus RTU 主站库对CPU的版本有要求。
CPU 的版本必须为2.00 或者2.01(即订货号为6ES721*-***23-0BA*),1.22版本之前(包括1.22版本)的S7-200 CPU 不支持。
使用Modbus RTU 主站指令库,可以读写Modbus RTU 从站的数字量、模拟量I/O 以及保持寄存器。
要使用Modbus RTU 主站指令库,须遵循下列步骤:1.安装西门子标准指令库2.按照要求编写用户程序调用Modubs RTU 主站指令库Modbus RTU 主站功能编程使用SM0.0 调用MBUS_CTRL 完成主站的初始化,并启动其功能控制:各参数意义如下:a. EN 使能:必须保证每一扫描周期都被使能(使用SM0.0)b. Mode 模式:为1 时,使能Modbus 协议功能;为0 时恢复为系统PPI 协议c. Baud 波特率:支持的通讯波特率为1200,2400,4800,9600,19200,38400,57600,115200。
d. Parity 校验:校验方式选择0=无校验1=奇较验2=偶较验e. Timeout 超时:主站等待从站响应的时间,以毫秒为单位,典型的设置值为1000 毫秒(1 秒),允许设置的范围为1 - 32767。
注意:这个值必须设置足够大以保证从站有时间响应。
f. Done 完成位:初始化完成,此位会自动置1。
可以用该位启动MBUS_MSG 读写操作(见例程)g. Error 初始化错误代码(只有在Done 位为1时有效):0=无错误1=校验选择非法2=波特率选择非法3=模式选择非法2. 调用Modbus RTU 主站读写子程序MBUS_MSG,发送一个Modbus 请求;各参数意义如下: a. EN 使能:同一时刻只能有一个读写功能(即MBUS_MSG)使能注意:建议每一个读写功能(即MBUS_MSG)都用上一个MBUS_MSG 指令的Done 完成位来激活,以保证所有读写指令循环进行(见例程)。
b. First 读写请求位:每一个新的读写请求必须使用脉冲触发c. Slave 从站地址:可选择的范围1 - 247 d. RW 从站地址:0 =读,1 =写注意:1. 开关量输出和保持寄存器支持读和写功能2. 开关量输入和模拟量输入只支持读功能e. Addr 读写从站的选择读写的数据类型数据地址:00001 至0xxxx - 开关量输出10001 至1xxxx - 开关量输入30001 至3xxxx - 模拟量输入40001 至4xxxx - 保持寄存器f. Count 数据个数通讯的数据个数(位或字的个数)注意:Modbus主站可读/写的最大数据量为120个字(是指每一个MBUS_MSG 指令)g. DataPtr 数据指针:1. 如果是读指令,读回的数据放到这个数据区中2. 如果是写指令,要写出的数据放到这个数据区中h. Done 完成位读写功能完成位i. Error 错误代码:只有在Done 位为1时,错误代码才有效0 =无错误1 =响应校验错误2 =未用3 =接收超时(从站无响应)4 =请求参数错误(slave address, Modbus address, count, RW)5 =Modbus/自由口未使能6 =Modbus正在忙于其它请求7 =响应错误(响应不是请求的操作)8 =响应CRC校验和错误- 101 =从站不支持请求的功能102 =从站不支持数据地址103 =从站不支持此种数据类型104 =从站设备故障105 =从站接受了信息,但是响应被延迟106 =从站忙,拒绝了该信息107 =从站拒绝了信息108 =从站存储器奇偶错误常见的错误:如果多个MBUS_MSG 指令同时使能会造成 6 号错误从站delay 参数设的时间过长会造成主站3 号错误从站掉电或不运行,网络故障都会造成主站3 号错误3. 在CPU 的V 数据区中为库指令分配存储区(Library Memory)Modbus Master 指令库需要一个284个字节的全局V 存储区。
参考:分配库指令数据区关于Modbus RTU 主站协议库的补充说明:此为西门子正式推出的标准库指令说明资料。
在Modbus RTU Master 协议和PPI 协议之间切换:Modbus RTU Master 协议指令库使通信口工作在自由口模式下,此时不能与Micro/WIN 软件通信。
要在切换回PPI 协议,可以:。
将MBUS_CTRL 指令的Mode 输入端设置为逻辑“0”。
将CPU 的允许模式选择开关置为STOP 位置Modbus RTU Master 协议库的执行时间:Modbus RTU Master 协议库的MBUS_CTRL 指令不需要很长的执行时间。
MBUS_需要1.11 ms 用于初始化,在后续的每个扫描周期中只占用0.41 ms。
调用MBUS_MSG 子程序会加长处理时间。
大部分时间都用于CRC 校验的计算。
每读、写一个字的数据就需要1.85 ms 扫描时间。
数据最多的情况下(读、写120 字的数据),扫描时间大概会扩增加222 ms。
读操作的时间主要消耗在接收数据上;写操作的时间主要消耗在发送数据上。
Modbus 地址通常Modbus 地址由 5 位数字组成,包括起始的数据类型代号,以及后面的偏移地址。
Modbus Master 协议库把标准的Modbus 地址映射为所谓Modbus 功能号,读写从站的数据。
Modbus Master 协议库支持如下地址:。
00001 - 09999:数字量输出(线圈)。
10001 - 19999:数字量输入(触点)。
30001 - 39999:输入数据寄存器(通常为模拟量输入)。
40001 - 49999:数据保持寄存器Modbus Master 协议库支持的功能为了支持上述Modbus 地址的读写,Modbus Master 协议库需要从站支持下列功能:表1. 需要从站支持的功能Modbus 地址读/写Modbus 从站须支持的功能00001 - 09999 数字量输出读功能1 写功能5:写单输出点功能15:写多输出点10001 - 19999 数字量输入读功能2 写-30001 - 39999 输入寄存器读功能4 写-40001 - 49999 保持寄存器读功能3 写功能6:写单寄存器单元功能16:写多寄存器单元Modbus 地址和S7-200 存储区地址的映射S7-200 通过Modbus Master 和Slave 协议库通信时,Modbus 地址和S7-200 内存储区地址的映射关系都类似。
Modbus 保持寄存器地址映射举例:Modbus 保持寄存器地址40001 12 34 40002 56 78 40003 9A BC 对应:S7-200 存储区字寻址VW200 12 34 VW202 56 78 VW204 9A BC 对应:S7-200 存储区字节寻址VB200 12 VB201 34 VB202 56 VB203 78 VB204 9A VB205 BC Modbus 数字量地址映射举例:位地址(0xxxx 和1xxxx)数据总是以字节为单位打包读写。
第一个字节中的最低有效位对应Modbus 地址的起始地址。
如下图所示vx7 vx6 vx5 vx4 vx3 vx2 vx1 vx0 10008 10007 10006 10005 10004 10003 10002 10001评论:在网上到处收罗了有关MODBUS地址映射S7-200地址的资料,一直比较疑惑。
今天有点明白出是怎么回事了。
我现在的理解是:通用的MODBUS协议并不关心具体的设备(比如是西门子的plc,或是AVR的单片机,或是别的设备),关键是要求设备遵守开始地址和数据长度的约定。
拿几个具体例子来说:MODBUS的000001地址-》设备知道是指Q0.1,并对该数据进行操作;010001-》I0.0;030001 -》AIW0;04xxxx-》VW2*(xxxx-1)Modbus 保持寄存器地址S7-200 存储区字寻址S7-200 存储区字节寻址Modbus 数字量地址映射举例:位地址(0xxxx 和1xxxx)数据总是以字节为单位打包读写。
第一个字节中的最低有效位对应Modbus 地址的起始地址。
如下图所示:图4. 数字量地址映射举例常问问题Modbus RTU 主站库对CPU 的版本是否有要求,为什么编译例子程序时,会遇到 4 个错误?Modbus RTU 主站库对CPU 的版本确实有要求,CPU 的版本必须为2.00 或者2.01(即订货号为6ES721*-***23-0BA*),1.22 版本之前(包括 1.22 版本)的S7-200 CPU 不支持。