Jump to content
  • Sign in to follow this  

    如何判断 S7 通信中断并获取错误代码

       (0 reviews)

    leikang

    如何判断 S7 通信中断
    方法一:通过与通信伙伴方创建的心跳信号判断
    本测试为:一台 200 SMART(CPU1)和 2 台 200 SMART(CPU2 和 CPU3)做 Get/Put 通信。 在 Get/Put 向导中填写好类型、传送大小和远程 CPU 的 IP 地址,测试程序中本地和远程 CPU 对应的地址为:

    cn-188-1.gif

    图 1. 本地和远程对应地址

    向导配置完成后,在 CPU1 程序中用 sm0.5 的一个秒脉冲赋值给 v100.0,做一个心跳信号。

    cn-188-2.gif

    图 2. 心跳信号

    在伙伴方 CPU2 和 CPU3 中监控 V0.0,当通信建立后 V0.0 应为 0\1 不停切换,当某一个 CPU 中的 V0.0 一直为1或者一直为 0 时,表明该 CPU 与本地 CPU1 的通信中断。

    方式二:通过 Get/Put 向导中的状态字判断
    Get/Put 向导创建的每一个操作都会有状态字。点击左侧项目树程序块---向导中 NET_EXE,可以看到每个操作对应的状态字,本测试程序中 CPU2 的 PUT 对应的状态字为 VB340,CPU3 的 PUT 对应的状态字为 VB380。

    cn-188-3.gif

    图 3. 状态字

    在状态图表中监控 VB340 和 VB380,格式选择二进制,状态字 VB340 和 VB380 的第 6 位(通信已经激活标志位)正常情况下是 0 1不断变换,当某一个远程通信伙伴方线路断开后,该位会一直保持为 1。

    如何获取 S7 通信的错误代码
    接着上文中“方式二”的测试,状态字的低 4 位为错误代码,通过判断错误代码来判断通信是否已经中断,这里需要特别注意,当通信伙伴线路断开时,本地 CPU 并没立马收到错误代码,需在 RUN---STOP—RUN 切换后才能收到错误代码。错误代码(错误代码 5)只会存在一个扫描周期,所以需要用上升沿来捕捉错误代码,如下图所示。

    cn-188-4.gif

    图 4. 错误代码的读取

    Sign in to follow this  



    User Feedback

    Create an account or sign in to leave a review

    You need to be a member in order to leave a review

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

    There are no reviews to display.


Apply for friendship links:WhatsApp or E-mail: admin@plchmis.com
×
×
  • Create New...