zoukankan      html  css  js  c++  java
  • (原创)C#监控软件通信模型

    直接操作现场的设备是PLC,不是服务器和客户端。所以,以PLC为核心分析设备故障以及在PC端的C#程序中加入故障处理代码。

    PC端读和写PLC哪个重要?写重要。因为写会影响PLC的寄存器值,进而影响工艺流程,设备的动作,读不会影响。所以需要处理好PC端的设定值和控制开关的实时保存和重启软件时的恢复功能。

    服务器端C#软件含有2个服务器对象(SUPER SOCKET和MODBUS-TCP)和1个客户端对象( SiemensS7Net)。
    SUPER SOCKET服务器基于命令行协议提供数据读写服务
    MODBUS-TCP服务器基于MODBUS-TCP协议提供数据读写服务
    SiemensS7Net客户端基于西门子S7协议读写西门子PLC操作

    有3种通信模型: 

    通信模型1:只有2种对象:PC机+PLC. PC机与西门子PLC走S7协议,1台PC机带很多台PLC。
    通信模型2:有3种对象:PC客户端(只读)+PC服务器+PLC. PC服务器走S7协议读写西门子PLC,把PLC的数据都写进MODBUS寄存器中,PC客户端走MODBUS-TCP协议读取PC服务器的MODBUS寄存器得到PLC的数据。
    通信模型3:有3种对象:PC客户端(可读可写)+PC服务器+PLC. PC服务器走S7协议读写西门子PLC,把PLC的数据都写进MODBUS寄存器中,PC客户端走MODBUS-TCP协议读取PC服务器的MODBUS寄存器得到PLC的数据。PC客户端还可写入服务器的MODBUS寄存器,服务器根据客户端的写入值来控制PLC。

    在通信模型1中的故障处理措施:PC端的设定值和控制开关状态都实时刷入INI文件中,在故障重启或者重新启动软件时,把INI文件中的数据准确恢复到之前的状态。
    在通信模型1中会出现的故障情况:
    现场的2种机器:1台电脑,多台PLC
    (1)如果停电,2者都会关机,当来电后重新启动电脑和PLC之后也要求保持断电前的状态。
    (2)如果没停电,PLC正常工作,电脑异常死机。这样的状态是允许的,执行任务的是PLC,电脑是发出命令和显示PLC参数,当电脑正常发出命令给PLC,PLC已经接收到命令执行正确的任务。突然电脑异常死机,PLC也能继续执行任务不出错,只是没有电脑,看不到PLC的状态而已。这样的情况只需要电脑重启,软件打开时不能影响PLC的正常动作。软件的设定值和控制开关状态因为取的是INI文件的数据,这些数据会被实时刷新到INI文件中,重启软件时会被初始为INI中的数值,所以不会出错。
    (3)如果没停电,电脑正常工作,PLC异常死机。这样的状态是不可控状态,因为你不知道什么时候PLC会异常死机,在PLC死机时,电脑的PLC数值和状态显示不可作为参考,电脑的PLC数值设定和开关设定一定要作为参考,这些设定会在PLC重启正常后起作用,所以电脑设定值和设定开关不要乱点乱改。

    在通信模型1中的故障处理措施:PC端的设定值和控制开关状态都实时刷入INI配置文件中,在故障重启或者重新启动软件时,把INI配置文件中的数据准确恢复到之前的状态。
    在通信模型2中会出现的故障情况:
    有3种对象:PC客户端(只读)+PC服务器+PLC。
    所有客户端故障都不会影响服务器和PLC。因为客户端只读作用,是被动状态。
    服务器和PLC的故障处理就变成了通信模型1中的情况一模一样。


    在通信模型3中会出现的故障情况:

    有3种对象:PC客户端(可读可写)+PC服务器+PLC。需要处理客户端和服务器的变量初始化,2者都需要实时刷控制值和开关值到INI文件中,当停电或异常关机,客户端和服务器重新打开时就可以进行变量的初始化,恢复到掉电前的状态。

  • 相关阅读:
    基于Spring框架的Shiro配置(转发:http://kdboy.iteye.com/blog/1103794)
    Apache Shiro 使用手册(五)Shiro 配置说明(转发:http://kdboy.iteye.com/blog/1169637)
    Apache Shiro 使用手册(四)Realm 实现(转发:http://kdboy.iteye.com/blog/1169631)
    iOS定位服务与地图开发(4)---显示地图
    iOS定位服务与地图开发(3)---地理信息编码查询
    iOS定位服务与地图开发(2)---地理信息反编码
    iOS定位服务与地图开发(1)---获取经纬度
    社交网络编程(4)--- 通过SLRequest接收tweet
    社交网络编程(3)--- 通过SLRequest分享内容
    社交网络编程(2)---SLComposeViewController
  • 原文地址:https://www.cnblogs.com/softsee/p/11772861.html
Copyright © 2011-2022 走看看