全国服务热线 15221406036

西门子6ES7212-1BB23-0XB8参数规格

更新时间:2024-05-08 07:10:00
价格:请来电询价
联系电话:
联系手机: 15221406036
联系人:聂航
让卖家联系我
详细介绍

西门子6ES7212-1BB23-0XB8参数规格

1. 组播

组播技术是ip网络数据传输三种方式之一,在介绍ip组播技术之前,先对ip网络数据传输的单播、组播和广播方式做一个简单的介绍,见图1:

单播(unicast)传输:在发送者和每一接收者之间实现点对点网络连接。如果一台发送者同时给多个的接收者传输相同的数据,也必须相应的复制多份的相同数据包。如果有大量主机希望获得数据包的同一份拷贝时,将导致发送者负担沉重、延迟长、网络拥塞;为保证一定的服务质量需增加硬件和带宽。

组播(multicast)传输:在发送者和每一接收者之间实现点对多点网络连接。如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包。它提高了数据传送效率。减少了骨干网络出现拥塞的可能性。

广播(broadcast)传输:是指在ip子网内广播数据包,所有在子网内部的主机都将收到这些数据包。广播意味着网络向子网每一个主机都投递一份数据包,不论这些主机是否乐于接收该数据包。所以广播的使用范围非常小,只在本地子网内有效,通过路由器和交换机网络设备控制广播传输。

图1

2. 组播ip地址

组播ip地址用于标识一个ip组播组。iana(internet assigned number authority)把d类地址空间分配给ip组播,其范围是从224.0.0.0到239.255.255.255。如下所示(二进制表示),ip组播地址前四位均为1110。

八位组(1) 八位组(2) 八位组(3) 八位组(4)

1110xxxx xxxxxxxx xxxxxxxx xxxxxxxx

组播组可以是的也可以是临时的。组播组地址中,有一部分由官方分配的,称为组播组。组播组保持不变的是它的ip地址,组中的成员构成可以发生变化。组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供组播组使用的ip播地址,可以被临时组播组利用。

224.0.0.0~224.0.0.255为预留的组播地址(组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用; 224.0.1.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。常用的预留组播地址如下:

224.0.0.0 基准地址(保留) 224.0.0.1 所有主机的地址 224.0.0.2 所有组播路由器的地址。

3. 网络二层组播相关协议

不支持组播的交换机,数据在里面是泛洪传播的,数据也是可以进行传送的。解决第二层组播数据洪泛的问题,引入igmp snooping及gmrp等概念。

网络二层组播相关协议包括igmp snooping ,igmp proxy和cgmp协议。

igmp协议运行于主机和与主机直接相连的组播路由器之间,主机通过此协议告诉本地路由器希望加入并接受某个特定组播组的信息,同时路由器通过此协议周期性地查询局域网内某个已知组的成员是否处于活动状态(即该网段是否仍有属于某个组播组的成员),实现所连网络组成员关系的收集与维护。

igmp snooping的实现机理是:交换机通过侦听主机发向路由器的igmp成员报告消息的方式,形成组成员和交换机接口的对应关系;交换机根据该对应关系将收到组播数据包只转给具有组成员的接口。通过上述机制,在组播路由器里建立起一张表,其中包含路由器的各个端口以及在端口所对应的子网上都有哪些组的成员。当路由器接收到某个组g的数据报文后,只向那些有g的成员的端口上转发数据报文。

4. step7中的组态

simatic s7-400系列cp模块之间有哪些区别?

本文中以s7-300 cp343-1模块为例,具体组态步骤如下:

a) 在step7项目插入两个cpu,分别组态两个cp343-1,分配ip地址,分别为192.168.0.10和192.168.0.11。

b) 打开netpro,在两个cpu下分别插入新的连接,连接类型选择“udp connection”链接对象选择“all multicast stations”,如图2。

c) 如图3,在弹出的属性窗口显示出连接“id”和“laddr”参数,之后编程会用到。

d) 在“address”界面下,“local”自定义本地的端口号;“multicast group”定义所要加入的组播组地址和通讯对方的端口号,可用的组播地址从224.0.1.0到239.255.255.255,可用的端口号从1025到65535,如图4、图5。

图2

图3

图4

图5

e) 编译无误后,分别下载到两个cpu。

f) 编程,在程序中调用fc5 “ag_send” 、fc6 “ag_recv”。“id”和“laddr”填写连接中的参数;“send”“len”定义发送的数据区和发送的长度;如图6,定义了发送接收都是20字节。完成后下载到cpu。

图6

g) 使用tcp/udp测试工具添加一个组播成员到组播组,如图7。

图7

h) 测试结果,在ip:192.168.0.10侧触发“ag_send”,则数据会发给所有属于ip组:224.0.1.0 端口号为2002的成员,如图8、图9。

图8

图9

5. 交换机的设置

交换机如果不做任何设置,或者不支持组播,数据也是可以进行传送的,但是是泛洪传播的。为了提高效率,应该在交换机中激活igmp snooping,如图10,本例中使用西门子scalance x312。通过igmp snooping,这样交换机就能够形成端口和组播组成员的对应关系,交换机根据该对应关系将收到的组播数据包只传给属于改组的端口,如图11。图12显示了组播ip地址到二层mac地址的映射关系。

图10

图11

图12

1.引言

cpu寄存器状态字的各位给出了有关指令状态或结果的信息以及所出现的错误,我们可以将二进制逻辑操作状态位信号状态直接集成到程序中,以控制程序执行的流程。

2.状态字寄存器

先简单介绍一下cpu中状态字。

●检查位:状态字的0位称作检查位,如果/fc位的信号状态为“0”,则表示伴随着下一条逻辑指令,程序中将开始一个新的逻辑串。fc前面的斜杠表示对fc取反。

●逻辑运算结果:状态字的第1位为rlo位(rlo=“逻辑运算结果”),在二进制逻辑运算中用作暂时存储位。比如,一串逻辑指令中的某个指令检查触点的信号状态,并根据布尔逻辑运算规则将检查的结果(状态位)与rlo位进行逻辑门运算,然后逻辑运算结果又存在rlo位中。

●状态位:状态位(第2位)用以保存被寻址位的值。状态位总是向扫描指令(a,an,o,…)或写指令(=,s,r,)显示寻址位的状态(对于写指令,保存的寻址位状态是本条写指令执行后的该寻址位的状态)。

●or位:在用指令or执行或逻辑操作之前,执行与逻辑操作的时候,就需要用到or这一状态位。or位表示先前执行的与逻辑操作产生的值为“1”,于是,逻辑操作或的执行结果就已被确定为“1”。

●ov位:溢出表示算术或比较指令执行时出现了错误。根据所执行的算术或逻辑指令结果对该位进行设置。

●os位:溢出存储位是与ov位一起被置位的,而且在更新算术指令之后,它能够保持这种状态,也就是说,它的状态不会由于下一个算术指令的结果而改变。这样,即使是在程序的后面部分,也还有机会判断数字区域是否溢出或者指令是否含有无效实数。os位只有通过如下这些命令进行复位:jos(若os=1,则跳转)命令,块调用和块结束命令。

●cc1及cc0位:cc1和cc0(条件代码)位给出有关下列结果的相关信息:

·算术指令结果

·比较指令结果

·字逻辑指令

·在移位功能中,移出位相关信息。

可以用以下指令来检查条件代码cc1和cc0。

cc1cc0检查完成后,如果:

00a==0结果=0

10a>;0结果>;0

01a<0结果<0

●br位:状态字的第8位称为二进制结果位。它将字处理程序与位处理联系起来,在一段既有位操

作又有字操作的程序中,用于表示字逻辑是否正确。将br位加入程序后,无论字操作结果如何,都不会造成二进制逻辑链中断。在梯形图的方块指令中,br位与eno位有对应关系,用于表明方块指令是否被正确执行:如果执行出现了错误,br位为0,eno位也为0;如果功能被正确执行,br位为1,

eno位也为1。在用户编写的fb/fc程序中,应该对br位进行管理,功能块正确执行后,使br位为1,否则使其为0。使用save指令将rlo存入br中,从而达到管理br位目的。

状态字的9-15位未使用。

3.具体使用

下面我们结合step7中的指针编程来具体介绍条件码cc0/cc0的用法。

不同的指令在cpu中执行时间是不同的。浮点数比定点数执行时间要长;字逻辑指令比位逻辑指令执行时间要长;在某些程序中适当使用状态字来进行编程可以减少cpu程序的执行时间。

例1:比如说要比较一个db中块的dbbo-dbb99这100个字节是正数是负数还是0,正数用1来表示;负数用-1来表示;0用0来表示。并且将对应结果存入mb200开始的100个字节中。我们通常的做法可能为:

如果利用条件码来进行编程,既可以减少程序的大小还会减少一定的指令执行时间,我们只需要将

中间的比较程序加以优化,即可以达到目的。

例2:根据状态位c0和cc1的状态而跳转的跳转功能指令jz不改变任何状态位的状态,而且逻辑操作结果rlo值也会“随着”该跳转功能带到跳转程序段中,供用户程序其它逻辑操作之用(不改变/fc状态)。

示例两个整数相减并需进行连续判断:

lmw2

lmw8

-i

jzzero//如果结果等于“0”,则跳转至标号zero处

//结果不等于“0”时所执行的指令

zero://结果等于“0”时,所要执行的指令

如果用户不熟悉jz指令和状态位c0和cc1的具体含义,编程时就需要通过比较指令将比较结果存入一个二进制位中,再根据这个二进制位通过jc/jcn指令来控制程序的执行了。

例3:我们实际应用中可能要利用某些协议转换网关(比如说hilscher公司的nttap系列网关)来和某些串口协议的仪表进行通信时,会遇到crc校验的问题,关于crc校验时需要判断溢出位是否为1的问题来进行程序的进一步计算。我们以euro2408的modbus通信时需要的crc校验为例说明crc校验的步骤:

1、装载16#ffff到一个16位crc寄存器;

2、将crc寄存器的高8位字节与信息中的个8位字节相异或,结果返回到crc寄存器中;

3、将crc寄存器数据向右移动一位;

4、如果溢出的位等于1,则将crc寄存器与16#a001相异或,结果返回到crc寄存器中;

4、如果溢出的位等于0,则重复第3步;

5、重复第3、4步骤,直到已经移位了8次;

6、将crc寄存器的高8位字节与信息中的下一个8位字节相异或,结果返回到crc寄存器中;

7、重复第3步到第6步,直到信息中所有字节都与crc寄存器相异或,并都移位了8次;

8、后的crc寄存器中的结果即为crc校验码,后被添加到信息(数据)的末尾(交换!低8位

在前,高8位在后;)

在第4步中需要判断溢出的位是否为1,如何判断对于整个程序有着重要的影响。我们可以用a>;0指令来判断这个条件,具体代码的编写,有兴趣时大家可以根据上面的步骤编写一个自己的crc程序。

4.结束语

在一般情况下,我们不必考虑这些状态位,但在某些情况下,利用这些状态位并结合一定的指令,可以给我们的编程带来更大的灵活性,同时对于进一步提高自己的编程水平也有一定的作用。


没有

联系方式

  • 地址:上海松江 上海市松江区石湖荡镇塔汇路755弄29号1幢一层A区213室
  • 邮编:201600
  • 联系电话:未提供
  • 经理:聂航
  • 手机:15221406036
  • 微信:15221406036
  • QQ:3064686604
  • Email:3064686604@qq.com