ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:176.44KB ,
资源ID:24294672      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24294672.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(COMLIB 通讯程序示例.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

COMLIB 通讯程序示例.docx

1、COMLIB 通讯程序示例1. COMLIB 通讯程序示例1. 1 PC ( COM1 和 COM2 ) 按字节发送 - 接收全局变量VAR_GLOBAL (* Test COM1 at PC Interface COM1 *) COM1InData AT %IB100 : PcComInData; COM1OutData AT %QB100 : PcComOutData; COM1RxBuffer : ComBuffer; COM1TxBuffer : ComBuffer; (* Test COM2 at PC Interface COM2 *) COM2InData AT %IB200 :

2、 PcComInData; COM2OutData AT %QB200 : PcComOutData; COM2RxBuffer : ComBuffer; COM2TxBuffer : ComBuffer;END_VAR后台程序:ComBackgroundPROGRAM ComBackgroundVAR COM1Control : PcComControl; COM2Control : PcComControl;END_VARCOM1Control( COMin := COM1InData , COMout := COM1OutData , TxBuffer := COM1TxBuffer ,

3、 RxBuffer := COM1RxBuffer );COM2Control( COMin := COM2InData , COMout := COM2OutData , TxBuffer := COM2TxBuffer , RxBuffer := COM2RxBuffer );测试程序:TESTCOM1PROGRAM TESTCOM1VAR SendData : ARRAY0.9 OF BYTE := 1,2,3,4,5,6,7,8,9,10; RecData : ARRAY0.9 OF BYTE; COM1Send : SendByte; COM2Rec : ReceiveByte; D

4、elay : TON; I : BYTE; Index : BYTE := 0;END_VAR(* 按字节方式发送数据到 COM1 *)Delay(IN := TRUE,PT := T#100MS);IF Delay.Q THEN Delay(IN := FALSE); FOR i := 0 TO 9 DO COM1Send( SendByte := SendDatai, TxBuffer := COM1TxBuffer); END_FOR FOR i := 0 TO 9 DO SendDatai := SendDatai + 1; END_FOREND_IF(* 按字节方式从 COM2 接收

5、数据 *)COM2Rec( RxBuffer := COM2RXbuffer);IF COM2Rec.ByteReceived THEN RecDataIndex := COM2Rec.ReceivedByte; Index := Index + 1; IF Index = SIZEOF(RecData) THEN Index := 0; END_IFEND_IF主程序:MAINPROGRAM MAINVAREND_VARTESTCOM1;1.2 PC ( COM1 和 COM2 ) 按字符串发送-接收全局变量 : 同上后台程序:ComBackground 同上测试程序:TESTCOM1PRO

6、GRAM TESTCOM1VAR SendString : STRING := $Hello, welcome to BECKHOFF !$; RecString : STRING;(注:可变换为无 Prefix 和 Suffix 示例,应加:TIMEOUT := T#80MS ) Prefix : STRING := $; Suffix : STRING := $; TimeOut : TIME := T#0MS; Reset : BOOL; COM1SString : SendString; COM2RString : ReceiveString; Delay : TON;END_VAR(

7、* 按字符串方式发送数据到 COM1 *)Delay(IN := TRUE,PT := T#100MS);IF Delay.Q THEN Delay(IN := FALSE); COM1SString( SendString := SendString, TxBuffer := COM1TxBuffer);END_IF(* 按字符串方式从 COM2 接收数据 *)COM2RString( Prefix := Prefix, Suffix := Suffix, Timeout := TimeOut, Reset := Reset, ReceivedString := RecString, RxB

8、uffer := COM2RxBuffer);主程序:MAINPROGRAM MAINVAREND_VARTESTCOM1;1.3 PC ( COM1 和 COM2 ) 按数据发送-接收全局变量 : 同上后台程序:ComBackground 同上测试程序:TESTCOM1PROGRAM TESTCOM1VAR Prefix : ARRAY0.1 OF BYTE := 16#0D,16#0A; Suffix : ARRAY0.1 OF BYTE := 16#0D,16#0A; SendData : ARRAY0.9 OF BYTE := 16#0D,16#0A,1,2,3,4,5,6,16#0D

9、,16#0A; RecData : ARRAY0.9 OF BYTE; COM1SData : SendData; COM2RData : ReceiveData; Delay : TON; Reset : BOOL; i : BYTE;END_VAR(* 按任意类型数据方式发送数据到 COM1 *)Delay(IN := TRUE,PT := T#100MS);IF Delay.Q THEN Delay(IN := FALSE); COM1SData( pSendData := ADR(SendData), Length := SIZEOF(SendData), TxBuffer := CO

10、M1TxBuffer); FOR i := 2 TO 7 DO SendDatai := SendDatai + 1; END_FOREND_IF(* 按任意类型数据方式从 COM2 接收数据 *) COM2RData( pPrefix := ADR(Prefix), LenPrefix := SIZEOF(Prefix), pSuffix := ADR(Suffix), LenSuffix := SIZEOF(Suffix), pReceiveData := ADR(RecData), SizeReceiveData := SIZEOF(RecData), Timeout := T#50MS

11、, Reset := Reset, RxBuffer := COM2RxBuffer);主程序:MAINPROGRAM MAINVAREND_VARTESTCOM1;1.4 ASC 功能说明主程序:MAINPROGRAM MAINVAR ascout : BYTE; str : STRING := a;END_VARascout := ASC(str);1.5 CHR 功能说明主程序:MAINPROGRAM MAINVAR chrout : STRING; cinp : BYTE := 48;END_VARchrout := CHR(cinp);1.6 KL6001 串行数据通讯全局变量 :V

12、AR_GLOBAL Kl6InData AT %IB0 : KL6inData5B; Kl6OutData AT %QB0 : KL6outData5B; RxBuffer : ComBuffer; TxBuffer : ComBuffer;END_VAR主程序:PROGRAM MAINVAR ComControl : KL6Control5B; Timer : TON; Receive : ReceiveByte; Send : SendByte; Rb : BYTE; Sb : BYTE;END_VAR ComControl( COMin:=KL6InData , COMout:=KL6O

13、utData , TxBuffer:=TxBuffer , RxBuffer:=RxBuffer ); Timer(IN:=TRUE , PT:=T#1S ); IF Timer.Q THEN (* 每秒发送一个字符 *) IF Sb = 0 THEN Sb := 64; END_IF Sb := Sb + 1; IF Sb 90 THEN Sb := 64; END_IF Send(SendByte:=Sb , TxBuffer:=TxBuffer ); Timer(IN:=FALSE ); END_IF Receive( RxBuffer:=Rxbuffer ); IF Receive.B

14、yteReceived THEN (* 获取接收的字符 *) Rb := Receive.ReceivedByte; (* 其它程序处理 . *) END_IF1.6 KL6021 KL6021 RS-485 之间的串行数据通讯1.6.1 发送方:全局变量 :VAR_GLOBAL KL6021_1InData AT %IB0 : KL6inData5B; KL6021_1OutData AT %QB0 : KL6outData5B; KL6021_1RxBuffer : ComBuffer; KL6021_1TxBuffer : ComBuffer;END_VAR主程序:PROGRAM MAI

15、NVAR KL6021_1ComControl : KL6Control5B; KL6021_1Send : SendByte; SendData : ARRAY0.9 OF BYTE := 10(16#68); Index1 : BYTE := 0; T01 : TON; I : BYTE; KL6021_1Receive : ReceiveByte; ReceiveData : ARRAY0.19 OF BYTE := 20(16#0); Index : BYTE := 0;END_VARKL6021_1ComControl( COMin := KL6021_1InData, COMout

16、 := KL6021_1OutData, RxBuffer := KL6021_1RxBuffer, TxBuffer := KL6021_1TxBuffer);(* = KL6021_1 Send Data = *)IF NOT KL6021_1Send.Busy THEN KL6021_1Send( SendByte := SendDataIndex1, TxBuffer := KL6021_1TxBuffer); Index1 := Index1 + 1; IF Index1 = SIZEOF(SendData) THEN Index1 := 0; END_IFEND_IFT01( IN

17、 := NOT T01.Q,PT := T#800MS);SendData0 := 16#FF;SendData1 := 16#FF;SendData9 := 16#0D;IF T01.Q THEN FOR i := 2 TO 8 DO SendDatai := SendDatai + i; END_FOREND_IFKL6021_1Receive( RxBuffer := KL6021_1RXbuffer);IF KL6021_1Receive.ByteReceived THEN ReceiveDataIndex := KL6021_1Receive.ReceivedByte; Index

18、:= Index + 1; IF Index = SIZEOF(ReceiveData) THEN Index := 0; END_IFEND_IF%QB6 := SendData2;1.6.2 接收方:全局变量 :VAR_GLOBAL KL6021_2InData AT %IB0 : KL6inData5B; KL6021_2OutData AT %QB0 : KL6outData5B; KL6021_2RxBuffer : ComBuffer; KL6021_2TxBuffer : ComBuffer;END_VAR主程序:PROGRAM MAINVAR KL6021_2ComContro

19、l : KL6Control5B; KL6021_2Receive : ReceiveByte; ReceiveData : ARRAY0.19 OF BYTE := 20(16#0); Index : BYTE := 0;END_VARKL6021_2ComControl( COMin := KL6021_2InData, COMout := KL6021_2OutData, RxBuffer := KL6021_2RxBuffer, TxBuffer := KL6021_2TxBuffer);(* = KL6021_2 receive Data = *)KL6021_2Receive( R

20、xBuffer := KL6021_2RXbuffer);IF KL6021_2Receive.ByteReceived THEN ReceiveDataIndex := KL6021_2Receive.ReceivedByte; Index := Index + 1; IF Index = SIZEOF(ReceiveData) THEN Index := 0; END_IFEND_IF2. Modbus RTU 通讯2.1 PC 作 Modbus RTU 从站全局变量:VAR_CONFIG MAIN.MB.Port.IO.out AT %QB0 : ModbusPcComOutData;

21、MAIN.MB.Port.IO.in AT %IB0 : ModbusPcComInData;END_VAR主程序:PROGRAM MAINVAR MB1 : ModbusRtuSlave_PcCOM; Input AT %IW100 : ARRAY 0.9 OF WORD; Output AT %QW100 : ARRAY 0.9 OF WORD; Memory AT %MW100 : ARRAY 0.9 OF WORD; ErrorID : Modbus_Errors;END_VARTwinCAT 系统管理器链接:略2.2 PC 作 Modbus RTU 主站示例程序参见:Modbus R

22、TU 软件说明2.3 BC 作 Modbus RTU 主站示例程序参见:Modbus RTU 软件说明2.4 BC 作 Modbus RTU 从站示例程序参见:Modbus RTU 软件说明2.5 PC 作 Modbus RTU 主站,BC7300 作从站示例程序2.5.1 PC 机程序全局变量:VAR_CONFIG MAIN.MB.Port.IO.out AT %QB0 : ModbusPcComOutData; MAIN.MB.Port.IO.in AT %IB0 : ModbusPcComInData;END_VAR主程序:PROGRAM MAINVAR MB1 : ModbusRtuM

23、aster_PcCOM; ReadVal : ARRAY0.4 OF WORD; UnitID : BYTE := 11; Quantity : WORD := 2; MBAddr : WORD := 0; cbLength : UINT := 4; bExecute : BOOL; bBusy : BOOL; Error : BOOL; ErrorID : MODBUS_ERRORS; cbRead : UINT;END_VARTwinCAT 系统管理器链接:略2.5.2 BC7300 测试程序Blink 程序:PROGRAM BlinkVAR Timer1 : TON; Timer2 :

24、TON; fbCounter1 : CTU; fbCounter2 : CTD;END_VAR主程序:PROGRAM MAINVAR bInput AT %IX0.0 : BOOL;END_VARIF NOT bInput THENBlink;%QX0.1 := TRUE;ELSE%QX0.1 := FALSE;END_IF2.6 PC 与 BC8000 / BK8000 通讯程序:略2.7 ADS 通讯程序:略3. PID 控制示例:3.1 惯性环节测试:PROGRAM MAINVAR fbPT1 : FB_P_T1; bInit : BOOL := TRUE; fCycleTime : L

25、REAL := 0.01; Kp : LREAL := 1.0; T1 : LREAL := 5.0; fVal : LREAL := 80.0; fOut : LREAL;END_VAR3.2 BCxxxx PID 测试:3.2.1 过程对象仿真:FUNCTION_BLOCK SIMUVAR_INPUT Inp : REAL;END_VARVAR_IN_OUT Index : BYTE; Buffer : ARRAY0.9 OF REAL;END_VARVAR_OUTPUT Out : REAL;END_VARVAR i : BYTE; Sum : REAL;END_VARIF (Index

26、 9) OR (Index 0) THEN Index := 0;END_IFBufferIndex := Inp;Index := Index + 1;Sum := 0;FOR i := 0 TO 9 DO Sum := Sum + Bufferi;END_FOROut := Sum / 10.0;3.2.2 测试程序:TESTPROGRAM TESTVAR SIMU1 : SIMU; Vinp : REAL ; Index : BYTE := 0; Buffer : ARRAY 0.9 OF REAL; Vout : REAL; PID1 : CtrlStandardPID; bInit

27、: BOOL := TRUE; Vset : REAL := 50.0; fKp : REAL := 0.8; fTn : REAL := 0.28; nErrorStatus : DINT; bMax AT %QX0.0 : BOOL; bMin AT %QX0.1 : BOOL; bARW : BOOL; conv AT %QB1 : BYTE;END_VAR3.2.3 主程序:MAINPROGRAM MAINVAREND_VARTEST;3.3 温度控制示例3.3.1 过程对象仿真:FUNCTION_BLOCK FB_ProcessVAR_INPUT y : LREAL; Ta : LR

28、EAL; xOffset : LREAL; bInit : BOOL; bNoise : BOOL;END_VARVAR_OUTPUT x : LREAL;END_VARVAR KP1 : LREAL := 1.0; KP2 : LREAL := 1.0; T11 : LREAL := 1.0; T12 : LREAL := 10; iDeadTime : INT := 0; StreckeTeil1 : FB_P_T1; StreckeTeil2 : FB_P_T1; StreckeDeadtime : FB_DeadTime; StreckeNoise : DRAND;END_VARStreckeTeil1( bInit := bInit , fCycleTime := Ta, Kp

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1