精华内容
下载资源
问答
  • TwinCAT常用功能块说明

    2019-01-11 20:35:04
    关于倍福TwinCAT功能块的简要说明,有兴趣的可以看看,欢迎大家进行交流
  • 倍福PID功能块使用-ControllerToolbox
  • 程序框架借鉴 轴控模块的思路,使用功能块与接口结构体的方式(这个坑以后在填),当然这样的思路并不是最简洁的,比如做到类似高级语言 fopen(…)这样的FUNCTION函数,编程体验自然是更好。 结构体与功能块之间的...

    测试总结

    • 1、 如果使用二进制,进行文件读写,写入浮点数618,在从文件读出,读出的结果会出错。浮点数据 = 1.000 、610、620,测试都没问题;浮点数:616 出错,读出来是608,619也出错了,从文件读出是623。暂不知是什么问题,是因为编码问题? 用其他语言读写文件会不会也会遇到这种问题?
    • 2、 所以在倍福plc中,读写文件,为了避免上面的问题,读写模式选用字符串模式(也即,读写功能块的sMode = ‘wt’ / ‘rt’) ,给文件写入的数据也用字符串型变量。

    官方范例

    在这里插入图片描述

    实际测试

    程序框架借鉴 轴控模块的思路,使用功能块与接口结构体的方式(这个坑以后在填),当然这样的思路并不是最简洁的,比如做到类似高级语言 fopen(…)这样的FUNCTION函数,编程体验自然是更好。
    在这里插入图片描述

    • 结构体与功能块之间的数据传输
      在这里插入图片描述

    打开文件:FileOpen

    • 关于文件打开模式,参考C语言相关解释
    (*******************************************************************************************************)
    (*
    文件使用方式        意 义
    “rt”      只读打开一个文本文件,只允许读数据
    “wt”      只写打开或建立一个文本文件,只允许写数据
    “at”      追加打开一个文本文件,并在文件末尾写数据
    “rb”      只读打开一个二进制文件,只允许读数据
    “wb”       只写打开或建立一个二进制文件,只允许写数据
    “ab”                追加打开一个二进制文件,并在文件末尾写数据
    “rt+”      读写打开一个文本文件,允许读和写
    “wt+”      读写打开或建立一个文本文件,允许读写
    “at+”      读写打开一个文本文件,允许读,或在文件末追加数 据
    “rb+”      读写打开一个二进制文件,允许读和写
    “wb+”      读写打开或建立一个二进制文件,允许读和写
    “ab+” 		    读写打开一个二进制文件,允许读,或在文件末追加数据
    *)
    (*
    
    对于文件使用方式有以下几点说明:
    
    1. 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:
    r(read):w(write):a(append): 追加
    t(text): 文本文件,可省略不写
    b(banary): 二进制文件
    +: 读和写
    
    2. 凡用“r”打开一个文件时,该文件必须已经存在, 且只能从该文件读出。
    
    3. 用“w”打开的文件只能向该文件写入。 若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。
    
    4. 若要向一个已存在的文件追加新的信息,只能用“a ”方式打开文件。但此时该文件必须是存在的,否则将会出错。
    
    5. 在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。因此常用以下程序段打开文件:
    if((fp=fopen("c:\hzk16","rb")==NULL)
    {
          printf("error on open c:\hzk16 file!");
          getch();
          exit(1);
    }
      这段程序的意义是,如果返回的指针为空,表示不能打开C盘根目录下的hzk16文件,则给出提示信息“error on open c: hzk16file!”,
    下一行getch()的功能是从键盘输入一个字符,但不在屏幕上显示。在这里,该行的作用是等待,只有当用户从键盘敲任一键时,
    程序才继续执行, 因此用户可利用这个等待时间阅读出错提示。敲键后执行exit(1)退出程序。
    
    6. 把一个文本文件读入内存时,要将ASCII码转换成二进制码, 而把文件以文本方式写入磁盘时,也要把二进制码转换成ASCII码,
    因此文本文件的读写要花费较多的转换时间。对二进制文件的读写不存在这种转换。
    
    7. 标准输入文件(键盘),标准输出文件(显示器 ),标准出错输出(出错信息)是由系统打开的,可直接使用。文件关闭函数fclose()文件一旦使用完毕,
    应用关闭文件函数把文件关闭, 以避免文件的数据丢失等错误。
    *)
    (*******************************************************************************************************)
    
    
    (*打开文件模式,nmode:d 代表着流形态*)
    IF  File_ITF.sMode = 'r'THEN 	(* r: 打开只读文件,该文件必须存在*)
    	File_ITF.nMode := FOPEN_MODEREAD;
    
    ELSIF  File_ITF.sMode = 'r+'THEN (* r+: 打开可读写文件,该文件必须存在*)
    	File_ITF.nMode := FOPEN_MODEREAD OR FOPEN_MODEPLUS;
    
    (*rb+:读写打开1个二进制文件,只允许读写数据*)
    (*rt+:读写打开1个文本文件,只允许读写数据*)
    
    ELSIF  File_ITF.sMode = 'w'THEN	(* w: 打开只写文件,若文件存在,则该文件内容会消失。若文件不存在则建立该文件*)
    	File_ITF.nMode := FOPEN_MODEWRITE;
    
    ELSIF  File_ITF.sMode = 'w+'THEN (* w+: 打开可读写文件,若文件存在,则该文件内容会消失。若文件不存在则建立该文件*)
    	File_ITF.nMode := FOPEN_MODEWRITE OR FOPEN_MODEPLUS;
    
    ELSIF  File_ITF.sMode = 'a'THEN (* a: 以追加的方式打开只写文件,若文件不存在,则新建该文件,如果文件存在,写入的数据会被追加到文件尾,即文件原先的内容会被保留。(EOF符保留)*)
    	File_ITF.nMode := FOPEN_MODEAPPEND;
    
    ELSIF  File_ITF.sMode = 'a+'THEN (* a+: 以追加的方式打开可读写文件,若文件不存在,则新建该文件,如果文件存在,写入的数据会被追加到文件尾,即文件原先的内容会被保留。(原来的EOF符不保留)*)
    	File_ITF.nMode := FOPEN_MODEAPPEND OR FOPEN_MODEPLUS;
    (*wb*)
    (*wb+*)
    (*wt*)
    (*wt+*)
    (*at+*)
    ELSIF  File_ITF.sMode = 'at+'THEN
    	File_ITF.nMode := FOPEN_MODEAPPEND OR FOPEN_MODEPLUS OR FOPEN_MODETEXT;
    
    (*ab+*)
    
    ELSIF  File_ITF.sMode = 'b'THEN
    	File_ITF.nMode := FOPEN_MODEBINARY;
    
    ELSIF  File_ITF.sMode = 't'THEN
    	File_ITF.nMode := FOPEN_MODETEXT;
    ELSE
    	File_ITF.nMode :=File_ITF.nMode;
    END_IF
    (*EOF: 文件结束标识符,一般值为-1*)
    
    
    10:
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.bExecuteFileOpen:=TRUE;
    	IF NOT g_st_TestGroup.stFlieTxt1.st_FileInterface.bBusyOpen THEN
    		stFlow_Auto.st_FlowInterface.nState	:= 20;
    	END_IF
    
    • 查看C盘成功新建了该文件。
      在这里插入图片描述
    • FileOpen功能块在成功打开文件后,会产生一个hFile,暂时理解成文件索引,这个值很重要,是因为其他文件功能块都是基于这个值对文件进行操作的;反过来,如果直接使用其他文件操作功能块,没有FileOpen的hFile值做输入,那么操作的是哪个文件就无从得知。
      在这里插入图片描述

    关闭文件:FileClose

    • 如果在我们打开文件之后,不使用关闭文件功能块关闭文件,那么我们直接在系统中删除修改保存文件,都会报文件被占用警告。
      在这里插入图片描述
      在这里插入图片描述
    • 所以我们可以用是否可以用记事本修改或者删除文件,来验证 我们的文件关闭功能块执行是否成功。
    g_st_TestGroup.stFlieTxt1.st_FileInterface.bExecuteFileClose:=TRUE;
    IF g_st_TestGroup.stFlieTxt1.fb_File.ft_FileClose.Q  THEN
    	stFlow_Auto.st_FlowInterface.nState	:= 20;
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.bExecuteFileClose:=FALSE;
    END_IF
    

    在这里插入图片描述
    可改写,可删除
    在这里插入图片描述
    在这里插入图片描述

    • 在这里,需要注意的是,启动关闭文件,立即就检测功能块Busy信号,会有很大概率导致关闭失败;所以,在这里用下降沿功能块检测busy的下降沿,这样,就可以正确等待功能块执行成功。
      在这里插入图片描述
      当然,也可以使用延时检测Busy信号的方式,达到稳定关闭文件的效果。对于上面打开文件OpenFile操作,也是一样,不推荐立即检测busy信号。
      在这里插入图片描述

    文件读写FileWirte/Puts,FileRead/Gets

    • FileRead,按照 open -> close -> close 流程
    • FileRead,按照 open -> read -> close 流程
    
    10:
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.sMode:='wt';
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.bExecuteFileOpen:=TRUE;
    	IF g_st_TestGroup.stFlieTxt1.fb_File.ft_FileOpen.Q  THEN
    		stFlow_Auto.st_FlowInterface.nState	:= 20;
    		g_st_TestGroup.stFlieTxt1.st_FileInterface.bExecuteFileOpen:=FALSE;
    	END_IF
    
    20:(* open -> write -> close*)
    	(*g_st_TestGroup.stFlieTxt1.st_FileInterface.pWriteBuff:=ADR(sVar);
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.cbWriteLen:=SIZEOF(sVar);*)
    
    	(*g_st_TestGroup.stFlieTxt1.st_FileInterface.pWriteBuff:=ADR(nVar);
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.cbWriteLen:=SIZEOF(nVar);*)
    
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.pWriteBuff:=ADR(fVar);
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.cbWriteLen:=SIZEOF(fVar);
    
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.bExecuteFileWrite:=TRUE;
    	IF g_st_TestGroup.stFlieTxt1.fb_File.ft_FileWrite.Q  THEN
    		stFlow_Auto.st_FlowInterface.nState	:= 30;
    		g_st_TestGroup.stFlieTxt1.st_FileInterface.bExecuteFileWrite:=FALSE;
    	END_IF
    30:
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.bExecuteFileClose:=TRUE;
    	IF g_st_TestGroup.stFlieTxt1.fb_File.ft_FileClose.Q  THEN
    		stFlow_Auto.st_FlowInterface.nState	:= 40;
    		g_st_TestGroup.stFlieTxt1.st_FileInterface.bExecuteFileClose:=FALSE;
    	END_IF
    
    
    40:
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.sMode:='rt';
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.bExecuteFileOpen:=TRUE;
    	IF g_st_TestGroup.stFlieTxt1.fb_File.ft_FileOpen.Q  THEN
    		stFlow_Auto.st_FlowInterface.nState	:= 50;
    		g_st_TestGroup.stFlieTxt1.st_FileInterface.bExecuteFileOpen:=FALSE;
    	END_IF
    
    50:(* open -> read -> close*)
    	(*g_st_TestGroup.stFlieTxt1.st_FileInterface.pReadBuff :=ADR(sVarRead);
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.cbReadLen :=SIZEOF(sVarRead);*)
    
    	(*g_st_TestGroup.stFlieTxt1.st_FileInterface.pReadBuff:=ADR(nVarRead);
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.cbReadLen:=SIZEOF(nVarRead);*)
    
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.pReadBuff:=ADR(fVarRead);
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.cbReadLen:=SIZEOF(fVarRead);
    
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.bExecuteFileRead:=TRUE;
    	IF g_st_TestGroup.stFlieTxt1.fb_File.ft_FileRead.Q  THEN
    		stFlow_Auto.st_FlowInterface.nState	:= 60;
    		g_st_TestGroup.stFlieTxt1.st_FileInterface.bExecuteFileRead:=FALSE;
    	END_IF
    
    60:
    	g_st_TestGroup.stFlieTxt1.st_FileInterface.bExecuteFileClose:=TRUE;
    	IF g_st_TestGroup.stFlieTxt1.fb_File.ft_FileClose.Q  THEN
    		stFlow_Auto.st_FlowInterface.nState	:= 998;
    		g_st_TestGroup.stFlieTxt1.st_FileInterface.bExecuteFileClose:=FALSE;
    	END_IF
    
    998:(* 流程正常结束 *)
    ;
    
    • 测试 整型618,字符型’618’,浮点型618;结果是浮点型数据会出错
      在这里插入图片描述
    • 测试2:fVal 浮点数据 = 1.000 、610、620,没问题;616 出错,读出来是608;619出错,读是623
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    展开全文
  • 3.1 FB_JsonDomParser 3.1.1 AddArrayMember 3.1.2 AddBase64Member . 3.1.3 AddBoolMember 3.1.4 AddDateTimeMember 3.1.5 AddDcTimeMember 3.1.6 AddDoubleMember. 3.1.7 AddFileTimeMember 3.1.8 ...

    3.1 FB_JsonDomParser
    3.1.1 AddArrayMember
    3.1.2 AddBase64Member .
    3.1.3 AddBoolMember
    3.1.4 AddDateTimeMember
    3.1.5 AddDcTimeMember
    3.1.6 AddDoubleMember.
    3.1.7 AddFileTimeMember
    3.1.8 AddHexBinaryMember
    3.1.9 AddInt64Member
    3.1.10 AddIntMember
    3.1.11 AddJsonMember
    3.1.12 AddNullMember
    3.1.13 AddObjectMember
    3.1.14 AddStringMember.
    3.1.15 AddUint64Member
    3.1.16 AddUintMember.
    3.1.17 ArrayBegin .
    3.1.18 ArrayEnd.
    3.1.19 ClearArray.
    3.1.20 CopyDocument
    3.1.21 CopyJson
    3.1.22 CopyString .
    3.1.23 FindMember
    3.1.24 FindMemberPath
    3.1.25 GetArraySize .
    3.1.26 GetArrayValue .
    3.1.27 GetArrayValueByIdx .
    3.1.28 GetBase64.
    3.1.29 GetBool.
    3.1.30 GetDateTime
    3.1.31 GetDcTime
    3.1.32 GetDocument.
    3.1.33 GetDocumentLength
    3.1.34 GetDocumentRoot .
    3.1.35 GetDouble.
    3.1.36 GetFileTime .
    3.1.37 GetHexBinary
    3.1.38 GetInt .
    3.1.39 GetInt64 .
    3.1.40 GetJson
    3.1.41 GetJsonLength
    3.1.42 GetMaxDecimalPlaces .
    3.1.43 GetMemberName .
    3.1.44 GetMemberValue
    3.1.45 GetString
    3.1.46 GetStringLength.
    3.1.47 GetType .
    3.1.48 GetUint.
    3.1.49 GetUint64
    3.1.50 HasMember .
    3.1.51 IsArray
    3.1.52 IsBase64
    3.1.53 IsBool.
    3.1.54 IsDouble
    3.1.55 IsFalse .
    3.1.56 IsHexBinary
    3.1.57 IsInt .
    3.1.58 IsInt64
    3.1.59 IsISO8601TimeFormat .
    3.1.60 IsNull.
    3.1.61 IsNumber .
    3.1.62 IsObject
    3.1.63 IsString
    3.1.64 IsTrue.
    3.1.65 IsUint
    3.1.66 IsUint64.
    3.1.67 LoadDocumentFromFile .
    3.1.68 MemberBegin .
    3.1.69 MemberEnd
    3.1.70 NewDocument .
    3.1.71 NextArray
    3.1.72 ParseDocument .
    3.1.73 PushbackBase64Value
    3.1.74 PushbackBoolValue.
    3.1.75 PushbackDateTimeValue .
    3.1.76 PushbackDcTimeValue
    3.1.77 PushbackDoubleValue .
    3.1.78 PushbackFileTimeValue .
    3.1.79 PushbackHexBinaryValue .
    3.1.80 PushbackInt64Value.
    3.1.81 PushbackIntValue.
    3.1.82 PushbackJsonValue .
    3.1.83 PushbackNullValue
    3.1.84 PushbackStringValue
    3.1.85 PushbackUint64Value .
    3.1.86 PushbackUintValue .
    3.1.87 RemoveAllMembers
    3.1.88 RemoveArray.
    3.1.89 RemoveMember .
    3.1.90 RemoveMemberByName
    3.1.91 SaveDocumentToFile .
    3.1.92 SetArray.
    3.1.93 SetBase64
    3.1.94 SetBool
    3.1.95 SetDateTime.
    3.1.96 SetDcTime .
    3.1.97 SetDouble .
    3.1.98 SetFileTime.
    3.1.99 SetHexBinary.
    3.1.100 SetInt .
    3.1.101 SetInt64
    3.1.102 SetJson
    3.1.103 SetMaxDecimalPlaces
    3.1.104 SetNull
    3.1.105 SetObject
    3.1.106 SetString
    3.1.107 SetUint
    3.1.108 SetUint64 .
    3.2 FB_JsonDynDomParser
    3.3 FB_JsonSaxReader
    3.3.1 DecodeBase64
    3.3.2 DecodeDateTime.
    3.3.3 DecodeDcTime .
    3.3.4 DecodeFileTime
    3.3.5 DecodeHexBinary
    3.3.6 GetLastParseResult
    3.3.7 IsBase64
    3.3.8 IsHexBinary .
    3.3.9 IsISO8601TimeFormat
    3.3.10 Parse .
    3.3.11 ParseValues
    3.4 FB_JsonSaxWriter
    3.4.1 AddBase64 .
    3.4.2 AddBool .
    3.4.3 AddDateTime
    3.4.4 AddDcTime .
    3.4.5 AddDint
    3.4.6 AddFileTime
    3.4.7 AddHexBinary
    3.4.8 AddKey
    3.4.9 AddKeyBool .
    3.4.10 AddKeyDateTime.
    3.4.11 AddKeyDcTime.
    3.4.12 AddKeyFileTime
    3.4.13 AddKeyLreal .
    3.4.14 AddKeyNull .
    3.4.15 AddKeyNumber .
    3.4.16 AddKeyString
    3.4.17 AddLint.
    3.4.18 AddLreal .
    3.4.19 AddNull .
    3.4.20 AddRawArray
    3.4.21 AddRawObject
    3.4.22 AddReal
    3.4.23 AddString .
    3.4.24 AddUdint .
    3.4.25 AddUlint .
    3.4.26 CopyDocument
    3.4.27 EndArray.
    3.4.28 EndObject .
    3.4.29 GetDocument
    3.4.30 GetDocumentLength
    3.4.31 GetMaxDecimalPlaces
    3.4.32 ResetDocument
    3.4.33 SetMaxDecimalPlaces
    3.4.34 StartArray
    3.4.35 StartObject.
    3.5 FB_JsonReadWriteDataType
    3.5.1 AddJsonKeyPropertiesFromSymbol.
    3.5.2 AddJsonKeyValueFromSymbol
    3.5.3 AddJsonValueFromSymbol .
    3.5.4 CopyJsonStringFromSymbol .
    3.5.5 CopyJsonStringFromSymbolProperties
    3.5.6 GetDataTypeNameByAddress
    3.5.7 GetJsonFromSymbol .
    3.5.8 GetJsonStringFromSymbol.
    3.5.9 GetJsonStringFromSymbolProperties
    3.5.10 GetSizeJsonStringFromSymbol
    3.5.11 GetSizeJsonStringFromSymbolProperties
    3.5.12 GetSymbolNameByAddress .
    3.5.13 SetSymbolFromJson .
    3.6 FB_XmlDomParser
    3.6.1 AppendAttribute .
    3.6.2 AppendAttributeAsBool
    3.6.3 AppendAttributeAsDouble
    3.6.4 AppendAttributeAsFloat.
    3.6.5 AppendAttributeAsInt.
    3.6.6 AppendAttributeAsLint .
    3.6.7 AppendAttributeAsUint .
    3.6.8 AppendAttributeAsUlint
    3.6.9 AppendAttributeCopy.
    3.6.10 AppendChild
    3.6.11 AppendChildAsBool.
    3.6.12 AppendChildAsDouble
    3.6.13 AppendChildAsFloat
    3.6.14 AppendChildAsInt
    3.6.15 AppendChildAsLint
    3.6.16 AppendChildAsUint.
    3.6.17 AppendChildAsUlint
    3.6.18 AppendCopy .
    3.6.19 AppendNode.
    3.6.20 Attributes.
    3.6.21 AttributeAsBool
    3.6.22 AttributeAsDouble
    3.6.23 AttributeAsFloat
    3.6.24 AttributeAsInt
    3.6.25 AttributeAsLint
    3.6.26 AttributeAsUint
    3.6.27 AttributeAsUlint
    3.6.28 AttributeBegin .
    3.6.29 AttributeFromIterator.
    3.6.30 AttributeName
    3.6.31 Attributes.
    3.6.32 AttributeText .
    3.6.33 Begin
    3.6.34 BeginByName
    3.6.35 Child.
    3.6.36 ChildByAttribute
    3.6.37 ChildByAttributeAndName
    3.6.38 ChildByName
    3.6.39 Children .
    3.6.40 ChildrenByName
    3.6.41 Compare .
    3.6.42 CopyAttributeText .
    3.6.43 CopyDocument
    3.6.44 CopyNodeText
    3.6.45 CopyNodeXml
    3.6.46 FirstNodeByPath
    3.6.47 GetAttributeTextLength.
    3.6.48 GetDocumentLength.
    3.6.49 GetDocumentNode
    3.6.50 GetNodeTextLength .
    8 Version: 1.7 TE1000
    3.6.51 GetNodeXmlLength .
    3.6.52 GetRootNode.
    3.6.53 InsertAttributeCopy
    3.6.54 InsertAttribute .
    3.6.55 InsertChild.
    3.6.56 InsertCopy
    3.6.57 IsEnd
    3.6.58 LoadDocumentFromFile
    3.6.59 NewDocument .
    3.6.60 Next .
    3.6.61 NextAttribute .
    3.6.62 NextByName
    3.6.63 NextSibling
    3.6.64 NextSiblingByName
    3.6.65 Node .
    3.6.66 NodeAsBool
    3.6.67 NodeAsDouble
    3.6.68 NodeAsFloat .
    3.6.69 NodeAsInt .
    3.6.70 NodeAsLint .
    3.6.71 NodeAsUint.
    3.6.72 NodeAsUlint.
    3.6.73 NodeName
    3.6.74 NodeText
    3.6.75 ParseDocument
    3.6.76 RemoveChild .
    3.6.77 RemoveChildByName .
    3.6.78 SaveDocumentToFile .
    3.6.79 SetAttribute .
    3.6.80 SetAttributeAsBool
    3.6.81 SetAttributeAsDouble
    3.6.82 SetAttributeAsFloat.
    3.6.83 SetAttributeAsInt.
    3.6.84 SetAttributeAsLint .
    3.6.85 SetAttributeAsUint .
    3.6.86 SetAttributeAsUlint.
    3.6.87 SetChild
    3.6.88 SetChildAsBool
    3.6.89 SetChildAsDouble
    3.6.90 SetChildAsFloat
    3.6.91 SetChildAsInt .
    3.6.92 SetChildAsLint .
    3.6.93 SetChildAsUint
    3.6.94 SetChildAsUlint.
    3.7 FB_JwtEncode
    4.1 ITcJsonSaxHandler
    4.1.1 OnBool.
    4.1.2 OnDint
    4.1.3 OnEndArray
    4.1.4 OnEndObject
    4.1.5 OnKey.
    4.1.6 OnLint
    4.1.7 OnLreal
    4.1.8 OnNull.
    4.1.9 OnStartArray.
    4.1.10 OnStartObject
    4.1.11 OnString.
    4.1.12 OnUdint
    4.1.13 OnUlint.
    4.2 ITcJsonSaxValues.
    4.2.1 OnBoolValue.
    4.2.2 OnDintValue .
    4.2.3 OnLintValue
    4.2.4 OnLrealValue
    4.2.5 OnNullValue
    4.2.6 OnStringValue .
    4.2.7 OnUdintValue
    4.2.8 OnUlintValue
    5.1 Tc3JsonXmlSampleJsonDataType
    5.2 Tc3JsonXmlSampleJsonSaxReader
    5.3 Tc3JsonXmlSampleJsonSaxWriter
    5.4 Tc3JsonXmlSampleJsonDomReader.
    5.5 Tc3JsonXmlSampleXmlDomReader .
    5.6 Tc3JsonXmlSampleXmlDomWriter .

    展开全文
  • 由百晓生自创知识处理库整理清洗与发布,顶级知识整理加工生产python功能库。 FB_MC_FeedTable MC_ GearInMultiMaster MC_Aborting 立即打断前动作,执行后动作 MC_AxisPara MC_BlendingHigh 以较高的速度达到前动作...

    由百晓生自创知识处理库整理清洗与发布,顶级知识整理加工生产python功能库。
    转载请注明出处
    https://blog.csdn.net/gkbxs/article/details/116654106
    在这里插入图片描述

    FB_MC_FeedTable
    MC_ GearInMultiMaster
    MC_Aborting 立即打断前动作,执行后动作
    MC_AxisPara
    MC_BlendingHigh 以较高的速度达到前动作的目标位置,然后执行后动作。
    MC_BlendingLow 以较低的速度达到前动作的目标位置,然后执行后动作。
    MC_BlendingNext 以后动作的速度达到前动作的目标位置,然后执行后动作。
    MC_BlendingPrevious 以前动作的速度达到前动作的目标 位置,然后执行后动作。
    MC_BufferMode
    MC_Buffered 等前动作执行完成,停稳后再执行后动作。
    MC_CAMACTIVATION_ASSOONASPOSSIBLE:考虑加速度和冲击在允许范围
    MC_CAMACTIVATION_ATMASTERAXISPOS:主轴绝对位置
    MC_CAMACTIVATION_ATMASTERCAMPOS: 凸轮表的主轴位置,即主轴模态
    MC_CAMACTIVATION_INSTANTANEOUS :不考虑加速度是否在允许范围
    MC_CAMACTIVATION_NEXTCYCLE:下一 凸轮表周期生效
    MC_CAM_Ref
    MC_CamAdd
    MC_CamExchange 添加、移除和更换凸轮表
    MC_CamExchange 添加、移除和更换凸轮表。 也可以使用 MC_CamIn_V
    MC_CamIn 和 MC_CamIn_V 种电子凸轮耦合功能块:
    MC_CamIn 的接口和功能比较简单,就是固定 个凸轮表
    MC_CamIn 耦合的,就不能切换凸轮表。
    MC_CamInExt
    MC_CamIn_V 是 MC_CamIn 的升级版,功能更强大,支持多个凸轮表的迭加和切换。耦合的主从轴,才能使用在线切换凸轮表的功能.
    MC_CamIn,可以实现旧版两个 FB 的功能。
    MC_CamOperationMode
    MC_CamRemove
    MC_CamScaling 修改目标凸轮表相位 Offset和比例 Scaling
    MC_CamScalingMode主从轴的缩放模式类型 通常使用默认值即可
    MC_CamScaling_V 来修改目标凸轮表
    MC_CamSwitch
    MC_CamTableSelect 从 CamTable 中定位到“位置序列数组”的内存
    MC_CamTableSelect,可以定义和装载凸轮表。
    MC_Current_Direction:当前方向, 取决于上一次运动的方向。
    MC_DefaultHoming
    MC_DigitalCamSwitc
    MC_DigitalCamSwitc 和 XFC 输出功能块
    MC_DigitalCamSwitch
    MC_DigtitalCamSwtich
    MC_Direct (* 轴不动作,直接将当前位置设置为参考点 )
    MC_ExtSetPointGenDisable
    MC_ExtSetPointGenEnable
    MC_ExtSetPointGenFeed
    MC_FIFO 中实现 Fifo 通道的调用和控制:
    MC_FlyingSawCharacValues;
    MC_ForceCalibration (
    轴不动作,也不设置位置,直接置位已寻参标记*)
    MC_GearIn
    MC_GearIn 和 MC_GearInDyn 耦合时主从轴都是静止的,所以不需要加减速。
    MC_GearIn 类似, MC_GearInVelo 的齿轮比也是固定为 Execute 上升沿瞬间分子(RatioNumerator,实数)和分母(RatioDenominator,整 数)的比值,耦合过程中修改分子
    MC_GearIn 速比由整数型分子分母来确定
    MC_GearInDyn 的速比还可以动态修改。
    MC_GearInDyn 直接给定实数型
    MC_GearInFloat MC_GearIn MC_GearIn 可以接受浮点型的速度比例
    MC_GearInMultiMaster 耦合和修改齿轮比时,加减速都只受从轴的 Dynamic 参数限制。
    MC_GearInPos 可以指定耦合时的主从轴.
    MC_GearInPos 和 MC_GearInVelo,飞锯库的齿轮耦合功能块,二者都允许在 FB 中限制从轴的速度和加减速度
    MC_GearInPos 飞锯功能块,把一个从轴作为飞锯,以位置同步方式耦合到主轴。飞锯的同步过程有位置同步和速度同步两种。
    MC_GearInVelo 把一个从轴作为飞锯,以速度同步方式耦合到主轴。要求从轴 “尽快”达到给定的速度比。在耦合时,如果主轴是 静止的,那么从轴也必须是静止的。
    MC_GearInVelo飞锯同步特征值 FlyingSawCharacValues
    MC_GearOutExt
    MC_GearOut飞锯从轴的解耦。解耦后, 从轴保持解耦时刻的速度
    MC_Halt 解耦并停止。暂停。可以让一个轴正常停止。与 MC_Stop 的区别在于 MC_Stop 一旦触发,在它完全停止之前
    MC_Home 寻参功能块
    MC_HomingMode
    MC_JOG 点动功能块可执行正向点动(JogForward)或者反向点动(JogBackward)
    MC_JOGMODE_CONTINOUS 连续点动, JogForward 或者 JogBackward 为持
    MC_JOGMODE_INCHING 渐进点动。 JogForward 或者 JogBackward 上升沿
    MC_JOGMODE_INCHING_MODULO:渐进点动。
    MC_JOGMODE_STANDARD_FAST
    MC_JOGMODE_STANDARD_SLOW
    MC_Jog点动
    MC_MotionFunctionPoint
    MC_MotionFunctionType
    MC_MotionPointType; (* 标准的关键点此值取 即 Motion
    MC_Move
    MC_MoveAbsolute
    MC_MoveAbsolute MC_MoveRelative MC_MoveAdditive MC_MoveModulo定位
    MC_MoveAbsoluteOrRestart
    MC_MoveAbsolute绝对定位
    MC_MoveAdditive
    MC_MoveModulo 的功能块,在 Execute 上升沿,启动 NC 轴以 Velocity 速度,
    MC_MoveModulo 的当前方向、最短路径、反方向、正方向动作到模长内指定位置
    MC_MoveModulo可以从静止或者运动状态
    MC_MoveModulo模长内定位
    MC_MoveRelative相对定位
    MC_MoveRelative走相对距离)。
    MC_MoveSuperImposed 的参数设置:
    MC_MoveSuperImposedExt 位置补偿的功能块 的关键参数是补偿距离 Distance、最大速
    MC_MoveVelocity
    MC_MoveVelocity MC_Jog
    MC_MoveVelocity指正向或者反向均速运动。启动之后,如果输入变量 Velocity 发生变化, NC 轴的速度也不会变
    MC_Negative_Direction: 反向 电机会反转
    MC_NewPos
    MC_NewPosAndVelo
    MC_OrientedStop
    MC_Positive_Direction: 正向 电机会正转
    MC_Power 使能
    MC_ReadActualPosition读取当前位置
    MC_ReadBoolParameter,
    MC_ReadFlyingSawCharacteristics 用于读取同步阶段的
    MC_ReadFlyingSawCharacteristics访问从轴同
    MC_ReadMotionFunction 读回来的结果放 MC_CAM_REF 中。
    MC_ReadMotionFunctionPoint 读回来的结果放在 Point
    MC_ReadMotionFunctionValues 读回来的结果放在 MC_CAM_REF 中。
    MC_ReadMotionFunction读多个点
    MC_ReadParameter
    MC_ResetCalibration
    MC_Reset复位功能块
    MC_SetActualPosition MC_SetPosition
    MC_SetPosition
    MC_SetPositionOnTheFly MC_SetPosition
    MC_SetPosition设置当前位置
    MC_SetReferenceFlag MC_Home
    MC_Shortest_Way: 最短距离 电机会正转要 ,反转要 ,取最短距离
    MC_Stop停止
    MC_TABLETYPE_CHARACTERISTIC
    MC_TABLETYPE_EQUIDISTANT := , (* (nm)主轴位置等差递增)
    MC_TABLETYPE_MOTIONFUNCTION
    MC_TABLETYPE_NONEQUIDISTANT
    MC_TableType 型的枚举
    MC_TableType; (凸轮表的类型)
    MC_TouchProbe 和 MC_TouchProbe_V_:两个探针功能块
    MC_TouchProbe_V_ 是它的增强版本,可以连续捕捉,无须重复激活。
    MC_TouchProbe_V_ 虽然支持连续捕捉,但是同时也需要编码器或者伺服驱动侧也支
    MC_WriteBoolParameter
    MC_WriteParameter
    PRG_MC_FeedTable 封装成 FB_MC_FeedTable,
    PRG_MC_FeedTable 的代码区可以看 Axis X 和 Axis Y 所对应的轴 、轴 已经使能了。
    PRG_MC_FeedTable 的局部变量中声明以下变量或者功能块实例。
    Pro_MC_FeedTable 也只提供子程序调 用
    Pro_MC_PTP 中的 MC 功能块数组配合 For 语句来完成的。
    由百晓生中文知识处理库发布!

    展开全文
  • TC2的程序是在TC3的基础上稍作调整,只说明不同点,请先看TC3的。 TC2中的一个原本是AXIS_REF类型变量被拆成了两个... TC2中插入一个FB功能块是先添加一个Box,然后在方框中输入FB的函数名  接着插入
    TC2的程序是在TC3的基础上稍作调整,只说明不同点,请先看TC3的。 
    

    TC2中的一个原本是AXIS_REF类型变量被拆成了两个(PLCTONC_AXLESTRUCT和NCTOPLC_AXLESTRUCT结构体类型),并且都需要分别跟NC配置中的轴的FromPlc和ToPlc绑定

     

    TC2中插入一个FB功能块是先添加一个Box,然后在方框中输入FB的函数名

     

    接着插入输出引脚是右击之后Assign

     

    除此之外还有一些别的区别例如一个功能块,输入输出引脚都不完全一样(TC3可以认为在TC2的基础上作了补充和完善)

     

    在人机界面的设计上也不一样(TC3更加好看和好用一点)

     

    但是最终执行都是一样的(TC2把PLC编程和NC的配置分开了,TC3放到了整个项目一起),这里不详细介绍TC2的配置情况,只是因为NC的配置非常重要,引入TC2作为区别和对比将有助于加深理解,读者在完整学会TC3的用法之后再上手TC2是很快的,后续会有教程专门介绍TC2和TC3的不同之处

     

     

    更多教学视频和资料下载,欢迎关注以下信息:

    我的优酷空间:

    http://i.youku.com/acetaohai123

     

    我的在线论坛:

    http://csrobot.gz01.bdysite.com/

     

    问题交流:

    QQ:910358960

    邮箱:acetaohai123@163.com

     

     

     

    展开全文
  • 追锯功能块,beckhoff追锯的各项参数和模式。倍福关于追锯功能块所有相关资料的翻译和整理,以及自己对追锯的理解!
  • 算是基础知识),这里NC就是控制伺服电机的部分(当然还不是实际的NC轴,是虚拟轴,但是用到的函数都是一样,可以为后面的实际应用做准备),既然用到了贝福的NC功能,就要添加对应的库  首先添加一个让轴上...
  • 2.调用库文件Tc2_Mc2中的MC_Power功能块控制实际的电机。 3.运行后电机的确使能了,但是MC_Power功能块输出引脚“status”并没有由FALSE变成TRUE(也就是说它并不认为使能成功了)。 4.大概2~3s后Error引脚报错,...
  • 倍福BECKHOFF PLC:自动化编程笔记

    千次阅读 多人点赞 2020-03-29 22:10:07
    一、编程基础 - 掌握核心概念,降低入门难度 ...界面区域功能 1、PRG 6种PLC语言 ACT子程序 2、FUNCTION 可重入问题(如何开启多线程) 3、FB 类似高级语言的类 4、其他入口 Data Types(...
  • 倍福PLC PID 控制概述 PID 控制是应用于流量、速度、风量、温度、压力、配比等的过程控制的控制方式。将控制对象保持为所设置的值的所 需配置如下图所示: 在 PID 控制处理方法中,通过预先设置的设定值(SV)和从 A...
  • 本文档主要介绍了PCS7系统APL高级过程库中的斜坡功能块块RAMP_P的简单功能和使用,有兴趣的同学,欢迎下载!温馨提示:文档只是对通用功能使用进行的介绍,如需要详细的介绍,请勿下载!
  • 100 3.11功能块SR 101 3.11.1功能描述101 3.11.2信号描述102 3.11.3TwinCAT System Manager中的FB SR配置103 3.11.4 TwinCAT 3中的显示104 3.12功能块TON 105 3.12.1功能描述105 3.12.2信号描述106 3.12.3TwinCAT ...
  • 3功能块25 3.1 功能块和25 3.1.1功能说明25 3.1.2信号说明26 3.1.3TwinCAT System Manager中的FB和配置28 3.1.4 TwinCAT 3中的显示29 3.2 功能块或30 3.2.1功能描述30 3.2.2信号描述31 3.2.3FB或TwinCAT System ...
  • 倍福运动控制

    2019-01-06 13:02:20
    介绍倍福运动控制主要NC功能块介绍
  • 倍福BECKHOFF PLC:自动化编程笔记(一)对应的程序实例,实现流程顺序控制 - 流水灯。借助CASE OF语法(类似与C语言的 switch case) + 信号上升沿功能块
  • 假如我定义了一个MC_Power的标准功能块,我想知道它对应的ST语言  在MAIN(ST语言界面下)右击,Input Assistant,然后找到Standard Function Blocks,找到TcMC.lib下面的对应模块(TwinCAT的所有标准模块都...
  • 倍福EtherCAT终端Modbus TCP/UDP 总线耦合器手册. EK系列总线耦合器允许EtherCAT终端在传统的总线系统中工作. 其中 EK9000 支持 Ethernet Modbus TCP/UDP总线.
  • 对于相对编码器类型轴(包括虚拟轴),可以使用贝福提供的找原点功能块MC_Home。  HomingMode是指机器在往前跑的时候(30单位/s的默认速度),当碰到阻挡,则会有一个布尔值从FALSE改成TRUE,此时认为超过了...
  • 轴不再采用循环轴接口的设定值规范(轴.PlcToNc.ExtSetPos,ExtSetVelo,ExtSetAcc和ExtSetDirection)外部设定点生成器通常是一个PLC功能块,用于计算轴的循环设定值,因此可以替代NC轴中的内部设定点生成器。...
  • 现场调试机器,客户在连接中间插入四个伺服,希望不重新全部扫描的情况下,更新配置... 扫描后的配置 再激活配置之后,即可看到手动添加的配置成功体现在参数中了,这是只要连接NC轴,写PLC程序即可实现轴的运动功能
  • 倍福TwinCAT3实训文档

    2020-09-24 11:58:08
    1.TC3安装须知 2.TC3简单程序及功能块 3.TC3运动控制 4.TC3高级语言程序开发 5.TC3HMI程序开发指南 以上部分包含详细文档介绍与例程
  • 当时提出的解决方案是寻找NC中发送脉冲信号的功能块,经过寻找,找到了一个疑似功能块,这个块的名字是 FB_CTRL_SERVO_MOTOR_OUT, 它在倍福infosys中的描述为 This function block generates pulses with which ...
  • 倍福PLC串口模块使用

    千次阅读 热门讨论 2019-03-08 14:04:23
    2、将功能块的调用Mode修改: 修改为: 此外,COM口设置如下,另外,该COM口不需要扫描,是直接添加的 此处设置硬件类型为232或485,注意:倍福PLC的232和485只能从硬件选型上确定,此处软件选择作用不大 .....
  • 由百晓生知识处理引擎整理,机翻内容 4.2.1.1.1 FB_CTRL_GET_SYSTEM_TIME(仅适用于PC系统) 此函数块读取当前Windows系统时间,使...该功能块允许将系统加载分布在多个控制循环上,这些控制循环a)使用相同的tCtrlCyc

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 181
精华内容 72
关键字:

倍福功能块