如何基于PPI协议实现两个plc之间通信
第一、硬件连接
下图是S7-200通信端口端口定义入下图所示,PPI通信建立在485的硬件基础上,因此需要制作一根至少包含一对双绞线的屏蔽线,两端分别接DB9头子的3脚和8脚,屏蔽层接DB9头子的金属外壳。如果实在找不到双绞线自己也可以找两根单根线,自己绞一下,但是只限于临时用正式产品不建议用。
两个PLC之间距离不能太远,最好不要超过50米,如果超过的话最好使用中继器,可以采购200配套的中继器,也可以自己从某宝上买。
第二、合理分配CPU地址
PPI通信要求PPI网络内每个CPU具有不同地址,Micro/WIN默认为0,CPU默认为2,因此建议主PLC的地址设置为2,从PLC地址依次设置为11、12、13……依次类推。
第三、正确初始化
通过初始化特殊寄存器SMB30,将主CPU端口0配置为PPI主站模式,同时将数据缓存区清零。
配置时只需要关心最低两位即可,即mm,其他的都配置成零就行了。2就是PPI主站模式。
从站配置成PPI从站模式,即配置成2。
第四、正确准备数据
数据必须按照规定将相应的数据填入缓冲区,数据格式如下所示。例如数据发送缓冲区为VB200,那么VB200就是状态字,不需要填写,用于读取指令执行的状态。VB201为目标从站的地址,VB202到VB205时从站目标地址,VB206为数据长度,如果是写指令就是希望写的字节数,如果是读指令就是希望读回来数据的长度。VB207及以后是数据区。对NETR,执行NETR指令后,从远程站读到的数据放在这个数据区。对NETW,执行NETW指令前,要发送到远程站的数据放在这个数据区。
第五、适时调用收发指令
PPI通信指令只有两条,分别是:网络读和网络写,调用也很简单,只需要指定本次读写己方的端口和数据缓冲区地址。
为了减少数据交换造成CPU资源的过度浪费,不建议每个循环周期都调用通信指令。可以根据需要进行指令调用,进行数据交换,如果无法找到合适的指令触发条件,可以使用定时器进行周期调用。
为了保证数据的实时性,建议采用定时中断,在中断事件中调用通信指令。
第六,正确进行指令调用
使用PPI通信注意事项
1、硬件接线时,DB9头子,3脚对3脚,8脚对8脚。线缆采用双绞线,尽量使用屏蔽线,长度不要超过50m,超过50m需要使用中继器。
2、千万不要每个CPU扫描周期调用读写指令,否则会对过多占用CPU资源。