问:我有一个改造项目新系统的313Cplc需要从老系统上用MpI通讯读取一个模拟量和16个数字量的数据,现在问题是用定义全局数据通讯还是在新系统plc中用sfc67和sfc68通讯,是不是编程通讯比全局数据通讯速度快更稳定?请高手指点。(还要问一句如果用编程通讯的话怎么把定义好的全局数据给删除掉)如果不用全局数据的话,用编程,两个plc在组态里用不用连?是不是只用设置一下地址就行了吧?
答:全局数据通信是PLC之间进行的不需要编程通过MPI接口在CPU间循环地交换少量数据,当过程映像被刷新时,在循环扫描检测点上进行数据交换;而无组态的连接的MPI通信(编程通信)通过调用SFC67和SFC68来实现,MPI无组态连接就是MPI通信时,不需要组态,只要编写通信程序即可实现通信,PLC之间可以采用双边编程通信和单边编程通信方式,你这里应该是采用单边编程通信方式,因为CPU313C需要从老系统上用MpI通讯读取一个模拟量和16个数字量的数据,只要在CPU313C上进行编程就可以实现数据交换,编程通信要比全局数据传输的数据量要大,速度更快;
你首先必须把两个PLC之间的MPI端口连接起来,设定主站CPU313C的MPI通信参数(波特率187.5kbit/s)和主站的MP地址如“3”,不能与老的PLC的MPI地址重复,把两个站的波特率设定一样,各自下载到PLC中;因为你只想老系统上用MpI通讯读取一个模拟量和16个数字量的数据,在CPU313C中单边编程,在读取数据区只要指定对方的PLC的MPI地址和数据区就可以了。
X_PUT(SFC68)为发送数据的指令,通过此指令将数据写入不在同一个本地S7站中的通信伙伴,其中DEST_ID为对方的MPI地址(这里指你的老系统PLC的MPI地址)和VAR_ADDR为对方的数据区,SD为本地数据区,必须保证SD参数定义的数据长度和数据类型与通信伙伴上VAR_ADDR一致;
X_GET(SFC67)为接收数据的指令,可以从本地站S7站以外的通信伙伴(这里指老系统上PLC站)中读取数据,其中参数DEST_ID和VAR_ADDR分别指对方的MPI地址和对方的数据区,RD为本机的数据区必须保证RD参数定义的接收区(CPU313C)至少和由VAR_ADDR参数定义的要读取的区域一样大,而且类型必须相匹配。
如果不想要全局数据通信,只要在硬件组态界面中选择菜单Options(选项)/DefineGlobalData“(定义全局数据)界面中,打开全局变量发送和接收组态,断口连接,执行保存编译,下载到PLC就可以了。