发布于 2013-11-30 00:52:56
8楼
是这样:在S7-1200中,当首次调用所有地址的USS从站驱动后(指的是USS_DRV)就组态了模块端口。PLC每次调用USS_PORT执行一次对一台驱动的报文交换。如果没有调用USS_RPM, USS_WPM或者调用了,但没有请求,则在这次调用USS_PORT时就是没有任务的0PKW、仅有PZD的报文。(这就是所谓空PKW报文。但PZD的轮询还是存在的)
和200不同的是:通讯不是PLC的端口,而是由模块负责。对于PKW的报文组态,是在任意扫描周期发生,且要等到该地址报文时的USS_PORT调用才向模块提交执行。所以要经过下一个地址的轮询交换才得到结果。
模块在没有完成这一次通讯过程时,拒绝接受任何提交的。也就是说,更快的USS_PORT调用是没用的,只是得到模块忙的应答。所以要根据波特率,选一个合适的周期来调用USS_PORT。
所以对某地址的PKW报文字段的时间是任意的,和200一样,REQ只需请求一次,然后就是等待。一直等到这个地址的报文执行!
学而时习之,不亦说乎?温故而知新,不亦乐乎?