大家好!
搞西门子的通讯也有一段时间了,但是还是有很多东西没有搞明白。。
我们有一个系统是这样的,有一台CPU317F与IM151-8F进行PN智能设备通讯,通讯读写数据区是
PIB 500 -740 一共240byte PQB 500 -740 一共240byte 组态图片如下:
这个智能设备之间的通讯倒是没有什么问题。

然后这个IM151-8F要通过DP总线连接的DP/DP耦合器把上面在CPU317F的数据写入第三方的DCS系统,我的疑问出现在这里。
下面先看看1M151-8F的硬件组态:
输入区域 I 从256开始到319一共64个byte,我的理解是第三方的DCS向IN151-8F发送过来的数据,长度=64byte
输出区域 Q 从256开始到383一共128个byte,我的理解是IM151-8F给第三方的DCS发送了长度=128byte
根据组态这样理解应该是没有问题??

这个151-8F里面的程序比较简单,只有一个FC1编写了程序OB1进行了调用,但是就是简简单单的两段程序搞的我云里雾里的,
1,这个程序全部在这里了,就是简简单单的通过SFC20把数据接收到的数据发送出去。
但是我的疑问就在这里,程序段1里面调用了4个SFC20,从上面往下数的第4个SFC20 大家看出问题没有?
P#I380.0 BYTE 60 这个地址是不是已经超出组态的范围?奇怪的是没有报错。也运行了2年了,请大家帮忙看看这样有没有问题?或者这样只是不会把超出的数据发送,但是不会报错?
同样程序段2里面调用了4个SFC20,从上面往下数的第4个SFC20 大家看出问题没有?
P#Q380.0 BYTE 60 这个地址是不是已经超出组态的范围?奇怪的是没有报错。也运行了2年了,请大家帮忙看看这样有没有问题?或者这样只是不会把超出的数据发送,但是不会报错?
程序段1

程序段2

补充一下:我的理解范围认为第一个SFC20从200开始读写也是有问题的,因为硬件组态地址都是从256开始的。。的确不理解为什么会这样去使用?