canfestival stm32在程序中怎么加过程数据

CANopen协议软件
开发从设备或简单的主设备的软件包
符合规范的完整的功能
支持基于的状态显示
支持基于的层设置服务
快速轻松地开发设备(从站或主站)
可配置的模块化软件架构,可裁剪
高效率,低资源需求
结构清晰,简单的应用编程接口
容易移植到不同的微控制器
多通道支持
&&&&CANopen协议软件包含根据规范实现简单的主站或从站设备的所有功能。
可扩展性和硬件适应性为了确保高度的扩展性和适应性,该软件包是通过集中文件进行配置。&通过一个配置文件,实现协议栈提供的功能到特定应用的最佳匹配,从而更有效地利用可用的资源。最大程度的节约资源。&软件的核心功能实现独立于控制器。&驱动程序本身完全封装在一个单独的软件模块中。&适用于使用的微控制器类型的配置(如中断,定时器)集中在一个单独的头文件中。
多通道支持根据需求,的协议软件提供了多通道版本。&该版本允许用户在一个现场设备实现多个独立的设备。&可以对具有独立的对象字典的每个通道单独配置其主站或从站功能,&也支持对每个通道上不同的控制器的并行操作。
对象字典和编程接口对象字典是应用程序和通信服务之间的接口。&每个应用数据变量可以直接分配一个对象字典条目入口。&和可以直接访问这些应用变量。&因此,无需更改已有的应用程序以集成协议栈。&用户自定义的回调函数可以连接到每个应用对象,当访问这些对象时,通过事件发信号通知应用程序。&这种机制允许对总线上应用数据导致的变化作出直接的、应用程序特定的响应。&此外,也支持保存和恢复配置的数据。
过程数据对象和服务数据对象:&CANopen协议软件支持异步(有或无事件定时器),同步(循环和非循环)和请求()传输类型。&根据可用的资源和所需的响应时间,可以采用动态或静态映射。&此外,该协议软件支持多路传输包括扫描仪和调度列表。&也支持虚设映射以及变量抑制时间。&对象可以同时映射到多个。&对支持加速,非加速(分段)和块传输模式。&响应可以被应用程序级的读写访问延迟。在修改目标变量前,应用程序可以检查写入数据的一致性。&必要时,可以中止传输。
网络管理的软件支持的定义启动过程及所有的网络服务,包括有无活动的节点监控(主站监控),及生产者(通常是从站设备)监控的心跳机制。
标识符分配默认情况下,标识符将根据预定义的连接集分配,但也可以通过修改相关的对象字典入口分配。
主站功能小型的系统通常只需要一个简单的主站设备而不是一个完整的管理器来启动系统。&因此,&软件包实现了一个简单的带有独立对象字典主站。&在此基础上实现的设备,可以在配置工具的帮助下,配置对象字典,使其工作在主站方式或从站方式。该软件提供了所有必需的服务,使用户可以实现一个优化的网络管理控制功能。
& & & &软件包“管理器软件”是实现完整的或更复杂的管理设备的基础,也是开发可编程控制设备()的基础。
可选功能在标准软件上,可根据需求补充以下辅助功能:
-&符合临时主机,启动功能设备或主机设备。
-&符合的管理器,请求设备
实施协议软件提供硬件无关的源代码,并通过最新的一致性测试软件进行测试。&软件附带的文档和示例程序能够帮助您快速学会使用软件。&例程提供的项目文件,可以直接集成到编译器相应的开发环境。&所有的例程可以直接在参考平台制造商提供的评估板或接口板上运行。&将软件移植到目标硬件通常可以在几天内完成。&例程可以帮助用户实现应用。
CANopen软件的可用版本
CANopen协议软件有两种不同的版本,实现不同的功能:和协议。&软件包中支持完整的功能,用于开发从站设备和简单的主站设备。每个包的功能范围如下表中所述:
C=Consumer(接收方传输方从站(主站)
支持的处理器和CAN控制器
在协议软件是独立于硬件的,可以应用于各种微控制器和控制器。&对于以下制造商处理器,提供了参考实现,包括可以直接在相应的开发平台上运行的基于开发环境的工程文件:
STMicroelectronics
Texas&Instruments
x86&Architecture
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1322次
排名:千里之外canfestival pdo怎么用_百度知道
canfestival pdo怎么用
提问者采纳
您步骤:新建工程目录新建文件夹CanFestival再CanFestival新建文件夹driver、incsrc再inc文件夹面新建stm32文件夹(我主要移植stm32例说明移植VC或其平台命名其名字vc)步骤二:CanFestival-3-10\src目录dcf.c、emcy.c、lifegrd.c、lss.c、nmtMaster.c、nmtSlave.c、objacces.c、pdo.c、sdo.c、states.c、sync.c、timer.c共12文件拷贝CanFestival\src目录;CanFestival-3-10\include目录所.h文件共19文件全部拷贝CanFestival\inc目录再CanFestival-3-10\examples\AVR\Slave目录ObjDict.h文件拷贝共20;CanFestival-3-10\include\AVR目录applicfg.h、canfestival.h、config.h、timerscfg.h共4文件拷贝canfestival\inc\stm32目录;CanFestival-3-10\examples\TestMasterSlave目录TestSlave.c、TestSlave.h、TestMaster.h、TestMaster.c拷贝canfestival\driver目录并该目录新建stm32_canfestival.c文件步骤三:CanFestival\src目录所.c文件添加工程;canfestival\driver目录stm32_canfestival.c文件添加工程;实现设备再canfestival\driver目录TestSlave.c文件添加工程实现主设备则TestMaster.c文件添加工程;步骤四:文件目录canfestival\inc、canfestival\inc\stm32、canfestival\driver等路径添加工程包含路径步骤五:stm32_canfestival.c包含文件#include &canfestival.h&并定义函数:void setTimer(TIMEVAL value){}TIMEVAL getElapsedTime(void){
return 1;}unsigned char canSend(CAN_PORT notused, Message *m){
return 1;}先定义空函数等编译都通再往面添加内容几函数都定义供canfestival源码调用找几函数编译报错步骤六:通几步所文件都弄齐编译定现报错注释或删除掉config.h文件几行能编译通:#include &inttypes.h&#include &avr\io.h&#include &avr\interrupt.h&#include &avr/pgmspace.h&#include &avr\sleep.h&#include &avr\wdt.h&其报错能同源码版本、同平台、同遇错误相同程能做定参考定完全相同解决些错误需要定调试功底需要根据编译错提示进行修改应般都些函数没声明或者某文件没包含或者包含些必要文件该文件存或者些变量类型符合需定义类能够摆平所编译错移植算功编译错摆平游戏结束没玩步骤七:解决所编译错误接实现刚才定义3空函数函数void setTimer(TIMEVAL value)主要源码用定间需要调用函数TimeDispatch()函数TIMEVAL getElapsedTime(void)主要源码用查询距离定触发少间unsigned char canSend(CAN_PORT notused, Message *m)函数主要源码用发CAN包需要调用驱CAN包发我stm32_canfestival.c文件定义几变量:unsigned int TimeCNT=0;//间计数unsigned int NextTime=0;//触发间计数unsigned int TIMER_MAX_COUNT=70000;//间计数static TIMEVAL last_time_set = TIMEVAL_MAX;//间计数setTimergetElapsedTime函数实现://Set the next alarm //void setTimer(TIMEVAL value){NextTime=(TimeCNT+value)%TIMER_MAX_COUNT;}// Get the elapsed time since the last occured alarm //TIMEVAL getElapsedTime(void){
int ret=0;
ret = TimeCNT& last_time_set ? TimeCNT - last_time_set : TimeCNT + TIMER_MAX_COUNT - last_time_
last_time_set = TimeCNT;}另外要1毫秒定器每1毫秒调用面函数void timerForCan(void){
TimeCNT++;
if (TimeCNT&=TIMER_MAX_COUNT)
{TimeCNT=0;
if (TimeCNT==NextTime)
{TimeDispatch();
}}can发包函数canSend跟CAN驱关CAN通道使用真实CAN总线使用虚拟CAN通道(文件接口、网络通道等等)启初始化:初始化文件(比main.c)添加几行代码#include &TestSlave.h&unsigned char nodeID=0x21;extern CO_Data TestSlave_D调用函数(比main函数)调用代码初始化setNodeId(&TestSlave_Data, nodeID);setState(&TestSlave_Data, Initialisation);
// Init the state其T estSlave_DataTestSlave.c定义启调用TimerForCan()1毫秒定器接收CAN数据调用源码函数canDispatch(&TestSlave_Data, &m);canfestival源码跑需要跟主设备联调要实现canSend函数与平台Can驱相关
其他类似问题
为您推荐:
pdo的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁二次元同好交流新大陆
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
&&&&& 3、VS2010在制作表过程中,菜单会出现在两个地方,一个在主菜单出现,下拉后内容极少,不包括数据参数,一个在【视图】中,打开,在工具栏会出现数据参数等更多内容。
&& 4、有了临时表、参数,就可以布局制作报表了,统计时间是数据参数传递的。
&&& 5、统计表的数据传输与参数参数程序
&&&&&&& 注:传递数据表
&&&&&&&&&&& Microsoft.Reporting.WinForms.ReportDataSource r = new Microsoft.Reporting.WinForms.ReportDataSource(); &&&&&&&&&&& r.Name = "my_dt"; &&&&&&&&&&& r.Value =
&&&&&&&&&&& 传递的表名称要与设计时的名称一致。
&&&&&&&&&&& this.reportViewer1.LocalReport.DataSources.Clear(); &&&&&&&&&&& this.reportViewer1.LocalReport.DataSources.Add(r);
&&&&&&&&&&&& 传递参数
&&&&&&& ReportParameter p = new ReportParameter("dt", dt); &&&&&& this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { p });
&&&&&&&&&&&& _ds是通过中间层传输过来。
【参考代码】
private void bt_Sum_Class_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& string dt = this.dateTimePicker1.Value.ToString("yyyy年MM月dd日") + " -至-" + this.dateTimePicker2.Value.ToString("yyyy年MM月dd日");&&&&&&&&&&& this.lb_title.Text = "[" + this.dateTimePicker1.Value.ToString("yyyy-MM-dd") + "]至[" +&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& this.dateTimePicker2.Value.ToString("yyyy-MM-dd") + "]" +&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& this.bt_Sum_Class.T&&&&&&&&&&& DataSet _ds = gl.DecompressGetBytes(gl.BL.Get_Sum_Between_Classified_Zip(this.dateTimePicker1.Value, this.dateTimePicker2.Value));&&&&&&&&&&& DataTable da = _ds.Tables[0];&&&&&&&&&&& this.dataGridView1.DataSource = _ds.Tables[0];&&&&&&&&&&& this.dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);&&&&&&&&&&& for (int i = 1; i &= this.dataGridView1.Columns.Count - 1; i++)&&&&&&&&&&& {&&&&&&&&&&&&&&& this.dataGridView1.Columns[i].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleC&&&&&&&&&&& }&&&&&&&&&&& Microsoft.Reporting.WinForms.ReportDataSource r = new Microsoft.Reporting.WinForms.ReportDataSource();&&&&&&&&&&& r.Name = "my_dt";&&&&&&&&&&& r.Value =&&&&&&&&&&& this.reportViewer1.LocalReport.DataSources.Clear();&&&&&&&&&&& this.reportViewer1.LocalReport.DataSources.Add(r);&&&&&&&&&&& this.reportViewer1.Visible = true;&&&&&&&&&&& this.reportViewer1.LocalReport.ReportPath = "Rp_Sum_Class.rdlc";&&&&&&&&&&& ReportParameter p = new ReportParameter("dt", dt);&&&&&&&&&&& this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { p });&&&&&&&&&&& gl.show_Icon("请选择[页面设置]-[方向]-[横向],再打印。", 2, 2);&&&&&&&&&&& this.reportViewer1.RefreshReport();&&&&&&&&&&& _ds.Dispose();&&&&&&& }
阅读(729)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'VS2010报表ReportViewer数据的生成-添加程序运行过程中生成表字段与参数',
blogAbstract:'
VS2010报表ReportViewer数据的生成-添加程序运行过程中生成表字段与参数
开发环境:vs2010
报表工具:ReportViewer.exe 这个要另外安装
开发说明:
&&&&& 由于在开发、运行过程中,会生成一些汇总统计表,这样的表不一定会以数据库表的形式固定存在,因此,会以运行过程中,用DataSet\\DataTable',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:2,
publishTime:7,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'字:子知',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list} 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
基于CANFESTIVAL的远程IO节点的设计与实现
下载积分:1000
内容提示:基于CANFESTIVAL的远程IO节点的设计与实现,基于CANF
文档格式:PDF|
浏览次数:4|
上传日期: 07:08:30|
文档星级:
该用户还上传了这些文档
基于CANFESTIVAL的远程IO节点的设计与实现
官方公共微信}

我要回帖

更多关于 canfestival 数据字典 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信