湖中仙人 2023-12-13 10:36 采纳率: 14.3%
浏览 5
已结题

PLC监控数据读取没有变化

读取三菱PLC数据D,读取时,读取到到数据总是一组固定值,不明白为什么总是一组相同的数据
下面是参数设置

            dt.Columns.Add(new DataColumn("设备代号", typeof(System.String)));
            dt.Columns.Add(new DataColumn("设备名称", typeof(System.String)));
            dt.Columns.Add(new DataColumn("采数类型", typeof(System.String)));
            dt.Columns.Add(new DataColumn("状态", typeof(System.String)));
            dt.Columns.Add(new DataColumn("IP地址", typeof(System.String)));
            dt.Columns.Add(new DataColumn("端口", typeof(System.String)));

            dt.Rows.Add(new object[] { "01112-005", "H11A1-自动造型一线", "三菱PLC", "未采集", "10.1.0.12", "2003" });//一线造型机
            dataGridView1.DataSource = dt;

            PlcParamsDt = new DataTable();

            PlcParamsDt.Columns.Add(new DataColumn("设备代号", typeof(System.String)));
            PlcParamsDt.Columns.Add(new DataColumn("PlcDeviceType", typeof(System.String))); //数据格式
            PlcParamsDt.Columns.Add(new DataColumn("PlcStartDevice", typeof(System.String)));//PLC取数地址
            PlcParamsDt.Columns.Add(new DataColumn("PlcDeviceNum", typeof(System.String)));  //数据长度
            PlcParamsDt.Columns.Add(new DataColumn("SqlParamName", typeof(System.String)));  //特征编码
            PlcParamsDt.Columns.Add(new DataColumn("DivNum", typeof(System.String)));        //读数因子

            PlcParamsDt.Rows.Add(new object[] { "01112-005", "int", "D900", "2", "模板号", "1" });
            PlcParamsDt.Rows.Add(new object[] { "01112-005", "int", "D901", "2", "开始时间年", "1" });
            PlcParamsDt.Rows.Add(new object[] { "01112-005", "int", "D902", "2", "开始时间月", "1" });
            PlcParamsDt.Rows.Add(new object[] { "01112-005", "int", "D903", "2", "开始时间日", "1" });
            PlcParamsDt.Rows.Add(new object[] { "01112-005", "int", "D904", "2", "开始时间时", "1" });
            PlcParamsDt.Rows.Add(new object[] { "01112-005", "int", "D905", "2", "开始时间分", "1" });
            PlcParamsDt.Rows.Add(new object[] { "01112-005", "int", "D906", "2", "开始时间秒", "1" });

下面是读取数据

        public int Receieve(out byte[] revData, out string sResult)
        {
            sResult = "";
            revData = new byte[bufferSize];
            try
            {  
                int readSize;
                lock (sendStream)
                {
                    readSize = sendStream.Read(revData, 0, bufferSize);
                }
                if (readSize == 0)
                {
                    sResult = "未接收到数据!";
                    return -1;
                }
                sResult = "接收数据成功!";
            }
            catch
            {

            }
            return 0;
        }

但是这个revData每次在执行完 sendStream.Read(revData, 0, bufferSize);后的数据都没有变化,这是为什么?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月21日
    • 创建了问题 12月13日

    悬赏问题

    • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
    • ¥15 C语言使用vscode编码错误
    • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
    • ¥20 ensp怎么配置让PC1和PC2通讯上
    • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
    • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
    • ¥15 请各位帮我看看是哪里出了问题
    • ¥15 vs2019的js智能提示
    • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
    • ¥15 uniapp的h5项目写一个抽奖动画