3.3. 单边访问
可以通过SFB/FB 14 "GET",从远程CPU 中读取数据。
S7-300:在REQ 的上升沿处读取数据。在REQ的每个上升沿处传送参数ID、ADDR_1和RD_1。在每个作业结束之后,可以分配新数值给ID、ADDR_1 和RD_1参数。
S7-400:在控制输入REQ的上升沿处启动SFB。在此过程中,将要读取的区域的相关指针(ADDR_i)发送到伙伴CPU。远程伙伴返回此数据。在下一个SFB/FB调用处,已接收的数据被复制到组态的接收区(RD_i)中。必须要参数ADDR_i和RD_i 定义的区域在长度和数据类型方面要相互匹配。
通过状态参数NDR 数值为1 来指示此作业已完成。只有在前一个作业已经完成之后,才能重新激活读作业。远程CPU可以处于RUN 或STOP工作状态。如果正在读取数据时发生访问故障,或如果数据类型检查过程中出错,则出错和警告信息将通过ERROR和STATUS 输出表示。
通过使用SFB/FB 15 "PUT",可以将数据写入到远程CPU。
S7-300:在REQ 的上升沿处发送数据。在REQ的每个上升沿处传送参数ID、ADDR_1和SD_1。在每个作业结束之后,可以给ID、ADDR_1 和SD_1参数分配新数值。
S7-400:在控制输入REQ的上升沿处启动SFB。在此过程中,将指向要写入数据的区域(ADDR_i)的指针和数据(SD_i)发送到伙伴CPU。远程伙伴将所需要的数据保存在随数据一起提供的地址下面,并返回一个执行确认。必须要参数ADDR_i和SD_i 定义的区域在编号、长度和数据类型方面相互匹配。
如果没有产生任何错误,则在下一个SFB/FB 调用时,通过状态参数DONE来指示,其数值为1。只有在Zui后一个作业完成之后,才能再次激活写作业。远程CPU可以处于RUN或STOP模式。如果正在写入数据时发生访问故障,或如果执行检查过程中出错,则出错和警告信息将通过ERROR和STATUS 输出表示。
打开SIMATIC 315PN-1 的OB1,在OB1 中依次调用FB14,FB15 如图13、图14所示:
同样,在SIMATIC 315PN-2 的OB1 中,调用FB14/FB15。将SIMATIC 315PN-2的MB140-MB149 赋值B#16#06,在SIMATIC 315PN-1 中,将FB14的“REQ”置上升沿信号,此时SIMATIC 315PN-1 的MB150-MB159接收到B#16#06。如图15 所示。
4. 常见问题
• 两个S7-300PN CPU 之间建立S7 连接可有哪些通信方式?
答:可以有确认连接、非确认连接、单边通信
• 使用FB8/9 时,数据已发送,程序块没有错误显示,但是没收到任何数据?
答:发送区与接收缓冲区长度不一致。
• 使用FB12/13 时,发送区与接收缓冲区长度是否必须一致?
答:发送区的大小只要不超过接收缓冲区就可以。
• FB12 发送数据时,发送数据的长度由哪个参数决定?
答:发送长度由 LEN 决定。但发送数据的起始地址和Zui大长度由SD_1 决定。
子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。Zui为简单的理解就是两台计算机各自的IP地址与子网掩码进行AND运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。就这么简单。
请看以下示例:
运算演示之一:aa
IP 地址 192.168.0.1
子网掩码 255.255.255.0
转化为二进制进行运算:
IP 地址 11010000.10101000.00000000.00000001
子网掩码 11111111.11111111.11111111.00000000
AND运算
11000000.10101000.00000000.00000000
转化为十进制后为:
192.168.0.0
运算演示之二:
IP 地址 192.168.0.254
子网掩码 255.255.255.0
转化为二进制进行运算:
IP 地址 11010000.10101000.00000000.11111110
子网掩码 11111111.11111111.11111111.00000000
AND运算
11000000.10101000.00000000.00000000
转化为十进制后为:
192.168.0.0
运算演示之三:
IP 地址 192.168.0.4
子网掩码 255.255.255.0
转化为二进制进行运算:
IP 地址 11010000.10101000.00000000.00000100
子网掩码 11111111.11111111.11111111.00000000
AND运算
11000000.10101000.00000000.00000000
转化为十进制后为:
192.168.0.0
通过以上对三组计算机IP地址与子网掩码的AND运算后,我们可以看到它运算结果是一样的。均为192.168.0.0 所以计算机就会把这三台计算机视为是同一子网络,然后进行通讯的。我现在单位使用的代理服务器,内部网络就是这样规划的。
也许你又要问,这样的子网掩码究竟有多少了IP地址可以用呢?你可以这样算。
根据上面我们可以看出,局域网内部的ip地址是我们自己规定的(当然和其他的ip地址是一样的),这个是由子网掩码决定的通过对255.255.255.0的分析。可得出:
前三位IP码由分配下来的数字就只能固定为192.168.0 所以就只剩下了Zui后的一位了,那么显而易见了,ip地址只能有(2的8次方-1),即256-1=255一般末位为0或者是255的都有其特殊的作用。
那么你可能要问了:如果我的子网掩码不是255.255.255.0呢?你也可以这样做啊假设你的子网掩码是255.255.128.0 那么你的局域网内的ip地址的前两位肯定是固定的了(什么,为什么是固定的?你看上边不就明白了吗?)
这样,你就可以按照下边的计算来看看同一个子网内到底能有多少台机器