lss
2025-05-20 fe442ab8c9ba6648b140f253902b4ef24c5618bf
HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/device/S7Helper.cs
@@ -8,6 +8,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Services.Description;
using System.Web.UI.WebControls.WebParts;
@@ -86,6 +87,8 @@
        //https://www.ad.siemens.com.cn/productportal/Prods/S7-1200_PLC_EASY_PLUS/SmartSMS/060.html
        //https://www.ad.siemens.com.cn/productportal/Prods/S7-1200_PLC_EASY_PLUS/07-Program/02-basic/01-Data_Type/09-String.html
        private static object _lockdpj=new object();
        /// <summary>
        /// 合肥佳通读取叠盘机
        /// </summary>
@@ -95,6 +98,8 @@
        public static int ReadDpj(int startByte, S7.Net.VarType varType)
        {
            string ip = "10.68.9.15"; short port = 102;
            lock (_lockdpj)
            {
            try
            {
                var plc = new Plc(CpuType.S7200Smart, ip, port, 0, 0);
@@ -123,6 +128,8 @@
                LogHelper.Error($"ReadDpj Error:{ex}",ex);
                throw;
            }
            }
        }
@@ -132,16 +139,20 @@
        /// <param name="startByte">偏移量地址</param>
        /// <param name="value">写入值 byte类型只能0 1</param>
        /// <returns></returns>
        public static bool WriteDpj(int startByte, int value)
        public static bool WriteDpj(int startByte, byte value)
        {
            bool result = false;
            string ip = "10.68.9.15"; short port = 102;
            lock (_lockdpj)
            {
            try
            {
                var plc = new Plc(CpuType.S7200Smart, ip, port, 0, 0);
                LogHelper.Info($"链接叠盘机,ip:{ip},端口:{port}");
                S7Helper.Link(plc);
                   // plc.Write($"VB{startByte}", value);
                    Thread.Sleep(300);
                plc.Write(
                   dataType: DataType.DataBlock,
                   db: 1,
@@ -149,11 +160,16 @@
                   value: value
               );
                LogHelper.Info($"写入叠盘机,ip:{ip},端口:{port},地址:{startByte},写入值:{value}");
                byte[] readBack = plc.ReadBytes(DataType.DataBlock, 1, startByte, 1);
                if (readBack[0] == value)
                    Thread.Sleep(300);
                    byte fdvalue = (byte)plc.Read(DataType.DataBlock, 1, startByte, VarType.Byte, 1);
                    if (fdvalue == value)
                {
                    result = true;
                    LogHelper.Info($"叠盘机写入成功,回读值:{readBack[0]}");
                        LogHelper.Info($"叠盘机写入成功,回读值:{fdvalue}");
                    }
                    else
                    {
                        LogHelper.Info($"叠盘机写入失败,回读值:{fdvalue}");
                }
                return result;
@@ -163,6 +179,8 @@
                LogHelper.Info($"WriteDpj Error{ex}");
                throw;
            }
            }
            // S7-200 Smart的V区也映射为DB1