页次: 1
先别通过,等我写完了再通过
UM08027_SystemView(翻译结果).pdf
1.复制必要文件
2.修改设定
3.找到打桩的函数(操作系统调用)
4.开始打桩
演技担当黄晓明 说:JTAG工具.rar
用这个软件可以控制 支持JTAG扫描链的芯片的PIN脚输出输入这个支持测试altera的引脚吗
都是可以的,只要网站能下载PIN定义资料就可以
收到板子后,移植了一下以前常用的状态机
写了一个点灯代码
Vibrate.rar
我是用的windeployqt 打包
步骤见:
https://blog.csdn.net/ColinFhz/article/details/107879769
pip 23.2.1 from C:\Programs\Python\Python311\Lib\site-packages\pip (python 3.11)
pip安装软件包时报错
Could not fetch URL https://pypi.tuna.tsinghua.edu.cn/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.tuna.tsinghua.edu.cn', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
说是SSL 的软件版本的问题,但是下载了requests-2.29.0 也没法安装上去
把 libssl-1_1-x64.dll libcrypto-1_1-x64.dll拷贝到Windows\system32目录都没有用
有大神知道怎么弄吗?
输入 pip3 install pyPDF2
报告错误如下
Could not fetch URL https://pypi.tuna.tsinghua.edu.cn/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.tuna.tsinghua.edu.cn', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
File.py
#!/usr/bin/python2.6
# -*- coding: utf-8 -*-
import pandas as pd
import os
def get_abs_path(relative_path: str) -> str:
cwd_path = os.getcwd()
full_path = os.path.join(cwd_path, relative_path)
return full_path
def find_file(search_path, readsub = False,include_str=None, filter_strs=None):
"""
查找指定目录下所有的文件(不包含以__开头和结尾的文件)或指定格式的文件,若不同目录存在相同文件名,只返回第1个文件的路径
:param search_path: 查找的目录路径
:param include_str: 获取包含字符串的名称
:param filter_strs: 过滤包含字符串的名称
"""
if filter_strs is None:
filter_strs = []
files = []
# 获取路径下所有文件
names = os.listdir(search_path)
for name in names:
relativePath = os.path.join(search_path, name)
absPath = os.path.abspath(relativePath)
if os.path.isfile(absPath):
# 如果不包含指定字符串则
if include_str is not None and include_str not in name:
continue
# 如果未break,说明不包含filter_strs中的字符
for filter_str in filter_strs:
if filter_str in name:
break
else:
files.append(absPath)
else:
# 递归调用
if(readsub):
files += find_file(absPath, include_str=include_str, filter_strs=filter_strs)
return files
def get_info(str_path1: str) -> dict:
dic: dict = {}
file_name = os.path.basename(str_path1)
strSplit = "-"
file_name = file_name.replace(".早.", "早-")
file_name = file_name.replace(".午.", "午-")
file_name = file_name.replace(".晚.", "晚-")
file_name = file_name.replace(".pdf", "")
substrings = file_name.split(strSplit)
cnt = len(substrings)
# 前面的是日期,後面的是時間
if (cnt > 1):
dic["Date"] = substrings[0].replace(".", "-")
dic["Money"] = substrings[1]
return dic
pdfcombine.py
#!/usr/bin/python2.6
# -*- coding: utf-8 -*-
from PyPDF2 import PdfReader, PdfWriter
import Files
merger = PdfWriter()
files = Files.find_file("./", False, ".pdf")
for pdf in files:
pdf_reader = PdfReader(pdf)
page_count = len(pdf_reader.pages)
for index in range(page_count):
merger.add_page(pdf_reader.pages[index])
merger.write(".\\output\\all.pdf")
merger.close()
今天从新搭接了这个编程器电路,
https://whycan.cn/files/members/1401/prgmr.jpg附上固件 软件 驱动 电路图
https://whycan.cn/files/members/1401/prgmr-pc100-1_0as.rar另外有问题可以在这里留言
上位机用的什么软件
@Blueskull
VirtNet.zip
VirtNet.zip 虚拟网卡
JTAG工具.rar
用这个软件可以控制 支持JTAG扫描链的芯片的PIN脚输出输入
ERROR: Command errored out with exit status 2:
command: 'd:\programs\python\python39-32\python.exe' 'd:\programs\python\python39-32\lib\site-packages\pip' install --ignore-installed --no-user --prefix 'C:\Users\xukaiming\AppData\Local\Temp\pip-build-env-jmcpx2b3\overlay' --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- 'sip >=5.3, <7' 'PyQt-builder >=1.1.0, <2'
cwd: None
Complete output (59 lines):
Processing c:\users\xukaiming\appdata\local\pip\cache\wheels\b4\50\c9\930b84257dfd8f8d578b7e6f1325f57ed2457305a48c5c263e\sip-5.3.0-cp39-cp39-win32.whl
Collecting PyQt-builder<2,>=1.1.0
Downloading PyQt_builder-1.4.0-py3-none-any.whl (5.5 MB)
ERROR: Exception:
Traceback (most recent call last):
File "d:\programs\python\python39-32\lib\site-packages\pip\_vendor\urllib3\response.py", line 437, in _error_catcher
yield
File "d:\programs\python\python39-32\lib\site-packages\pip\_vendor\urllib3\response.py", line 519, in read
data = self._fp.read(amt) if not fp_closed else b""
File "d:\programs\python\python39-32\lib\site-packages\pip\_vendor\cachecontrol\filewrapper.py", line 62, in read
data = self.__fp.read(amt)
File "d:\programs\python\python39-32\lib\http\client.py", line 458, in read
n = self.readinto(b)
File "d:\programs\python\python39-32\lib\http\client.py", line 502, in readinto
n = self.fp.readinto(b)
File "d:\programs\python\python39-32\lib\socket.py", line 704, in readinto
return self._sock.recv_into(b)
File "d:\programs\python\python39-32\lib\ssl.py", line 1241, in recv_into
return self.read(nbytes, buffer)
File "d:\programs\python\python39-32\lib\ssl.py", line 1099, in read
return self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "d:\programs\python\python39-32\lib\site-packages\pip\_internal\cli\base_command.py", line 216, in _main
status = self.run(options, args)
File "d:\programs\python\python39-32\lib\site-packages\pip\_internal\cli\req_command.py", line 182, in wrapper
return func(self, options, args)
File "d:\programs\python\python39-32\lib\site-packages\pip\_internal\commands\install.py", line 324, in run
requirement_set = resolver.resolve(
File "d:\programs\python\python39-32\lib\site-packages\pip\_internal\resolution\legacy\resolver.py", line 183, in resolve
discovered_reqs.extend(self._resolve_one(requirement_set, req))
File "d:\programs\python\python39-32\lib\site-packages\pip\_internal\resolution\legacy\resolver.py", line 388, in _resolve_one
abstract_dist = self._get_abstract_dist_for(req_to_install)
File "d:\programs\python\python39-32\lib\site-packages\pip\_internal\resolution\legacy\resolver.py", line 340, in _get_abstract_dist_for
abstract_dist = self.preparer.prepare_linked_requirement(req)
File "d:\programs\python\python39-32\lib\site-packages\pip\_internal\operations\prepare.py", line 467, in prepare_linked_requirement
local_file = unpack_url(
File "d:\programs\python\python39-32\lib\site-packages\pip\_internal\operations\prepare.py", line 255, in unpack_url
file = get_http_url(
File "d:\programs\python\python39-32\lib\site-packages\pip\_internal\operations\prepare.py", line 129, in get_http_url
from_path, content_type = _download_http_url(
File "d:\programs\python\python39-32\lib\site-packages\pip\_internal\operations\prepare.py", line 282, in _download_http_url
for chunk in download.chunks:
File "d:\programs\python\python39-32\lib\site-packages\pip\_internal\cli\progress_bars.py", line 168, in iter
for x in it:
File "d:\programs\python\python39-32\lib\site-packages\pip\_internal\network\utils.py", line 64, in response_chunks
for chunk in response.raw.stream(
File "d:\programs\python\python39-32\lib\site-packages\pip\_vendor\urllib3\response.py", line 576, in stream
data = self.read(amt=amt, decode_content=decode_content)
File "d:\programs\python\python39-32\lib\site-packages\pip\_vendor\urllib3\response.py", line 541, in read
raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
File "d:\programs\python\python39-32\lib\contextlib.py", line 135, in __exit__
self.gen.throw(type, value, traceback)
File "d:\programs\python\python39-32\lib\site-packages\pip\_vendor\urllib3\response.py", line 442, in _error_catcher
raise ReadTimeoutError(self._pool, None, "Read timed out.")
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
----------------------------------------
ERROR: Command errored out with exit status 2: 'd:\programs\python\python39-32\python.exe' 'd:\programs\python\python39-32\lib\site-packages\pip' install --ignore-installed --no-user --prefix 'C:\Users\xukaiming\AppData\Local\Temp\pip-build-env-jmcpx2b3\overlay' --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- 'sip >=5.3, <7' 'PyQt-builder >=1.1.0, <2' Check the logs for full command output.
这个梯形是自感电动势?
锁相环启动一定要先启动外部晶体,等它稳定后才能启动PLL
更改代码如下
void InitPLL(void)
{
int32_t i32TimeoutCnt = 0;
PllClock = 0;
SYS_UnlockReg();
//Enable external XTAL 12MHz clock
CLK->PWRCON |= CLK_PWRCON_XTL12M_EN_Msk;
i32TimeoutCnt = (__HXT / 1000); // Timeout is about 1ms
while((CLK->CLKSTATUS & CLK_CLKSTATUS_XTL12M_STB_Msk) != CLK_CLKSTATUS_XTL12M_STB_Msk)
{
if(--i32TimeoutCnt <= 0)
break;
}
/// Set to 50MHz system clock frequency when clock source is from external 12MHz
CLK->PLLCON = CLK_PLLCON_50MHz_HXT;
// Waiting for PLL ready
i32TimeoutCnt = (__HXT / 1000); // Timeout is about 1ms
while((CLK->CLKSTATUS & CLK_CLKSTATUS_PLL_STB_Msk) == 0)
{
if(--i32TimeoutCnt <= 0)
break;
}
// Set PLL as HCLK clock source (HCLK_S is locked setting)
CLK->CLKSEL0 = CLK_CLKSEL0_HCLK_S_PLL;
SYS_LockReg();
SystemCoreClockUpdate();
}
一 将撸的羊毛板子上的nulink2 me掰下来焊接好排线,接上USB,板上灯正常点亮,硬件OK
二 开始编写软件
1.找出占用资源
调试口
PWM输出口
比较器输入口
时钟口
LED口
用NuTool - PinConfigure.exe 生成PIN脚初始化代码
2.拷贝进我的状态机系统
将Task文件夹拷贝进目录,加入工程
3.启动systick中断
InitPLL();
SysTick_Config(SystemCoreClock/1000);
4.打开闪烁任务
void TaskBlinLed(void)
{
static unsigned char count =0;
count=(++count)%10;
if(count==0)
{
//GPIO_ClrBit (GPIOA, PIN11);
LED1 =LED2=LED3=LED4 = 1;
}
else
{
//GPIO_SetBit(GPIOA, PIN11);
LED1 =LED2=LED3=LED4 = 0;
}
}
闪烁正常
唯一美中不足的是外部晶振无法启用,定时不是太准确
作业代码
BLDC.rar
现场调试,建议预留usb全隔离模块位置
全隔离很贵,但是在现场调试还是很有必要的,
https://whycan.cn/t_4513.html 是这个吧,我觉得SWM的cpu搞FOC可能更合适点,有三角函数计算工具
vs2017环境,windows系统,检测网线插入拔出状态。 ,报告网线是否插入。
#include "stdafx.h"
#include <windows.h>
//#include "CableLinkTest.h"
#include <iphlpapi.h>
#include <stdio.h>
#include <iostream>
#pragma comment ( lib, "iphlpapi.lib" )
using namespace std;
int getAdapter_Info()
{
PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
char strNetWorkName[256];
//PIP_ADAPTER_INFO结构体指针存储本机网卡信息
//得到结构体大小,用于GetAdaptersInfo参数
unsigned long stSize = sizeof(IP_ADAPTER_INFO);
//调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量
int nRel = GetAdaptersInfo(pIpAdapterInfo, &stSize);
//记录网卡数量
int netCardNum = 0;
//记录每张网卡上的IP地址数量
int IPnumPerNetCard = 0;
if (ERROR_BUFFER_OVERFLOW == nRel)
{
//如果函数返回的是ERROR_BUFFER_OVERFLOW
//则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
//这也是说明为什么stSize既是一个输入量也是一个输出量
//释放原来的内存空间
delete pIpAdapterInfo;
//重新申请内存空间用来存储所有网卡信息
pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
//再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量
nRel = GetAdaptersInfo(pIpAdapterInfo, &stSize);
}
if (ERROR_SUCCESS == nRel)
{
while (pIpAdapterInfo)
{
if(pIpAdapterInfo->AdapterName)
for (int k = 0; k<256; k )
{
strNetWorkName[k] = pIpAdapterInfo->Description[k];
}
printf("%s\n", strNetWorkName);
//if (!strcmp(strNetWorkName, "Realtek PCIe GBE Family Controller"))
{
if (!strcmp(pIpAdapterInfo->IpAddressList.IpAddress.String, "0.0.0.0")) {
printf("网线没插");
}
else
{
printf("网线插了");
}
printf("%s\n", pIpAdapterInfo->IpAddressList.IpAddress.String);
}
pIpAdapterInfo = pIpAdapterInfo->Next;
}
}
//释放内存空间
if (pIpAdapterInfo)
{
delete pIpAdapterInfo;
}
return 0;
}
int main()
{
getAdapter_Info();
return 0;
}
ARM嵌入式在机顶盒方面的开发应用案例.rar
CATV机顶盒设计的原理与实现.pdf
em8620L_A-002.pdf
em8620l_regdes.pdf
GB 8898-2001 音频、视频及类似电子设备 安全要求.pdf
GB13837-2003声音和电视广播接收机及有关设备.pdf
GB17625.1-2003.pdf
GB4943-2001.pdf
GB9254-1998.pdf
P020080526474577207206.part1.rar
P020080526474577207206.part2.rar
华大的机顶盒解码芯片的Code verilog.rar
基于CheerTek CT212T的FTA DVB-T机顶盒解决方案.rar
基于通用DSP实现HDTV机顶盒的研究与设计.rar
嵌入式系统GUI的机制及其在机顶盒上的应用.rar
数字机顶盒硬件结构介绍.pdf
机顶盒的生产测试.PDF
条件接收系统中机顶盒和智能卡安全通信协议.rar
欧洲数字电视.机顶盒能耗标准- COC.pdf
网络变互式数字电视机顶盒硬件平台设计.doc
香港地面机顶盒规范.pdf
演技担当黄晓明 说:2.美国,欧洲对中国贸易摩擦并不一定全是因为间谍行为,也有可能卖不过中国人,故意下阴招啊.欧美对中国的间谍行为也不少啊.可中国人民从来没有抱怨什么.以前日本人不也是被欧美发起贸易战,也是因为间谍行为吗?是因为你们输不起罢了,就像小朋友,打架打不过就躺地上哭鼻子.
你有一定道理。就个人而言,我有非常沉重的损失,而不是在中国 - 北美,欧洲,甚至在Bulgara都有这样的情况。因为保加利亚经济不平衡。如果这是我做错了,我会接受我的罚款,而不是抱怨等等。但这个案子是中国人明显的错。淘宝卖家没有取消发货,Shipforwarder.com接受了包裹,甚至我要求他们不要。他们为我提供了一笔账单 40美元(包括金融交易费用)。如果我对中国人这样做,你会没事吗?
在阿拉伯语中你的阿里巴巴咆哮意味着什么 - 一个骗子,一个小偷,一个骗子......这意味着非常糟糕,你知道什么样的人被称为Alibabas - 掠夺者。
损失约50美元(交易成本也有损失)并不理想,我可以接受。对我来说,这些人仍然是大骗子。我确实使用谷歌翻译,它没有做出正确的翻译,很多单词,并不是我的意思,但我希望你明白这一点。
马云告诉你了他是骗子,掠夺者,你还往上送,那不是你自己的问题了吗?他都说了大实话了
我花50欧元,想娶一个乌克兰美女做老婆.虽然有娶到的可能性,但是娶到一个老太太的可能性也是挺大的,一分钱一分货嘛.
阿里巴巴本来就是卖便宜货的地方,十次有九次没吃亏,已经是很赚了,人要知足.
by the way ,你第二次买的焊机好像还是中国人造的哦,想好了,别又想中途退货,你又得损失物流费了
SF空气 - 价格过高的服务。通过DHL从德国到保加利亚的此类物品交付价格约为10欧元--80元人民币。
演技担当黄晓明 说:中国人民的"奢侈"生活都是自己创造的.并不是靠当骗子或者勒索别人来的,请不要随意称呼别人骗子.
通过贿赂,不遵守法律,窃取技术等我可以称之为他们。对不起,你对正义和法律问题有错误的理解。不知道为什么美国,欧洲已经开始采取措施对付许多中国企业。
1.20KG物品,空运,送货上门,贵国只需要80元人民币?真是便宜.
2.美国,欧洲对中国贸易摩擦并不一定全是因为间谍行为,也有可能卖不过中国人,故意下阴招啊.欧美对中国的间谍行为也不少啊.可中国人民从来没有抱怨什么.以前日本人不也是被欧美发起贸易战,也是因为间谍行为吗?是因为你们输不起罢了,就像小朋友,打架打不过就躺地上哭鼻子.
演技担当黄晓明 说:前苏联人民现在穷成了这样子了吗?
不幸的是,即使作为欧盟的一个成员国,前苏联人民也很穷。我们不想支付一些中国人在遇到经济困难时过上奢侈和致富的生活。
我目前正在与https://www.yimeikuaidi.com/交谈,他们提供了相当合理的运费:2公斤。到保加利亚 - 188 CNY有人尝试或使用过他们的服务?
真是便宜,不过你要有等很久的心理准备,有可能是铁路运输,运到贵国可能要一个月.SF可是空运.全中国一般都是两天之内到货,最多不超过三天.是中国国内最贵的快递了.其他的快递公司都是半价.中国人民的"奢侈"生活都是自己创造的.并不是靠当骗子或者勒索别人来的,请不要随意称呼别人骗子.
晕哥 说:演技担当黄晓明 说:晕哥,能把VS的工程放出了吗?这个看起来不错
好像直接新建一个 Win32 窗口项目, 然后添加文件就可以了。
我回去看看,还在不在电脑,如果有就传上来.
下载地址: nuklear_debugdump.7z
由于git仓库太大,比 .git 目录删除了。
工程文件是哪个?
/******************************************************************************
FILE: FUZZY.C
POPURSE:
WRITER: Xukaiming
DATE: 2007.03.08
******************************************************************************/
#include "main.h"
#include "task.h"
#include "fuzzy.h"
#include "ied_ctrl.h"
#include "math.h"
#include "x5043.h"
#include "manctrl.h"
#define ERRORCNT 9 //误差记录
#define DERRORCNT 10 //误差变化率记录
//#define DOOROPENSPEED -15L //开门时的升温速度,如果低于此温度,认为电阻丝的热量完全散发出来或者开门升温
xdata long DOOROPENSPEED = -15L;
#define MAXNEGINTERG (-200L*KI/Ki)
extern code unsigned int K_Temp_Tab[];
typedef struct AI_CONTROL
{
long gDest; //目标温度的AD值
long CTEMP; //开始控制温度
long Error[ERRORCNT]; //偏差
long dErr[DERRORCNT] ; //偏差变化率
long ECSUM; //10S内的偏差变化率之和
long SumErrLimit ; //加热初值
long PreviewOut;
long HFDownTemp ;
long du;
long DoorOpenValue; //保存炉子门状态
char LowSpeedCnt;
unsigned int iDestTemp; //目标温度值
unsigned int iStableCnt; //输出稳定次数
unsigned int iPreStabCnt; //保存的稳定次数
};
#define Kp 15 //输出变量u比例因子
#define Ki 1/10 //衰减系数;
#define KI 15
//Kp 变小的时候 ki要变大
xdata struct AI_CONTROL Ai_CTRL;
void TaskFuzzy(void)
{
char cnt;
_nop_();
if(IED.lADTemp>MAX_TEMP) //超温保护
{
SetPWM(PWM_PITCED);
return ;
}
//求偏差
for(cnt=ERRORCNT-1;cnt>0;cnt--)
{
Ai_CTRL.Error[cnt] = Ai_CTRL.Error[cnt-1];
} //保存上次偏差值
Ai_CTRL.Error[0] = (long)(((Ai_CTRL.gDest-IED.lADTemp)/KC));
for(cnt=DERRORCNT-1;cnt>0;cnt--)
{
Ai_CTRL.dErr[cnt] = Ai_CTRL.dErr[cnt-1];
} //保存上次偏差率值
Ai_CTRL.dErr[0] = Ai_CTRL.Error[0]-Ai_CTRL.Error[1]; //计算偏差变化率
Ai_CTRL.ECSUM = Ai_CTRL.dErr[0] + Ai_CTRL.dErr[1] + Ai_CTRL.dErr[2] + Ai_CTRL.dErr[3] + Ai_CTRL.dErr[4]; //10s的温升速率 =iol
if(Ai_CTRL.Error[0]<Ai_CTRL.CTEMP)
{
if(((Ai_CTRL.Error[0]*Ai_CTRL.dErr[0])>0) || ((Ai_CTRL.Error[0]==0) &&( Ai_CTRL.dErr[0]!=0))) //误差变大的情况
{
Ai_CTRL.SumErrLimit +=Ai_CTRL.Error[0]; //误差变大的时候,求积分
if(Ai_CTRL.SumErrLimit<MAXNEGINTERG) //限幅,如果超过负的最大值, 保持为负的最大值
Ai_CTRL.SumErrLimit=MAXNEGINTERG;
////////////////////////////////////////////////////////////
Ai_CTRL.du = Ai_CTRL.Error[0]*Kp+Ai_CTRL.SumErrLimit*Ki/KI*Kp; //增益抑制模式 //
}
else //开环保持模式
{
if(((Ai_CTRL.Error[0]*Ai_CTRL.dErr[0])<0)||(Ai_CTRL.dErr[0]==0)) //误差变小的情况
{
Ai_CTRL.du = Ai_CTRL.SumErrLimit*Ki/KI*Kp;
}
else
{
Ai_CTRL.du = Ai_CTRL.PreviewOut;
}
}
}
else
Ai_CTRL.du=PWM_PERIOD; //升温
if(Ai_CTRL.du<0) Ai_CTRL.du=0;
if(Ai_CTRL.du>PWM_PERIOD) Ai_CTRL.du=PWM_PERIOD;
#ifdef _DEBUG
printf("%ld,",Ai_CTRL.CTEMP);
printf("%ld,%ld,",Ai_CTRL.Error[0],Ai_CTRL.dErr[0] );
printf("%ld,%ld,%d\n",Ai_CTRL.ECSUM,Ai_CTRL.SumErrLimit,(int)Ai_CTRL.du);
#endif
SetPWM((unsigned char)Ai_CTRL.du);
//保存上次输出
Ai_CTRL.PreviewOut=Ai_CTRL.du;
}
//functions prototype
/************************************************************************
仿人智能控制器//Humanoid Intelligent Controller
************************************************************************/
/*******************************************************************
模糊控制数据变量
********************************************************************/
void InitFuzzy(void)
{
Ai_CTRL.DoorOpenValue = 0 ;// 重新统计升温速度
Ai_CTRL.LowSpeedCnt=0;
SetPWM(PWM_PITCED);
}
/*********************************************************************
启动高温炉
**********************************************************************/
void CtrlStove(UCHAR cOpen, long lDefTemp, UCHAR cRate)
{
xdata StableTempTab psTmpTab;
//停止
SuspendTask(TASK_FUZZY);
InitFuzzy();
if(cOpen) //启动
{
Ai_CTRL.gDest = (((double)(0xFFFFFFUL<<2))/5000000UL)*K_Temp_Tab[lDefTemp]+20; //将 目标 温度值 转换 为 AD值
Ai_CTRL.CTEMP = (1010L-lDefTemp) ; //控温范围
ActiveTask(TASK_FUZZY, PWM_SCAN);
}
}
/**********************************************************************
设置PWM,PWM0控制高温炉
16MHz时,T=2*512/16=64uS,F=42.666KHz,计数周期=256,占空比=0%--99.61%
***********************************************************************/
sbit POUT = P1^3;
char gcPoutTimer = -1;
void StopPOut()
{
POUT = 1;
}
void SetPWM(UCHAR cPeriod)
{
/*
CMOD = 0x00; // Setup PCA timer
// Configure PCA0 Counter operating mode
CCAP0L=CCAP0H=cPeriod; // Set duty for TCM0
CCON =0x40;
CCAPM0=0x42; // Set TCM0 operationg mode
*/
long period;
StopTimer(&gcPoutTimer);
POUT = 1;
period = PWM_SCAN*cPeriod/255/10;
if(period>0)
{
POUT = 0;
gcPoutTimer = StartTimer(TIMER_MODE_ONCEROUTINE,period,StopPOut,0);
}
}
硬件:
1。用可控硅控制4.5KW电炉 用K型热电偶采集温度,采用cs1242做温度转换,可以到正负一度的精度
实验目标:
在300度到1000度内可对任意设定的温度恒温,精度先做到+/-1度吧
基本的控制实现方法:
因为是对加热的炉子温度进行控制,属于滞后效应系统,所以采样周期先定为2秒(这里指的是PID计算的周期,注意我的温度采样是实时的),所以CPU外部中断次数为15次/S,对应的功率计算结果输出为0~255,就是说把这2秒钟划分为255等份,根据计算的结果来决定在这2秒钟内应该加热多少等份
下面是控制曲线输出的表格 0.1度为单位
页次: 1