基于CODESYS平台的ANY数据类型自动生成Buffer序列-CODESYS V3-酷德网 - CoDeSys软件教程下载,CoDeSys工控资讯门户 

酷德网

HSC6490-cn中国制造,中国芯~
查看: 2557|回复: 0

基于CODESYS平台的ANY数据类型自动生成Buffer序列

[复制链接]

该用户从未签到

发表于 2023-9-22 21:57:57 | 显示全部楼层 |阅读模式
什么场景会用到Buffer序列?
      Buffer序列一般用在两个控制器或者2个进程之间的通讯。标准的通讯协议库会自动生成Buffer序列,想要使用自定义协议时,就需要自创建Buffer序列。
     下面就是基于CODESYS平台的ANY数据类型自动生成Buffer序列源代码Function。可以利用该功能Function方便连续的生成Buffer序列。
  1. FUNCTION FC_MakeBuffer : BOOL
  2. VAR_INPUT
  3.         anyInput  : ANY;
  4.         pInPos    : POINTER TO DINT;
  5.         pInBuffer : POINTER TO ARRAY[0..255] OF BYTE;
  6.     xInVariableEn     : BOOL;       
  7.         pInVariableCount  : POINTER TO INT;
  8. END_VAR
  9. VAR
  10.         i         : DINT;       
  11.         pTemp1    : POINTER TO BYTE;
  12.         pTemp2    : POINTER TO BYTE;
  13.         VariableProperty : DataProperty1;       
  14. END_VAR
  15. VariableProperty.diLength:= anyInput.diSize;
  16. VariableProperty.pPostion := anyInput.pValue;
  17. pTemp1 := VariableProperty.pPostion;
  18. pTemp2 := pInBuffer + DINT_TO_DWORD(pInPos^);
  19. FOR i := 0 TO VariableProperty.diLength-1 BY 1 DO       
  20.         pTemp2^ := pTemp1^;
  21.         pTemp1  := pTemp1 + 1;
  22.         pTemp2  := pTemp2 + 1;
  23. END_FOR;
  24. pInPos^ := pInPos^ + VariableProperty.diLength;
  25. IF xInVariableEn THEN
  26.    pInVariableCount^ := pInVariableCount^ + 1;
  27. END_IF;  
复制代码
注意:所有变量都是最低位在左侧,做高位再右侧。字符串的话,最左侧字符就在最左侧。
+10
不赞一个?
打赏鼓励一下!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则


顶部qrcode底部
关注酷德网订阅号,获取更多资讯!

QQ|Archiver|手机版|小黑屋|酷德论坛 ( 苏ICP备16065247号-1 )|网站地图

GMT+8, 2026-11-9 03:46 , Processed in 0.342352 second(s), 43 queries .

酷德网

© 2001-2013 Hicodesys. 技术支持 by 酷德网

快速回复 返回顶部 返回列表