根据通信中数据传输速率、数据的吞吐量得大小,我们可以见不同的网络完成打包通信和不打包通信。
这里所谓的不打包通信是指直接利用传送指令实现的数据的读写,这类的通信每次传送的最大字节数比较小(如西门子PLC在不打包通信时最大只能传送4个字节);打包通信是指通过调用系统功能或相关更强大的功能指令实现一次能传送更多数据的传送。(如西门子PLC通过调用SFC14,SFC15来实现数据的打包通信)。
本期擂台:请根据你所了解的通信情况,给出一个打包通信的例子或不打包通信的例子(最好是打包通信),项目和实验的仿真例子都可以!回答的最好最全面者首先拿大奖!
PLC品牌不限。
工控PLC擂台每周一期,本期下周末结贴。奖项设置:一等奖1名:50MP,二等奖5名:10MP,三等奖10名:30积分。
MP介绍:gongkongMP即工控币,是中国工控网的用户积分与回馈系统的一个网络虚拟计价单位,类似于大家熟悉的QB,1个MP=1元人民币。
MP有什么用?兑换服务:以1个MP=1元来置换中国工控网的相关服务。 兑换现金:非积分获得的MP可兑换等值现金(满100MP后、用户可通过用户管理后台申请兑换)。
楼主最近还看过
续楼上
在操作模式页面中,将其设置为DP SLAVE模式,并且选择“Test,commissioning,routing”,是将此端口设置为可以通过PG/PC在这个端口上对CPU进行监控,以便于我们在通讯链路上进行程序监控。下面的地址用默认值即可。
然后选择Configuration页面,创建数据交换映射区。
这里我们创建了2个映射区,图中的红色框选区域在创建时是灰色的,包括上面的图中的Partner部分创建时也是空的,在主站组态完毕并编译后,才会出现图中所示的状态。由于我们这里只是演示程序,所以创建的交换区域较小。
组态从站之后,再组态主站。插入CPU时,不需要创建新的PROFIBUS网络,选择从站建立的第二条(也就是准备用来进行通讯的MPI/DP端口创建的那条)PROFIBUS网络即可。组态好其它硬件,确认CPU的DP口处于主站模式,从窗口右侧的硬件列表中的已组态的站点中选择CPU 31X,拖放到主站的PROFIBUS总线上,
然后进入Configuration页面,可以看到前面在从站中设定的映射区域,逐条进行编辑(Edit…),确认主从站之间的对应关系。主站的输入对应从站的输出,主站的输出对应从站的输入。
至此,硬件的组态完成,将各个站的组态信息下载到各自的CPU中。通过NetPro可以看到整个网络的结构图。
续楼上
2.编写程序。
硬件组态完毕,下载,PLC运行之后,数据并不会自动交换。需要通过程序来执行。在组态中,input和output区域,也并不是实际硬件组态中的硬件地址,也就是说,input和output并不代表I/O模块的地址和数据。但是映射区域组态用到的input和output地址,同时也占用了I/O模块的组态地址,就是说,映射区的地址和I/O地址是并行的,不能重复使用。所以最好在硬件的I/O模块全部组态完毕之后再组态映射区。
映射区的数据交换是通过系统功能块SFC14(DPRD_DAT——Read Consistent Data of a Standard DP Slave)和SFC15(DPWR_DAT——Write Consistent Data to a Standard DP Slave)实现的。
SFC14和SFC15是成对使用的,一个发送一个接收,缺一不可。数据的通讯也是交互的,可以相互交换数据。本例中,我们通过简单的数据来验证通讯结果。
首先,我们在程序中插入数据区DB1,前面我们只建立了2个字(2 Word)的映射区,于是我们建立如下内容的DB1,为了查看的方便,DB1的前半部分作为接收数据的存储区,后半部分用作发送数据的存储区。
在317和315中我们插入同样的DB1,然后分别在OB1中编写通讯程序。
315(主站)中的程序如下:
317中的程序如下:
其中,程序的LADDR地址,对应的是硬件的映射区组态时本站的Local Addr中的地址,从站的Local Addr我们组态的是0,对应的Partner Addr也就是主站的地址是4。需要注意的是这里的地址是需要用16进制的格式来表示的,我们组态时是用10进制表示的。
完成之后,我们在各站中插入OB82、OB86、OB122等程序块,这些是为了保证当通讯的一方掉电时,不会导致另一方的停机。完成之后,将所有的程序分别下载到各自的CPU中,个站切换到运行状态,通过PLC监控功能,设定数据之后,我们监控的结果如下:上面的表格内容为主站315的数据,下面的是从站317的数据。
可以看到,两个站都分别将各自的DBB4—DBB7数据发送出去并被另一方成功接收后存储在各自的DBB0—DBB3中。
验证中,我们将一个站的CPU切换到STOP状态,可以看到,另一个站的CPU硬件SF指示灯报警,但PLC正常运行不停机。待该站恢复之后,报警自动消失。
丹佛斯S7-300C与Danfoss FC300 PROFIBUS-DP通讯 (调用sfc14、sfc15)
丹佛斯FC系列变频器,作为丹佛斯变频器家族的一种新型产品,继承了以往5000系列变频器成熟的总线通讯技术,作为5000系列的替代产品,其在PROFIBUS上的基本协议没有变化,参数寻址和GSD文件有所不同,V1版本增加了与第三方设备网络组态的灵活性,可以作为国际通用总线PROFIBUS从站,挂靠在PROFIBUS网络中,方便的实现过程控制的需要,本文以西门子S7-300做主站,介绍怎样通过PROFIBUS实现通讯。
1 示例系统的体系结构
5 FC300参数设置
要使变频器能够用PLC通过Profibus来控制,变频器也需要一定的参数设置才能实现,变频器初始化后需要注意以下参数设置:
P801 命令源: 数字或者控制字 (或者仅仅控制字)
P810 控制字格式: FC或者Profidrive
P918 站号: 4 (必需与硬件组态时保持一致)
6 程序的编写
对PCD (过程数据)的读写:
a. 在Step7 中对PCD (过程数据)读写参数时调用SFC14和SFC15
b. SFC14(“DPRD_DAT”)用于读Profibus 从站(FC300)的数据
c. SFC15(“DPWR_DAT”)用于将数据写入Profibus 从站(FC300)
d. 硬件组态时PCD的起始地址:W#16#108(即264)
1. 建立数据块DB1,将数据块中的数据地址与从站(FC300)中的PCD、PCV数据区相对应。