<< 点击显示目录 >> 主页 贝加莱CAN通讯使用例程说明 > 通过编程实现CAN通讯 > 功能块与函数说明 > CAN_Lib > CAN_Lib - CMS Function Blocks and Functions > CMSinit() |
CMS对象可以通过CMSinit()和 CMSmain() 函数块进行发送和接收 。
CMS对象被定义在一个数据对象中(见客户端和服务器的CMS数据对象),它可以用于客户端和服务器。客户端和服务器的区分是在CMSinit()函数中使用 user_type 输入参数进行的 。如果一个节点上需要两种类型(客户端和服务器),就必须创建两个数据对象。CMS服务的请求或识别是用事件变量控制的(见用事件变量控制CMS对象)。
这个功能块只能有条件地 用于冗余。
适用的限制在下面的章节中描述。
其他信息可以在 "冗余 " 部分找到 。
输入/输出 |
参数 |
数据类型 |
说明 |
IN |
enable |
BOOL |
这个功能块只有在 enable 为<>0时才会执行 。 |
IN |
us_ident |
UDINT |
来自 CANopen()的用户ID |
user_type |
USINT |
0... 节点类型 CLIENT 1...节点类型SERVER |
|
IN |
queue_cnt |
UINT |
保留 |
IN |
modul_name |
UDINT (given as a pointer to STRING) |
含有CMS对象的数据对象名称的字符串上的地址。 |
OUT |
cms_entry |
UINT |
CMS数据对象中的错误条目编号或CMS对象的数量。 |
OUT |
cms_id |
UDINT |
CMSmain()需要CMS标识符 。 |
OUT |
status |
UINT |
错误编号 (0=无错误) |
CMSinit(enable,us_id,user_type,queue_cnt,addr(modul_name),cms_entry,cms_id,status)
cms_entry 参数用于识别应用程序中的缺陷条目。
如果在CMS数据对象中定义的变量在目标系统中没有找到,那么在 状态 输出 中会给出相应的错误号 (但功能块继续执行)。在这种情况下 ,cms_entry 参数返回有缺陷的CMS对象的编号(1=CMS数据对象中的第一个CMS对象,2=第二个CMS对象,等等)。
为了避免违反周期时间,CMSinit()函数只能在软件对象的INIT-SP(初始化子程序)中调用。
只有在确定CMSinit()函数在所有必要的工位上执行完毕后,才可以调用CMSmain( )FB。否则,不能排除FB错误的可能性。
管理所需的内存是数据对象中每个条目22字节,每个使用的CAN ID 54字节。对于复用变量,每个CAN ID还需要一个(最大复用器*2)字节。对于CAN2000驱动程序中的管理,每个使用的块需要占用512个字节,其中CAN ID的第8到10位决定了块的编号。扩展的CAN标识符(CAN标识符> 2047)不支持复用变量。