恭喜,你发布的帖子
发布于 2023-12-15 11:07:10
13楼
我觉得你别一次次的REQ了。
就是保持连接,CONT=1
在232数据接收完成之后,使用不可中断的DB块MOVE,一次性地复制到这个TSEND_C 的DATA指针对应的发送缓冲区。(主要是保持数据的一致性。)
TSEND_C会自动发送新的数据。
实现这点,要求PC那边的服务器也同样采用固定的客户端IP连接,并保持该连接(不得在接收完成后断开连接)。
只有在远程服务器宕机、断电重启后,这边的客户端T_RESET复位连接,DONE后,TSEND_C再次REQ,请求连接。
我现在的程序就是这样的,但req必须一次次触发,每一个上升沿信号,tsend-c的cont一直是为ture,我甚至节省move,我把下位机接收和上位机发送直接用同一个buffer。我这样理解是否正确。然后非常感谢您的回复,如果没有您的回复我对于这个周期时长真的一头雾水,因为以前我完全没有做过通讯,甚至需要观察循环扫描周期的程度,在昨天也是很幸运的预约到了西门子官方工程师,他也是给了我相同的回复,不过工程师还是给我补充了两点可以提高速率的方式1.将plc cpu硬件设置的通讯负载拉满,直接将15%调到了50% 2.就是降低缓冲内的帧数,就是收到直接发不缓存,这样之后我的速率勉强从下-plc-上的周期降到了10ms
精华帖版主置评:很认真的学习,值得鼓励下
请填写推广理由:
分享
只看
楼主