|
三菱PLC的PWM文件其实就是通讯代码的文件格式,比如,
LD X2
OUT Y5
生成PWM文件后,使用16进制打开
上图红色圈内 02 24 05 C5 就是对应的代码,再复习一下
后面的很多FF只是为了凑足8K PLC空间(或其它大小)。
另外命令的起始地址就是 0x015C,在程序中会利用到。
***********************************
因为VC本身对我来说难度也非常大,所以学习方法和以前一样,只求简单。这里只会翻译LD OUT END指令,其它指令都忽略。
再复习一下计算偏移地址的方法
寄存器位(点)元件地址 ppp = 0-FFF,其分布如下:
寄存器名称 = 位地址 + 偏移量 = 实际地址ppp
X0-377(八进制) = (0-FF) + 400 = 400-4FF
Y0-377(八进制) = (0-FF) + 500 = 500-5FF
对应的函数就是
//对应函数
void ppp(unsigned int a)
{
a &= 0xfff;
if ((a>=0x400)&&(a<0x500))
{
sprintf(buf,"_X%0o_",a-0x400);
}
else if ((a>=0x500) && (a<0x600))
{
sprintf(buf,"_Y%0o_",a-0x500);
}
}
void ppp_YM(unsigned int a)
{
a &= 0xfff;
if ((a>=0x500) && (a<0x600))
{
sprintf(buf,"_Y%0o_",a-0x500);
}
else
{
sprintf(buf,"__ERROR__%#03x!\r\n",a);
}
}
***************************************
另外程序中使用了
CFile和
CFileDialoge类,
搜一下,资料很多,摘录一下,
//创建/打开文件
CFile file;
file.Open(_T("test.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite);
//写入数据
CString strValue = "Hello World!";
file.Write(strValue,strValue.GetLength());
//关闭文件
file.Close();
MFC的类CFileDialog用于实现这种功能。使用CFileDialog声明一个对象时,第一个BOOL型参数用于指定文件的打开或保存,当为TRUE时将构造一个文件打开对话框,为FALSE时构造一个文件保存对话框。
CFileDialog mFileDlg(TRUE,NULL,NULL,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,
"All Files (*.*)|*.*||",AfxGetMainWnd());
内容很多,以后慢慢理解,因为直接使用现成的就可以了。
******************************************
先搭框架
基于对话框,去掉菜单
void CPWM2C_MINIDlg::OnOpenfile()
void CPWM2C_MINIDlg::OnCompile()
编辑时,需要加入头文件
#include "stdio.h"
#include "string.h"
另外还需要定义全局变量
//********定义全局变量
unsigned long La=0;
char buf[100]; //存放翻译的缓存
CFile outc; //C输出文件
char * fp;
CString FilePMW;
CString m_FileC;
//*******定义完成*********
然后把上面的框架补充完整,就可以了。
只能识别LD OUT END命令和X Y寄存器
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|