codesys标准函数说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

codesys标准函数说明
一、标准库函数 Standard Library
标准库函数就是STANDARD.LIB中的一些常用的函数。

1. 1双稳功能块 Bistable Function Blocks 1.1.1 SR功能块
功能描述:
本功能块是对变量进行置位与复位。

也就是说等同与PLC中的SET与RESET命令。

当SET1为TRUE是则输出Q1置位,值为TRUE并保持。

当RESET为TRUE时复位,值为FALSE并保持。

注意:当SET1与RESET同时为TRUE时输出为FALSE。

(RS
功能块此时为TRUE)
功能块如下图:
输入: SET1,BOOL型
RESET,BOOL型
输出: Q1,BOOL型
1.1.2 RS功能块
功能描述:
本功能块的主要功能同SR块。

也是用来实现置位与复位的功能。

当SET为
TRUE是则输出Q1置位,值为TRUE并保持。

当RESET1为TRUE时复位,值为FALSE
并保持。

注意:当SET与RESET1同时为真时输出为TRUE。

(SR功能块此时为FALSE) 功能块如下图:
输入: SET,BOOL型
RESET1,BOOL型
输出: Q1,BOOL型
1.1.3 SEMA功能块
功能描述:
本功能块的主要功能同SR块。

也是用来实现置位与复位的功能。

当CLAIM为TRUE时输出为TRUE。

当RELEASE为TRUE时输出为FALSE。

当两者同是为TRUE是输出为FALSE。

本功能块与SR以及RS功能块的最大的不同就是本功能块是同过一个内部变量X来传递值的。

语句如下:
BUSY := X;
IF CLAIM THEN X:=TRUE;
ELSE IF RELEASE THEN BUSY := FALSE; X:= FALSE;
END_IF
功能块如下图:
输入: CLAIM,BOOL型
RELEASE,BOOL型
输出: BUSY,BOOL型
1. 2计数器功能块Counter
1.2.1 CTD功能块
功能描述:
本功能块是自减记数器。

也就是说当信号由低电频变为高电频时进行自减记数。

其中CD是输入信号,LOAD是初始化信号,也就是说当LOAD输入为TRUE时功能块开始工作。

PV是初始化记数值,也就上通过PV来初始化CV的值。

当每有一个输入信号时,则CV减一,直到CV减到0时输出Q有输出为TRUE。

功能块如下图:
输入:CD,BOOL型
LOAD,BOOL型
PV,INT型
输出:Q,BOOL型
CV,INT型
1.2.2 CTU功能块
功能描述:
本功能块是自加记数器。

也就是说当信号由低电频变为高电频时进行加一记数。

其中CU是输入信号,RESET是复位信号,也就是说当LOAD输入为TRUE时功能块复位。

CV是当时记数值。

当每有一个输入信号时,则CV加一,直到CV加到CV=PV时输出Q有输出为TRUE。

功能块如下图:
输入:CU,BOOL型
RESET,BOOL型
PV,INT型
输出:Q,BOOL型
CV,INT型
1.2.3 CTUD功能块
功能描述:
本功能块是一个可以进行自减也可以进行自加的功能块,也就是说它整合了前面两个功能块的功能。

当输入用CU、RESET及PV,也就是说当RESET有一个信号,则CV会被初始化为0,此时功能块是用作为自加计数器,对CU进行记数。

当CV=PV时在QU端有输出。

功能同CTU功能块。

当LOAD有一个信号时,则CV会被初始化为PV,此时本功能块会被用作为一个自减计数器。

当有输入时则CV减一,当CV=0是QD有输出。

功能块如下图:
输入:CU,BOOL型
CD,BOOL型
RESET,BOOL型
LOAD,BOOL型
PV,INT型
输出:QU,BOOL型
QD,BOOL型
CV,INT型
1.3 字符串操作函数 String Functions 1.3.1 CONCAT函数
功能描述:
这是一个串连接函数。

它的主要功能就是把两个输入串连成一个串。

函数块如下图:
输入:STR1,STRING型
STR2,STRING型
输出:由于功能块与函数的区别,函数的输出即返回值是用户自己定义的变量,是STRING型。

1.3.2 DELETE函数
功能描述:
本函数是从给定的串中删除给定位置开始的字符串。

STR是输入串,LEN是要删除的
长度,POS是开始的位置。

函数块如下图:
输入:STR,STRING型
LEN,INT型
POS,INT型
输出:完成操作后的串,STRING型 1.3.3 FIND函数
功能描述:
本函数就是在给定的串中查找所要查的串的位置。

给出第个一个字符的位置。

函数块如下图:
输入:STR1,STRING型
STR2,STRING型
输出:STR2首字符在STR1中的位置。

INT型 1.3.4 INSERT函数
功能描述:
本函数就是在串的给定的位置中插入一个串。

STR2串插入STR1中的POS位置。

函数块如下图:
输入:STR1,STRING型
STR2,STRING型
POS,INT型
输出:完成操作后的串,STRING型 1.3.5 LEFT函数
功能描述:
从给定的串的左开始取字符串SIZE位。

函数块如下图:
输入:STR,STRING型
SIZE,INT型
输出:完成操作后的串,STRING型 1.3.6 LEN函数
功能描述:
计算字符串的长度。

函数块如下图:
输入:STR,STRING型
输出:给定的字符串的长度,INT型 1.3.7 MID函数
功能描述:
取给定的字符串的第POS位开始的LEN位。

函数块如下图:
输入:STR,STRING型
LEN,INT型
POS,INT型
输出:完成操作后的串,STRING型 1.3.8 REPLACE函数功能描述:
把STR1中第P位开始的L位替换成STR2。

函数块如下图:
输入:STR1,STRING型
STR2,STRING型
L,INT型
P,INT型
输出:完成操作后的串,STRING型 1.3.9 RIGHT函数
功能描述:
从给定的串的右开始取字符串SIZE位。

函数块如下图:
输入:STR,STRING型
SIZE,INT型
输出:完成操作后的串,STRING型 1.4 定时器功能块 Timer 1.4.1 RTC功能块
功能描述:
当输入为TRUE时,则把PDT的时间付给CDT同时CDT开始记时,输出Q为TRUE。

当输入EN为假是CDT为默认时间。

功能块如下图:
输入:EN,BOOL型
PDT,DT型
输出:Q,BOOL型
CDT,DT型
1.4.2 TOF功能块
功能描述:
当输入IN由高电频变为低电频时开始记时,当ET记时达到给定的时间PT 时,输出由
高电频变为低电频。

功能块如下图:
输入:IN,BOOL型
PT,TIME型
输出:Q,BOOL型
ET,TIME型
1.4.3 TON功能块
功能描述:
当输入IN由低电频变为高电频时开始记时,当ET记时达到给定的时间PT 时,输出由
低电频变高低电频。

功能块如下图:
输入:IN,BOOL型
PT,TIME型
输出:Q,BOOL型
ET,TIME型
1.4.4 TP功能块
功能描述:
使输入的信号IN保持PT时间,也就是说当有输入是输出Q就为TRUE,同时保持,
此时ET开始记时,当ET=PT是,输出变为FALSE,同时保持。

功能块如下图:
BOOL型输入:IN,
PT,TIME型
输出:Q,BOOL型
ET,TIME型
1.5 触发保持功能块 Trigger 1.5.1 F_TRIG功能块
功能描述:
输入每有一个由高电频向低电频的跳变时输出Q就有一个输出TRUE。

功能块如下图:
输入:CLK,BOOL型
输出:Q,BOOL型
1.5.2 R_TRIG功能块
功能描述:
输入每有一个由低电频向高电频的跳变时输出Q就有一个输出TRUE。

功能块如下图:
输入:CLK,BOOL型
输出:Q,BOOL型
二、模拟量标定库AnalogFilter Library
模拟量标定库就是指AnalogFilter.lib中的一些库函数。

2.1 CUT功能块
功能描述:
把输入值进行预处理,调整斜率,消除两端非线性影响。

调整效果见图:
功能块如下图:
输入:(1)Input,UINT型,要处理的信号。

(2)PAR_InputILowLimit,UINT型,用来控制输出的下限。


Input<=256*PAR_InputILowLimit时输出为0。

(3)PAR_InputHighLimit,UINT型,用来控制输出的上限。


Input>=256*PAR_InputHighLimit时输出就为0。

输出:(1)Output,UINT型,处理完的信号。

(2)LowLimit,BOOL型,Input<=256*PAR_InputILowLimit时LowLimit为TRUE。

(3)HighLimit,BOOL型,Input>=256*PAR_InputHighLimit时HighLimit为TRUE。

2.2 HP功能块
功能描述:
设置一个死区,把死区以内的值都设为0。

功能如图:
功能块如下图:
输入:(1)Input,UINT型,输入信号。

. (2)PAR_CutLimit,UINT型,死区控制参数。


Input<=65535*PAR_CutLimit%时输
出为0。

输出:(1)Output,UINT型,处理完的信号。

2.3 JoyFilter功能块
功能描述:
JoyFilter块是一个双向的模拟量标定块,也就是说它对输入的模拟量进行预处理,把输
出范围调整为-32767~32767。

功能块如下图:
输入:
(1)AnalogInput,UINT型,模拟量的输入信号。

(2)DI_JoystickDirSwitchPOS,BOOL型,正向微动开关。


PAR_DirSwitchDiagnosticNotUse为FALSE时,此时又手柄向正向移动,那么只有正向微动开关TRUE,OUTPUT才会有输出。

(3)DI_JoystickDirSwitchNEG,BOOL型,负向微动开关。


PAR_DirSwitchDiagnosticNotUse为FALSE时,此时又手柄向负向移动,那么只有负向微动开关TRUE,OUTPUT才会有输出。

(4)PAR_NegFull,UINT型,负向输入的调节参数。

取值范围:0,255,主要用于当负向输入最大时,调节参数使得OUTPUT也为负向最大。

(5)PAR_POSFull,UINT型,正向输入的调节参数。

取值范围:0,255,主要用于当正向输入最大时,调节参数使得OUTPUT也正负向最大。

(6)PAR_Zero,UINT型,零输入的调节参数。

取值范围:0,255,主要用于当手柄在零位时,即零输入时,调节参数使得OUTPUT也为零。

(7)PAR_DeadBand,UINT型死区设置参数。

取值范围:0,100。

当输入进入参数设置范围,输出为零
(8)PAR_NegProgression,SINT型。

取值范围:-100,100,设置负向输出缓冲曲线度,手柄负向输出值相对于输入值的一个响应曲线,曲线如图: 1
0.8-100%
y(x)-50%y1(x)0.60%
y2(x,progr)
y3(x,50)0.450%
y3(x,100)
0.2100%
000.20.40.60.81x
(9)PAR_PosProgression,SINT型。

取值范围:-100,100,设置正向输出缓冲曲线度,手柄正向输出值相对于输入值的一个响应曲线。

(10)PAR_MinErrorDifference,UINT型,取值范围:0,100,设置出错范围,当输入超出范围时,激活ErrorHigh或ErrorLow开关,并使输出为零。

(11)PAR_FaultOnDelay,UINT型,取值范围:0,255,过载延时。

(12)PAR_DirSwitchDiagnosticNotUse,BOOL型,此参数为TRUE时,微动开关无效,为FALSE时,微动开关有效
输出:
(1)OutputEable,BOOL型,输出使能,为TRUE是块才会有输出。

(2)Output, INT型,调整后的信号量,输出数值范围-32767,32767
(3)ErrorHigh,BOOL型,当输入超出PAR_Full +5000范围时, ErrorHigh为TRUE,输出置零。

(4)ErrorLow,BOOL型,输入超出PAR_Zero–PAR_MinErrorDifference范围,ErrorHigh为TRUE,并把输出置零。

(5)JoystickDirSwitchPOSMissing,BOOL型,正向微动开关出错时,值为TRUE。

(6)JoystickDirSwitchNEGMissing, BOOL型负向微动开关出错时,值为TRUE。

(7)JoystickDirSwitchPOSAndNEGOn,BOOL型,正、负向微动开关同时为TRUE时,值为TRUE。

2.4 JoystickAllnputOutOfRange功能块
功能描述:
本功能块是用来实现对一个模拟量输入的观察。

功能块如下图:
输入:
(1) Allnput,UINT型,需要观察的模拟量信号。

(2) PAR_PosFull,UINT型,正向最大调整参数。

(3) PAR_NegFull,UINT型,负向最大调整参数。

(4) PAR_MinErrorDifference,UINT型,设置出错范围,当输入超出范围时,
激活ErrorInputTooHighOut或ErrorInputTooLowOut开关,并使输出为零。

输出:
(1) ErrorInputTooHighOut,BOOL型,AIInput > PAR_PosFull*256 +
PAR_MinErrorDifference, 则输出为TRUE。

(2) ErrorInputTooLowOut,BOOL型,AIInput < PAR_NegFull*256-
PAR_MinErrorDifference,则输出为TRUE。

2.5 JoystikDirSwitchDiagnostic功能块
功能描述:
本功能块是用来观察手柄模拟量输入时微动开关的状态。

功能块如下图:
输入:
(1) AnalogInput,UINT型,需要观察的模拟量信号。

(2)DI_JoystickDirSwitchPOS,BOOL型,正向微动开关。


PAR_DirSwitchDiagnosticNotUse为FALSE时,此时又手柄向正向移动,那么只有正向微动
开关TRUE,OUTPUT才会有输出。

(3)DI_JoystickDirSwitchNEG,BOOL型,负向微动开关。


PAR_DirSwitchDiagnosticNotUse为FALSE时,此时又手柄向负向移动,那么只有
负向微动开关TRUE,OUTPUT才会有输出。

(4) PAR_PosFull,UINT型,正向最大调整参数。

(5) PAR_NegFull,UINT型,负向最大调整参数。

(6) PAR_Zero,UINT型,零输入的调节参数。

主要用于当手柄在零位时,即零输入时,调节参数使得OUTPUT也为零。

(7) PAR_FaultOnDelay,UINT型,过载延时。

输出:
(1)JoystickDirSwitchPOSMissing,BOOL型,正向微动开关出错时,值为TRUE。

(2)JoystickDirSwitchNEGMissing, BOOL型负向微动开关出错时,值为TRUE。

(3)JoystickDirSwitchPOSAndNEGOn,BOOL型,正、负向微动开关同时为TRUE 时,值为TRUE。

2.6 MeanValue功能块
功能描述:
对给的数组进行求平均数操作。

功能块如图:
输入:
(1) Input,UINT型,数据输入。

(2) PAR_Length,UINT型,取数长度,如值为5,则每5个值求一次平均值,并输出到output。

(3) Reset,BOOL型,复位信号,值为TRUE时不进行平均值运算。

输出:
(1) Output,UINT型
2.7 PedalFilter功能块
功能描述:
PedalFilter功能块是一个单向的标定模块,主要用于把输入模拟量进行预处理,把输出量范围调整到0,65535。

功能块如下图:
输入:
(1)AbalogInput,UINT型,来自于传感器的输入量
OutPutEnable, BOOL型,使能开关。

参数值为TRUE时,模块按当前值输出;为FALSE时,保持上一次输出值。

(2)PAR_Full,UINT型,取值范围:0,255,此参数用于调整最大输出值,当输
入最大时,使输出接近65535,小于65535。

(3)PAR_Zero,INT型,取值范围:0,255,此参数用于调整零位,使输出为零。

(4)PAR_DeadBand,UINT型,取值范围:0,100,设置死区,当输入进入参数设
置范围,输出为零。

(5)PAR_Progression,SINT型,取值范围:-100,100设置输出缓冲曲线度。

(6)PAR_MinErrorDifference,UINT型,取值范围:0,100,设置出错范围,当
输入超出范围时,激活ErrorHigh或ErrorLow开关,并使输出为零。

(7)OutputEnable,BOOL型,使能开关。

输出:
(1)Output,UINT型,取值范围:0,65535,输出信号。

(2)ErrorHigh,BOOL型,高位出错开关。

输入>PAR_Full +
PAR_MinErrorDifference
范围,ErrorHigh为TRUE,并把输出置零。

(3)ErrorLow,BOOL型,低位出错开关,输入<PAR_Zero –
PAR_MinErrorDifference范围, ErrorHigh为TRUE,并把输出置零。

2.8 RC功能模块
功能描述:
RC功能块是滤波功能块,它是对传感器信号的输入信号进行滤波。

滤波公式为:
1..y(z)x(z)0.6yz0.4
功能块如下图:
输入:
(1) Input,UINT型,输入信号。

输出:
(1) Output,UINT型,输出信号。

2.9 Scale功能块
功能描述:
Scale功能块的主要作用是把一个0~65535量变换成为两个0~65535的量,如下图:
功能块如下图:
输入:
(1)Input,UINT型
(2)PAR_Zero,INT型,设置零位,当输入为 PAR_Zero * 256时,输出为 0。

(3)PAR_PosFull,UINT型,当input值>=PAR_PosFull * 256时, 输出为65535 , PosValue 为TRUE。

(4)PAR_NegFull,UINT型,当input值<= PAR_NegFull * 256, 输出为-65535 ,PosValue 为 FALSE。

输出:
(1)Output,UINT型
(2)PosValue BOOL型,PAR_Zero * 256 > Input值,值为 TRUE;PAR_Zero * 256 < Input 值,值为 FALSE。

2.10 Transfer功能块
功能描述:
Transfer 模块用于设置缓冲曲线度,当Zero为TRUE时,输出为零,当 Full 为 TRUE,而Zero不为零时,输出为65535。

缓冲曲线度公式: Y2表正向,Y3 表负向。

x0,0.001..1progr50
3y(x)x
y1(x)x
.progry1(x)(100progr).y2(x,progr)y(x)100100
.progry1(1x)(100progr).y3(x,progr)1y(1x)100100
曲线如下图:
功能块如下图:
输入:
(1)Input,UINT型
(2)Zero,BOOL型,当Zero为TRUE时,输出为零。

(3)Full:BOOL型,当 Full为 TRUE,而Zero不为零时,输出为65535。

(4)PAR_Progression,INT型,曲线度设置参数。

(5)OutputEnable,BOOL型,当此参数值为TRUE时,模块按预定算法执行;为
FALSE时,保持上一次输出
输出:
(1)Output,UINT型
三、CANII IEC库
本库就是一些基于CAN2.0协议的一些功能块。

也就是Can2.lib中的一些函数与功能块。

3.1 CAN_II_BUFF_INIT函数
功能描述:
本功能块的主要作用是用来初始化CAN接受信息对象的。

注意
CAN_II_BUFF_INIT,必须用在CAN_II_INIT前面。

本函数是BOOL型的。

函数块如下图:
输入:
(1) ENABLE,BOOL型。

函数的使能变量。

(2) OBJ,对象号,输入数值,1~14,0是用来传输的号。

(3) ID,信息ID,11或29位ID。

(4) EXTENDED,BOOL型,用来扩展ID为29位。

输出:
(1) ERROR,BOOL型。

当OBJ超出范围时有输出。

3.2 CAN_II_GET_MSG功能块
功能描述:
当CAN总线上有新的CAN信息是接受数据。

功能块如下图:
输入:
(1) ESSAGE,用户想接受的信息。

输出:
(1) EXTENDED,BOOL型,当信息ID为29位时为TRUE。

(2) ID,信息的ID。

(3) DLC,信息的长度。

(4) DATAn,信息的数据,其中n=DLC。

(5) CUSTOMER,没有定义。

(6) NEW_DATA,BOOL型,当缓存中有新的数据时为TRUE。

3.3 CAN_II_INIT 函数
功能描述:
CAN_II设备的初始化函数。

功能块如下图:
输入:
(1) ENABLE,BOOL型,使函数可以工作。

(2) SPEED,CAN设备的波特率。

(3) GBML (GloBal Mask Long) 29bit 全球码。

(4) GBMS(GloBal Mask Short)11bit 全球码。

(5) TERM_RES CAN 的接受终端 On/Off. 3.4 CAN_II_RTR函数功能描述:
发送远距离传送请求。

本函数是 BOOL型的。

函数块如下图:
输入:
(1) ENABLE,BOOL型,使能。

(2) OBJ 选择对象号,1~13。

输出:
(1) ERROR,当输出为TRUE时,就是选择的对象好有问题。

3.5 CAN_II_STATUS功能块
功能描述:
本功能快就是用来返回 CAN设备的状态。

功能块如下图:
输入:无
输出:
(1) LEC,就是返回最近的一个出错的代码。

(2) TXOK 为TRUE时就表示传输成功。

(3) RXOK 为TRUE时就表示接受成功。

(4) EWARN_COUNT 出错记数器。

5) BUSOFF_COUNT,总线关闭记数器。

(
3.6 CAN_IIRX 功能块
功能描述:
从更高的message对象来接受新的CAN信息。

功能块如下图:
输出:
(1) EXTENDED,BOOL型,扩展信息的ID位为29位。

(2) ID ,信息ID。

(3) DLC ,数据长度 1..8。

(4) DATAn ,信息数据,其中n=DLC
(5) CUSTOMER ,没有定义。

(6) NEW_DATA ,当有新的数据到了缓存中时为TRUE。

3.7 CAN_IITX功能块
功能描述:
向更高的message对象来发新的CAN信息。

功能块如下图:
输入:
(1) ENABLE,BOOL型,使能。

(2) XTENDED,BOOL型,扩展信息的ID位为29位。

(3) ID ,信息ID。

(4) DLC ,数据长度 1..8。

(5) DATAn ,信息数据,其中n=DLC。

CAN2使用说明:
接收数据: 1(可以采用CAN_II_BUFF_INIT和CAN_II_GET_MSG配合使用,自动将CAN总线上ID和CAN_II_BUFF_INIT相同ID的数据自动放到相应的缓存里面,建议如果接收的数据有限的话使用CAN_II_BUFF_INIT和CAN_II_GET_MSG函数接收数据,CAN_II_BUFF_INIT应在CAN_II_INIT之前。

2(也可以只使用CAN_IIRX,但是如果使用CAN_IIRX函数必须判断接收回来的ID和我需要的ID是否相等,因为CAN_IIRX将总线上所有的数据都接收回来。

发送数据:使用CAN_IITX发送CAN数据由于发送缓存的限制,每一次最多可以发送8个不同CAN ID的数据,考虑到每次发送的可靠建议每次程序循环一次发送5个不同CAN ID 的数据。

四、CANOPEN IEC 库
下面主要介绍的是一些基于CANOPEN协议的库函数。

也就是在canopen.lib中的一些函数与功能块。

4.1 INIT FUNCTION
4.1.1 CANOPEN_END_INIT函数
功能描述:
本函数的主要作用是用来结束CANOPEN的初始化。

本函数是BOOL型的。

函数块如下图:
输入:
(1) ENABLE:BOOL型,使能。

4.1.2 CANOPEN_INIT_SDO函数
功能描述:
对SDO对象开始初始化。

函数图如下:
输入:
(1) ENABLE,BOOL型,使能。

2) ID,BYTE型。

(
(3) SDO_TYPE,BOOL型,FALSE时为TX型,TRUE时为RX型。

(4) SDO,BYTE 型,SDO的编号。

4.1.3 CANOPEN_START_INIT函数
功能描述:
本函数就是CANOPEN的开始初始化。

本函数是BOOL型的。

函数块如下图:
输入:
(1) ENABLE,BOOL型,使能。

4.2 PDO HANDLING FUNCTIONS
4.2.1 CANOPEN_ADD_NODE_RECEIVE_FROM函数功能描述:
增加CANOPEN接收的一个节点号(4路PDO)。

本函数是BOOL型的。

函数图如下:
输入:
(1) ENABLE,BOOL型。

使能。

(2) PDO_TYPE_SELECT,BOOL型,PDO的类型选择,FALSE 为 TPDOS型,
TRUE 为RPDOS型。

(3) ID,本PDO是节点ID的。

输出:
(1) ERROR,当ID超出范围时ERROR有输出。

4.2.2
CANOPEN_ADD_RECEIVE_PDO函数功能描述:
增加接收一路PDO。

本函数是BOOL型的。

函数块如下图:
输入:
(1) ENABLE,BOOL型。

使能。

2) PDO_TYPE_SELECT,BOOL型,PDO的类型选择,FALSE 为 TPDOS型,(
TRUE 为RPDOS型。

(3) ID,本PDO是节点ID的。

(4) PDO,BYTE型。

PDO号,1~4。

输出:
(1) RROR,当ID或PDO超出范围时ERROR有输出。

4.2.3
CANOPEN_ADD_TRANSMIT_NODE_ID函数功能描述:
虚拟CANOPEN发送的一个节点号(4路PDO)。

本函数是BOOL型的。

函数图如下:
输入:
(1) ENABLE,BOOL型。

使能。

(2) PDO_TYPE_SELECT,BOOL型,PDO的类型选择,FALSE 为 TPDOS型,
TRUE 为RPDOS型。

(3) ID,本PDO是节点ID的。

输出:
(1) ERROR,当ID超出范围时ERROR有输出。

4.2.4
CANOPEN_ADD_TRANSMIT_PDO函数功能描述:
虚拟CANOPEN发送的一路PDO。

本函数是BOOL型的。

函数图如下:
输入:
(1) EABLE,BOOL型。

使能。

(2) PDO_TYPE_SELECT,BOOL型,PDO的类型选择,FALSE 为 TPDOS型,
TRUE 为RPDOS型。

(2) ID,本PDO是节点ID的。

(3) PDO,BYTE型。

PDO号,1~4。

输出:
(1) ERROR,当ID或PDO超出范围时ERROR有输出。

4.3 SDO HANDLING FUNCTIONS
4.3.1 ADD_VERSION函数
功能描述:
把用户的串放入 CANOPEN的版本对象中去(16#100A)。

本函数是BOOL型的。

函数图如下:
输入:
(1) ENABLE,BOOL型,使能。

(2) VER,STRING型,用户定义的串。

4.3.2 CANOPEN_GET_SDO函数
功能描述:
CANOPEN接收一个SDO。

本函数是BOOL型的。

函数图如下:
输入:
(1) ENABLE,BOOL型,使能。

(2) SDO,BYTE型,SDO号。

(3) INDEX,WORD型,对象的索引号。

(4) SUBINDEX,WORD型,对象的子索引号。

(5) OFFSET,BYTE型,数据在接受时的偏移量。

4.3.3
CANOPEN_POINTER_SHARE函数功能描述:
把用户定义的变量通过CANOPEN总线,用SDO对象发在总线上。

本函数是BOOL 型的。

函数如下图:
输入:
(1) ENABLE,BOOL型,使能。

(2) OUT,DWORD型,用户要放的变量。

它是一个指针操作。

(3) Length,BYTE型,所用的对象的长度。

(4) Size,BYTE型,所用的对象的长度。

4.3.4 CANOPEN_PUT_SDO函数
功能描述:
向网络上的一个节点发送一个SDO。

本函数是BOOL型的函数块如下图:
输入:
(1) ENABLE,BOOL型,使能。

(2) SDO,BYTE型,SDO号。

(3) INDEX,WORD型,对象的索引号。

(4) SUBINDEX,WORD型,对象的子索引号。

(5) OFFSET,BYTE型,数据在接受时的偏移量。

(6) LENGTH,BYTE型,SDO对象的长度。

4.3.5 CANOPEN_SHARE函数
功能描述:
把用户定义的串通过CANOPEN总线,用SDO对象发在总线上。

本函数是BOOL 型
的。

函数块如下图:
输入:
(1) ENABLE,BOOL型,使能。

(2) OUT,STRING型,用户定义的串。

(3) Length,BYTE型,所用的对象的长度。

(4) Size,BYTE型,所用的对象的长度。

4.3.6 CANOPEN_UPDATA_SHARE函数功能描述:
把用户定义的串通过CANOPEN总线,用SDO对象发在总线上。

本函数是BOOL 型
的。

函数图如下:
输入:
(1) ENABLE,BOOL型,使能。

(2) OUT,STRING型,用户定义的串。

(3) share_no,BYTE型,哪一个要更新。

(4) subindex,BYTE型,哪一个地方要更新。

4.4 state中的函数与功能块
4.4.1 CANOPEN_DIAGNOSE功能块功能描述:
给出CAN以及程序循环的有关信息。

功能块如下图:
输出:
(1) BUS_OFF_COUNT,BYTE型,总线关闭记数。

(2) EWARN_COUNT,BYTE型,错误与警告的数量。

(3) TXBUFF_FULL_COUNT,BYTE型,记CAN设备传输缓冲区满的次数。

(4) CYCLE_TIME,BYTE型,程序最后一个循环所用的时间,单位是毫秒。

(5) HIGH_CYCLE_TIME,BYTE型,程序一个循环所用的最大时间,单位是毫秒。

(6) CTRLOOP_COUNT,DWORD型,程序循环记数。

4.4.2 CANOPEN_IS_THIS_MASTER函数
功能描述:
给出本节点是不是主节点。

本函数是BOOL型的。

Master/ Slave 对应True/False。

函数图如下:
输出:
(1) YES,BOOL型,Master/ Slave 对应True/False。

4.4.3 CANOPEN_NODE_STATE功能块
功能描述:
本功能块给出了本节点的当前操作状态信息。

功能块如下图:
输出:
(1) NODEID,BYTE型,单元本身的ID号。

(2) DUMMY,BOOL型,单元是否是虚拟的。

(3) DISCONNECTED,BOOL型,单元是否没有连接在总线上。

(4) CONNECTING,BOOL型,单元是否连接在总线上。

(5) PREPARING,BOOL型,单元是否准备好。

(6) PREPARED,BOOL型,设备停止,准备运行。

(7) OPERATIONAL,BOOL型,CanOpen 设备正在运行。

(8) ERROR,BOOL型,不是当前操作的状态,是上一个操作的状态。

4.4.4 CANOPEN_START_NODES函数
功能描述:
启动CANOPEN从设备。

函数图如下:
输入:
(1) ENABLE,BOOL型,使能。

五、CELL_CHECK_4 库
CELL_CHECK_4库就是CELL_CHECK_4.lib库文件中的功能块。

本库中就只有CELL_CHECK_4一个功能块。

功能描述:
本功能块主要是一个脉冲检测功能块。

当输入的脉冲信号必须在150个程序循环中有所改变,此时ALLUP输出为TRUE,否则为FALSE。

函数图如下:
输入:
(1) HeartB1,BOOL型,要检测的脉冲信号1。

2) HeartB2,BOOL型,要检测的脉冲信号2。

(
(3) HeartB3,BOOL型,要检测的脉冲信号3。

(4) HeartB4,BOOL型,要检测的脉冲信号4。

输出:
(1) ALLUp,BOOL型,输出检测结果的信号。

(2) HB_Send,BOOL型,功能块本身的脉冲信号。

(3) HBTime_1,USINT型,对于信号1的程序循环记数器,当本记数器的值大
于150时ALLUp输出为FALSE,否则为TRUE。

(4) HBTime_2,USINT型,对于信号2的程序循环记数器,当本记数器的值大
于150时ALLUp输出为FALSE,否则为TRUE。

(5) HBTime_3,USINT型,对于信号3的程序循环记数器,当本记数器的值大
于150时ALLUp输出为FALSE,否则为TRUE。

(6) HBTime_4,USINT型,对于信号4的程序循环记数器,当本记数器的值大
于150时ALLUp输出为FALSE,否则为TRUE。

六、HW库
HW库也就是指的是在hw_n.lib文件中的一些功能块。

6.1 CONFIGURE_PI功能块
功能描述:
脉冲输入设置,它是通过比较A,B两个通道输入的脉冲信号来给出一个正转或反转的数值。

如果只计算单脉冲输入,CONFIGURE_PI的CHANNEL A等于相应的值,CHANNEL B的值设置为16。

如果是要计算正反转,A相输入和B相输入相位差90度,则CHANNEL A
和CHANNEL B的值等于相应的CHANNEL值。

寄存器地址IW130~IW137、
IW150~IW157的值存放的是频率值,IW120~IW127、IW160~IW167存放的是计数值,在CODESYS联机监控时只显示A相输入的频率值。

高速脉冲输入端能够检测的最高频率和程序的大小有关,当程序越大,即程序循环一周需要的时间越长,脉冲输入端能够检测的频率就越低。

当实际的输入频率超过控制器能够检测的最大频率则在相应的寄存器里的频率值和极数值就会不准确。

当调用RESET_PI函数时当相应的参数值就是CHANNEL A的值时,相应的计数值就归零。

参考IW与通道号,以及输出点:
IW Channel# Pluse count IW
2023 2024 2023 2024
130 0 120
131 1 121
132 2 122
133 3 123
134 4 124
135 5 125
136 6 126
137 7 127
150 8 0 160 160
151 9 1 161 161
152 10 2 162 162
153 11 3 163 163
154 12 4 164 164
155 13 5 165 165
156 14 6 166 166
157 15 7 167 167
功能块如下图:
输入:
(1)A,BYTE型,通道A,即输入信号的通道号。

(2)B,BYTE型,通道B,即输入信号的通道号。

6.2 GET_TUPLE函数
功能描述:
这是一个系统保留函数。

是一个POINTER TO BYTE型函数。

函数图如下:
输入:
(1) ID,BYTE型,要选择的TUPLE的号。

(2) Selection,BOOL型,当为TRUE时,是选择TUPLE Set boot,当为TRUE 时,是
选择Application。

6.3 LOAD_USER_PROGRAM函数
功能描述:本函数是BOOL型的。

函数图如下:
输入:
(1) Dummy,BOOL型,
6.4 PARAMS_STORE函数
功能描述:
存储参数MW0~MW247,系统每隔100s保存一次参数到存储器。

本函数是BOOL 型的。

函数图如下:
输入:
(1) ENABLE,BOOL型,使能。

6.5 RESET_PI函数
功能描述:
脉冲输入计数复位。

功能是把脉冲输入计数器置零,软连接口CH接所要复位的通道号。

如果要用B通道脉冲上升沿复位A通道的脉冲计数值(或用A脉冲的上升沿复位B通道的计数值),则CH的数值如下公式所示:
CH=(Restting channel number+1)*16+Channel to reset
函数图如下:
输入:
(1) CH,BYTE型,要复位的通道号。

6.6 SET_AI_TYPE函数
功能描述:
设置模拟量输入端为电流输入。

本函数是BOOL型的。

2023模块的(X3.7和X3.10)脚通过此方法没有办法设置,可以通过如下方法将此脚改为电流输入
VAR
PP:POINTER TO WORD;
P3:WORD;
VAR_END
PP:=16#FFC4;
PP^:=P3 OR 16#2000;(*选择电流输入*)
PP^:=P3 AND 16#DFFF;(*选择电压输入*)
函数图如下:
输入:
(1) Value,BYTE型,通过Value的输入来设定输入针是电压输入还是电流输入。

6.7 SET_CYCLE_TIME函数
功能描述:
它是一个系统保留函数,是一个BOOL型的函数。

函数图如下:
输入:
(1) Ctime,WORD型。

6.8 SET_PWM_F函数
功能描述:
Set PWM frequency 模块用于设置输出PWM信号的频率.可设频率范围从 40到2550 Hz。

FREQ为实际的输出频率除以10,CH是需要设置相应频率的通道号(相应的PWM输出的地址号减去100)。

如果通道是在同一组里,只要设置其中一个的PWM 输出的通道号的频率,其余的通道的频率也是和其一样。

一般将系统硬件初始化设置相关的程序放在程序的初始化程序段(只是在系统上电瞬间执行一次)里。

函数图如下:
输入:
(1) FREQ,BYTE型,为实际的输出频率除以10。

(2) CH,BYTE型,CH是需要设置相应频率的通道号(相应的PWM输出的地址号
减去100)。

6.9 TEMPERATURES功能块
功能描述:
计算模块的温度,Temperature 功能模块有两路报警输出 (TEMP 1 and TEMP 2);一路模拟量输出(AD_TEMP) ,可通过下述公式计算温度值。

还有一路实际的温
度值输出(TEMP)。

3bit_per_deg = 81,263 bit_offset = 5,177 * 10
temperature = (AD_TEMP - bit_offset) / bit_per_deg
Examble:
AD_TEMP = 8470
3tempereture = (8470 - 5,177 * 10) / 81,263 = 40,519 :C
目前2023模块没有检测温度的功能,2024有,但是不能用目前的函数计算,
可以按照以下方法计算2024模块的温度:
Temperature:=DINT_TO_INT(((UINT_TO_DINT(%IW115)*8060)/65535-636)/10);
函数图如下:
输出:
(1) TEMP1,BOOL型,当温度超过73:C是输出为TRUE。

(2) TEMP2,BOOL型,当温度低于-40:C是输出为TRUE。

(3) AD_TEMP,WORD型,模拟信号输出,可通过上面公式计算实际温度值。

(4) TEMP,SINT型,输出的实际温度值。

6.9 TEST_PARAM_PARITY函数
功能描述:
测试写入的参数,是一个BOOL型的函数。

函数图如下:
输入:
(1) ENABLE,BOOL型,使能。

6.10 USER_FUNCTION函数
功能描述:
本函数也是一个系统保留的函数。

函数图如下:
输入:
(1) Dummy,BOOL型。

CheckFault功能块
功能描述:
检测输入是否有错误。

事实上本功能块是Motion功能块的一个子功能块。

功能图如下:
输入:
(1) Control,INT型,输入的控制信号。

取值范围, -32767 , 32767。

(2) FeedBacl,UINT型,比例阀反馈输入0~65535,对应的电流为0~1安培。

输出:
(1) DO_FaultInDirUp,BOOL型,
2) DO_FaultInDirDown,BOOL型, (
七、PWMControl库
PWMContro库也就是在PWMControlVoltageAmpere.lib文件中的功能块。

7.1 CheckFault功能块
功能描述:
检测输入是否有错误。

事实上本功能块是Motion功能块的一个子功能块。

功能图如下:
输入:
(3) Control,INT型,输入的控制信号。

取值范围, -32767 , 32767。

(4) FeedBacl,UINT型,比例阀反馈输入0~65535,对应的电流为0~1安培。

输出:
(3) DO_FaultInDirUp,BOOL型,
(4) DO_FaultInDirDown,BOOL型,
7.2 ControlMotionErrors功能块
功能描述:
事实上本功能块是Motion功能块的一个子功能块。

用来输出当前阻抗过高与过低的情
况。

功能块图如下:
输入:
(1) Control,INT型,控制信号输入端,-32767~+32767,一般为手柄标定后的值。

(2) PWM_Up,UINT型,上生端的PWM信号。

(3) PWM_Down,UINT型,下降端的PWM信号。

(4) FeedBack,UINT型,比例阀反馈输入0~65535,对应的电流为0~1安培。

5) PAR_DirUpMaxCurrent,UINT型,正向输出允许最大值。

即比例阀的最大开启(
电流。

(6) PAR_DirUpMinCurrent,UINT型,正向输出允许最小值。

即比例阀的最小开启
电流。

(7) PAR_DirDownMinCurrent,UINT型,负向输出允许最小值。

即比例阀的最小开
启电流。

(8) PAR_DirDownMaxCurrent,UINT型,负向输出允许最大值。

即比例阀的最大开
启电流。

(9) PAR_CoilResistance,USINT型,线圈电阻值。

(10) PAR_SupplyVoltage,USINT型,系统的供电电压。

(11) PAR_FaultOnDelay,UINT型,出错延时,0~65535ms。

(12) PAR_PercentDifferencelnImpedance,USINT型,容错范围。

输出:
(1) Do_DirUpValveImpedanceTooHigh,BOOL型,正向时,当impedance高于
(PAR_PercentDifferenceInImpedance*Impedance)/100且延时到
PAR_FaultnDelay ,该值为TRUE。

(2) Do_DirUpValveImpedanceTooLow,BOOL型,正向时,当impedance低于
(PAR_PercentDifferenceInImpedance*Impedance)/100且延时到
PAR_FaultnDelay ,该值为TRUE。

(3) Do_DirDownValveImpedanceTooHigh,BOOL型,负向时,当impedance高于
(PAR_PercentDifferenceInImpedance*Impedance)/100且延时到
PAR_FaultnDelay ,该值为TRUE。

(4) Do_DirDownValveImpedanceTooLow,BOOL型,正向时,当impedance低于
(PAR_PercentDifferenceInImpedance*Impedance)/100且延时到
PAR_FaultnDelay ,该值为TRUE。

7.3 EndAttenuation功能块
功能描述:
事实上本功能块是Motion功能块的一个子功能块。

功能块如下图:
输入:
(1) Control,INT型,输入的控制信号。

取值范围, -32767 , 32767。

(2) DI_LimitSwitchUp,BOOL型,正向限位开关,为TRUE时模块输入为
PAR_EndattenuationValue*Control/100%
(3) DI_LimitSwitchDown,BOOL型,负向限位开关,为TRUE时模块输入为
PAR_EndattenuationValue*Control/100%
(4) PAR_EndattenuationValue,UINT型,限位参数,取值范围: 0 ,100 %
(5) Enable,使能。

输出:
(1) Output,INT型。

7.4 Motion功能块
功能描述:
Motion模块主要用于控制比例阀,有两路PWM输出,控制信号范围-32767 , 32767,当控制信号在0 ,32767, PWM Up 输出,值 0,32767;当控制信号在0 ,-32767, PWM down输出,值 0,32767。

由参数控制最大最小输出电流范围.
功能块图如下:
输入:。

相关文档
最新文档