【问题标题】:How can I read out the NCTOPLC_AXIS_REF in TwinCAT using Ads.NET?如何使用 Ads.NET 在 TwinCAT 中读取 NCTOPLC_AXIS_REF?
【发布时间】:2022-10-04 17:12:11
【问题描述】:

我正在尝试从 PLC 中读取 NCTOPLC_AXIS_REF,但是当我执行 client.ReadAny(handle) 时,它会引发 System.ExecutionEngineException。我尝试在我的结构中使用[StructLayout(LayoutKind.Sequential, Pack = 1)][MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)],但到目前为止没有成功。

【问题讨论】:

    标签: twincat


    【解决方案1】:

    这是有效的结构:

    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public class NcToPlcAxisRef
    {
        public uint StateDWord;
        public uint ErrorCode;
        public uint AxisState;
        public uint AxisModeConfirmation;
        public uint HomingState;
        public uint CoupleState;
        public uint SvbEntries;
        public uint SafEntries;
        public uint AxisId;
        public uint OpModeDWord;
        public double ActPos;
        public double ModuloActPos;
        public ushort ActiveControlLoopIndex;
        public ushort ControlLoopIndex;
        public int ModuloActTurns;
        public double ActVelo;
        public double PosDiff;
        public double SetPos;
        public double SetVelo;
        public double SetAcc;
        public double TargetPos;
        public double ModuloSetPos;
        public int ModuloSetTurns;
        public ushort CmdNo;
        public ushort CmdState;
        public double SetJerk;
        public double SetTorque;
        public double ActTorque;
        public uint NcToPlcRefState2Value;
        public uint NcToPlcRefState3Value2;
        public uint TouchProbeState;
        public uint TouchProbeCounter;
    
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] CamCouplingStates = new byte[8];
    
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public ushort[] CamCouplingTableID = new ushort[8];
        public double ActTorqueDerivative;
        public double SetTorqueDerivative;
        public double AbsPhasingPos;
        public double TorqueOffset;
        public double ActPosWithoutPosCorrection;
        public double ActAcc;
        public uint DcTimeStamp;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 2022-12-06
      • 1970-01-01
      相关资源
      最近更新 更多