如何在PCS7中实现CP341的MODBUS通信1.软件与硬件安装需求a.首先要对CP341进行参数化,既需要安装参数化软件Setup_PtP.exe(在CP341附带的CD或网上可下载。b.根据CP341作主从具体情况,对CP341进行参数化。c.安装MODBUS主从通讯驱动软件:MODBUS从站驱动V3.1.4()MODBUS主站驱动V3.1.3()在参数化菜单中,设置其主从选择。d.进行MODBUS主/从通讯时,需要相应的CP341中插入硬件狗(DONGLE)。插入方法参见下图。e.首次使用CP341MODBUS主从设置前,需对CP341进行相应驱动下载(LoadDrivers)。采用MPI连接方式,将PLC置于STOP。点击LoadDrivers钮。f.串行通讯模板CP341有RS232C或TTY或RS485/422三种电气接口类型。一般来讲,RS232的通讯最大距离为15m,20mATTY的通讯最大距离为100m(主动模式)、1000m(被动模式),RS422/485的通讯最大距离位1200m。每种接口方式下的具体接线方法可参考CP341手册。以下示例为RS485/422接口CP341接口定义:其全双工(RS422)四线连接时连接方法如下:g.MODBUS为单主站网络协议,所以系统中只能够有一个MODBUS主站,并且只能够实现主站和从站的数据交换,从站之间不能进行数据交换。具体连接方法参见CP341主站通讯手册。MODBUS协议RS422方式下多点连接示意图如下:2.CP341作为主站(MASTER)组态方法a.定义CP341作为主站通讯时的通讯波特率、桢特性和从站一致。b.CP341作主站,MODBUS用户系统为从站时。需调用CP341库中的P_SND_RK、P_RCV_RK功能块或PCS7库SND_341、RCV_341功能块。c.CP341通过发送块P_SND_RK或SND_341发送请求信息给MODBUS从站,在通过相应的接受块P_RCV_RK或RCV_341得到信息。其中,MODBUS系统中的数据类型的交换是由FC(功能码)决定。d.在GOULD-MODBUS协议中,用户方(MODBUS从站)数据地址定义如下:注意:在发送请求信息中的MODBUS参照地址为0。在MODBUS用户系统中起始地址为1。例如:要读取用户系统中第127(00127)个线圈的值时,请求信息的线圈地址应为007EHex(126)。e.每种功能码请求信息有自己的数据格式,具体可参照CP341主站通讯手册。FC01请求信息格式如下:(SlaveAddress是从站MODBUS地址。)f.采用P_SND_R/KP_RCV_RK时:对于P_SND_RK块:SF:发送(SEND)或获取(FETCH)选择;“S”“F”REQ:初始化请求(上升沿);LADDER:CP341的起始地址;DB_NO:发送请求信息的DB数据块号;DBB_NO:数据块中数据字节的起始地址;LEN:请求信息的字节长度;R_TYP:对方CPU的地址类型。(这里必须用“X”)。对于P_RCV_RK块:(类同)。EN_R:数据接收使能;R:终端请求。LADDER:CP341的起始地址;DB_NO:接收数据的DB数据块号;DBB_NO:数据块中数据字节的起始地址。举例:首先定义发送数据的DB1块,保证其数据格式与相应功能码相应一致。这里,我们定义发送三组请求信息于DB1中,通过轮换改变DBB_NO号分别将相应请求信息发送过去。同样,我们在接受数据块DB20中,相应改变DBB_NO可以将数据分类放置。说明:1.trigger自定义块,通过接收P_SND_RK发送请求信息后得到的反馈(完成DONE或有错ERROR)及REQ是否清闲,不断产生一个信息发送请求。2.readNOloop(COUNT_P)和readcmdno(DI_I)块,根据P_RCV_RK成功接收反馈(NDR),产生一个轮循数(本例:0,1,2)。3.Readcmdcalcu1(MUL_I)和Readcmdcalcua(MUL_I)块,根据轮循数相应产生一个发送、接收DB块的相应偏移量。4.6(CMP_I)块,保证在P_SND_RK发送写请求信息时,复位接收块P_RCV_RK。因此,只有保证发送、接收块的协调工作,才能保证MODBUS多组通讯信息正常收发。附注:采用PCS7库中SND_341/RCV_341通讯方法。1.CP341做MODBUS主站,调用SND_341/RCV_341。对于SND_341:S_DATA:请求信息数据块。REQ:请求开始。(1有效)对于RCV_341:R_DATA:接收信息数据块。EN_R:接收使能。(1有效)举例:在使用SND_341/RCV_341进行MODBUS通讯时,S_DATA/R_DATA不能轻易变换,因此我们可以成组工作;只是应注意同一时刻只能有一组在工作。本例中,我们设置了两组命令。1.FC70自定义块:根据INDEX输入为0,1时,分别输出OUT1/OUT2为(1,0),(0,1)。分别使两组收发命令使能。2.OR,COUNT_P块是在两组接收块收成功(NDR)或出错(ERROR)后轮循。MODBUS通讯中P_SND/RCB_RK和SND/RCV_341两组命令对比:前者灵活,技巧性强;后者简单、清晰,但效率低。使用者可按需使用相应的块。