2.8RC功能模块
功能描述:
RC功能块是滤波功能块,它是对传感器信号的输入信号进行滤波。
滤波公式为:
功能块如下图:
输入:
(1)Input,UINT型,输入信号。
输出:
(1)Output,UINT型,输出信号。
2.9Scale功能块
功能描述:
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)PosValueBOOL型,PAR_Zero*256>Input值,值为TRUE;PAR_Zero*256
2.10Transfer功能块
功能描述:
Transfer模块用于设置缓冲曲线度,当Zero为TRUE时,输出为零,当Full为TRUE,而Zero不为零时,输出为65535。
缓冲曲线度公式:
Y2表正向,Y3表负向。
曲线如下图:
功能块如下图:
输入:
(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型
三、CANIIIEC库
本库就是一些基于CAN2.0协议的一些功能块。
也就是Can2.lib中的一些函数与功能块。
3.1CAN_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.2CAN_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.3CAN_II_INIT函数
功能描述:
CAN_II设备的初始化函数。
功能块如下图:
输入:
(1)ENABLE,BOOL型,使函数可以工作。
(2)SPEED,CAN设备的波特率。
(3)GBML(GloBalMaskLong)29bit全球码。
(4)GBMS(GloBalMaskShort)11bit全球码。
(5)TERM_RESCAN的接受终端On/Off.
3.4CAN_II_RTR函数
功能描述:
发送远距离传送请求。
本函数是BOOL型的。
函数块如下图:
输入:
(1)ENABLE,BOOL型,使能。
(2)OBJ选择对象号,1~13。
输出:
(1)ERROR,当输出为TRUE时,就是选择的对象好有问题。
3.5CAN_II_STATUS功能块
功能描述:
本功能快就是用来返回CAN设备的状态。
功能块如下图:
输入:
无
输出:
(1)LEC,就是返回最近的一个出错的代码。
(2)TXOK为TRUE时就表示传输成功。
(3)RXOK为TRUE时就表示接受成功。
(4)EWARN_COUNT出错记数器。
(5)BUSOFF_COUNT,总线关闭记数器。
3.6CAN_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.7CAN_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个不同CANID的数据,考虑到每次发送的可靠建议每次程序循环一次发送5个不同CANID的数据。
四、CANOPENIEC库
下面主要介绍的是一些基于CANOPEN协议的库函数。
也就是在canopen.lib中的一些函数与功能块。
4.1INITFUNCTION
4.1.1CANOPEN_END_INIT函数
功能描述:
本函数的主要作用是用来结束CANOPEN的初始化。
本函数是BOOL型的。
函数块如下图:
输入:
(1)ENABLE:
BOOL型,使能。
4.1.2CANOPEN_INIT_SDO函数
功能描述:
对SDO对象开始初始化。
函数图如下:
输入:
(1)ENABLE,BOOL型,使能。
(2)ID,BYTE型。
(3)SDO_TYPE,BOOL型,FALSE时为TX型,TRUE时为RX型。
(4)SDO,BYTE型,SDO的编号。
4.1.3CANOPEN_START_INIT函数
功能描述:
本函数就是CANOPEN的开始初始化。
本函数是BOOL型的。
函数块如下图:
输入:
(1)ENABLE,BOOL型,使能。
4.2PDOHANDLINGFUNCTIONS
4.2.1CANOPEN_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.2CANOPEN_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.3CANOPEN_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.4CANOPEN_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.3SDOHANDLINGFUNCTIONS
4.3.1ADD_VERSION函数
功能描述:
把用户的串放入CANOPEN的版本对象中去(16#100A)。
本函数是BOOL型的。
函数图如下:
输入:
(1)ENABLE,BOOL型,使能。
(2)VER,STRING型,用户定义的串。
4.3.2CANOPEN_GET_SDO函数
功能描述:
CANOPEN接收一个SDO。
本函数是BOOL型的。
函数图如下:
输入:
(1)ENABLE,BOOL型,使能。
(2)SDO,BYTE型,SDO号。
(3)INDEX,WORD型,对象的索引号。
(4)SUBINDEX,WORD型,对象的子索引号。
(5)OFFSET,BYTE型,数据在接受时的偏移量。
4.3.3CANOPEN_POINTER_SHARE函数
功能描述:
把用户定义的变量通过CANOPEN总线,用SDO对象发在总线上。
本函数是BOOL型的。
函数如下图:
输入:
(1)ENABLE,BOOL型,使能。
(2)OUT,DWORD型,用户要放的变量。
它是一个指针操作。
(3)Length,BYTE型,所用的对象的长度。
(4)Size,BYTE型,所用的对象的长度。
4.3.4CANOPEN_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.5CANOPEN_SHARE函数
功能描述:
把用户定义的串通过CANOPEN总线,用SDO对象发在总线上。
本函数是BOOL型的。
函数块如下图:
输入:
(1)ENABLE,BOOL型,使能。
(2)OUT,STRING型,用户定义的串。
(3)Length,BYTE型,所用的对象的长度。
(4)Size,BYTE型,所用的对象的长度。
4.3.6CANOPEN_UPDATA_SHARE函数
功能描述:
把用户定义的串通过CANOPEN总线,用SDO对象发在总线上。
本函数是BOOL型的。
函数图如下:
输入:
(1)ENABLE,BOOL型,使能。
(2)OUT,STRING型,用户定义的串。
(3)share_no,BYTE型,哪一个要更新。
(4)subindex,BYTE型,哪一个地方要更新。
4.4state中的函数与功能块
4.4.1CANOPEN_DIAGNOSE功能块
功能描述:
给出CAN以及程序循环的有关信息。
功能块如下图:
输出:
(1)BUS_OFF_COUNT,BYTE型,总线关闭记数。
(2)EWARN_COUNT,BYTE型,错误与警告的数量。
(3)TXBUFF_FULL_COUNT,BYTE型,记CAN设备传输缓冲区满的次数。
(4)CYCLE_TIME,BYTE型,程序最后一个循环所用的时间,单位是毫秒。
(5)H