System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及软plc代码执行,具体涉及一种提升软plc代码执行速度的方法。
技术介绍
1、提高程序的执行效率是所有代码开发者共同追求的目标。效率是指当前程序的运行速度、对系统资源的利用程度等。高效率的c语言程序一般表现为代码紧凑、执行速度快、占用空间小、程序可读性强等方面。然而程序执行速度与占内存空间往往是相互矛盾的两个方面,一些情况下需要以牺牲内存空间的代价来换取效率的提升。
2、在嵌入式软plc系统中,程序的执行速度尤为重要,现有文献“王磊,李鑫.浅析嵌入式程序的优化[j].电脑知识与技术,2012,8(01):192-193+196”针对嵌入式系统的特点,提出了对变量的处理、适量使用宏定义、对数组的处理、以及尽量避免使用除法等代码优化方面,来提高系统的性能,但是,其只针对c语言程序的部分代码优化进行效率提升,优化效果的提升十分有限,因此有待于进一步提升执行效率。
技术实现思路
1、本专利技术的目的在于提供一种提升软plc代码执行速度的方法,解决以下技术问题:
2、如何提升程序的执行效率。
3、本专利技术的目的可以通过以下技术方案实现:
4、一种提升软plc代码执行速度的方法,包括以下步骤:
5、s01:仿真程序下载完成后,遍历整个plc仿真文件,通过函数指针数组的方式,记录所有调用的应用函数指针;
6、s02:在程序执行时,遍历函数指针数组,读取应用函数指针,执行相应的应用函数;
7、s03
8、在本专利技术更进一步的方案中:步骤s01-s03在软plc系统中的具体实现方法为:
9、s11:先使用typedef自定义一个指向函数的指针类型;
10、s12:然后定义一个funct i onptr类型的数组,数组中的每个元素都可以存储一个满足这些条件的函数的地址;
11、s13:通过record_funct i on_ca l l()函数存储函数指针并增加计数;
12、s14:通过rep l ay_ca l l s()函数调用记录的应用函数指针。
13、在本专利技术更进一步的方案中:在步骤s13中,在调用应用函数时,通过record_funct i on_ca l l()函数得到储存函数指针的集合。
14、在本专利技术更进一步的方案中:在步骤s14中,所述应用函数指针指向不同的应用函数,调用这些应用函数的方法包括数组索引。
15、在本专利技术更进一步的方案中:步骤s11-s14在嵌入式软plc系统代码中的使用方法为:
16、s21:在scan_l adder_entry()解析函数中,在应用函数后增加record_funct ion_ca l l()函数记录调用的应用函数指针;
17、s22:在prog_process()处理程序函数中,首先解析遍历一遍仿真文件,获得记录的函数指针数组,然后调用rep l ay_ca l l s()函数去遍历函数指针。
18、在本专利技术更进一步的方案中:所述应用函数包括以下执行步骤:
19、sa:在mcu中找到一块空闲的数据空间,仿真程序下载完成后,先解析一遍仿真程序,待调用的应用函数解析出来操作数据类型后,将操作数据类型保存在前述空闲的数据空间;
20、sb:在执行调用的应用函数时,直接从空闲的数据空间中读取操作数据类型,执行数据操作;
21、sc:判断应用函数的调用是否结束,若是,则结束;若否,则重复sb,直至调用结束。
22、在本专利技术更进一步的方案中:步骤sa-sc在软plc系统中的具体实现方法为:
23、步骤sa:首先找出mcu中足够的空闲空间,并用指针p_s_prog指向起始位置;
24、步骤sb:使用record_type()函数写入type并增加p_s_prog指针;
25、步骤sc:通过rep l ay_type()函数读取p_s_prog当前指向的值
26、步骤sd:通过reset_prog_po i nter()函数重置p_s_prog指针。
27、在本专利技术更进一步的方案中:步骤sa-sd在软plc应用函数中涉及数据操作部分的操作步骤为:
28、sm:在原来的数据操作函数plc_readdata16()中添加record_type()函数记录操作数据类型值;
29、sn:新建s_plc_readdata16()函数用于替换plc_readdata16()函数进行数据读取。
30、本专利技术的有益效果:
31、本专利技术的提升软plc代码执行速度的方法,针对软plc系统执行效率较低问题,首先通过“空间换时间”方法省去执行应用函数时的解析过程,进而提升代码执行速度,并在此基础上,通过“二次编译”方法省去应用函数执行过程中的解析操作数据类型的过程,进一步提升代码执行速度;通过减少程序解析步骤的思想,使得软plc的执行效率有较高提升。
本文档来自技高网...【技术保护点】
1.一种提升软PLC代码执行速度的方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的提升软PLC代码执行速度的方法,其特征在于,步骤S01-S03在软PLC系统中的具体实现方法为:
3.根据权利要求2所述的提升软PLC代码执行速度的方法,其特征在于,在步骤S13中,在调用应用函数时,通过record_function_call()函数得到储存函数指针的集合。
4.根据权利要求2所述的提升软PLC代码执行速度的方法,其特征在于,在步骤S14中,所述应用函数指针指向不同的应用函数,调用这些应用函数的方法包括数组索引。
5.根据权利要求2所述的提升软PLC代码执行速度的方法,其特征在于,步骤S11-S14在嵌入式软PLC系统代码中的使用方法为:
6.根据权利要求1所述的提升软PLC代码执行速度的方法,其特征在于,所述应用函数包括以下执行步骤:
7.根据权利要求6所述的提升软PLC代码执行速度的方法,其特征在于,步骤SA-SC在软PLC系统中的具体实现方法为:
8.根据权利要求7所述的提升软PLC
...【技术特征摘要】
1.一种提升软plc代码执行速度的方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的提升软plc代码执行速度的方法,其特征在于,步骤s01-s03在软plc系统中的具体实现方法为:
3.根据权利要求2所述的提升软plc代码执行速度的方法,其特征在于,在步骤s13中,在调用应用函数时,通过record_function_call()函数得到储存函数指针的集合。
4.根据权利要求2所述的提升软plc代码执行速度的方法,其特征在于,在步骤s14中,所述应用函数指针指向不同的应用函数,调用这些应用函数的方...
【专利技术属性】
技术研发人员:陈鹤,
申请(专利权)人:安徽永创智能设备有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。