具体从PLC读取函数查看官方手册,在此主要写一下获取数据后存储到对应结构体
结构体头文件
#ifndef MSTC_H
#define MSTC_H
//! 与beckhoff交互信息结构体
//! 与beckhoff端结构体定义一致
/*******************************************************************************************
* 文件名:mSTc.h
* 编制日期:2018.11.13
* 作者:Kare
* 功能:
* bk_ctlStatus 定义与BECKHOFF控制器通信的结构体,与在BECKHOFF PLC内的结构体一致
********************************************************************************************/
#include "mMacro.h"
#include <vector>
using namespace std;
//! 按照单字节对齐,需要与PLC端定义一致。不需要优化。
#pragma pack(push)
#pragma pack(1)
//! beckhoff结构体 NCTOPLC_AXLESTRUCT
struct Nc2Plc
{
BK_DWORD nStateDWord; //Status double word
BK_DWORD nErrorCode; // Axis error code
BK_DWORD nAxisState; // Axis moving status
BK_DWORD nAxisModeCon; // Axis mode confirmation (feedback from NC)
BK_DWORD nCalibrationState; // State of axis calibration (homing)
BK_DWORD nCoupleState; // Axis coupling state
BK_DWORD nSvbEntries; // SVB entries/orders (SVB = Set preparation task)
BK_DWORD nSafEntries; // SAF entries/orders (SAF = Set execution task
BK_DWORD nAxisId ; // Axis ID
BK_DWORD nOpModeDWord; // Current operation mode
BK_DWORD nReserved2_HIDDEN; // reserved
BK_LREAL fPosIst; // Actual position (absolut value from NC)
BK_LREAL fModuloPosIst; // Actual position as modulo value (e.g. in degrees)
BK_DINT nModuloTurns; // Actual modulo turns
BK_LREAL fVeloIst; // Actual velocity (optional)
BK_LREAL fPosDiff; // Position difference (lag distance)
BK_LREAL fPosSoll; // Setpoint position
BK_LREAL fVeloSoll; // Setpoint velocity
BK_LREAL fAccSoll; // Setpoint acceleration, OLD: "fReserve1_HIDDEN"
BK_LREAL fR