oldbeginner 发表于 2013-12-18 22:09:24

开源PLC学习笔记20( 迷你PWM文件转C)——2013_12_18

三菱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;      //存放翻译的缓存

CFile      outc;      //C输出文件

char * fp;

CString FilePMW;

CString m_FileC;
//*******定义完成*********

然后把上面的框架补充完整,就可以了。

只能识别LD OUT END命令和X Y寄存器


renpeng009 发表于 2013-12-18 23:22:37

呃,楼主可以出书了。看看会不会有主编联系你

yayasoso 发表于 2013-12-19 09:12:44

楼主辛苦了,楼主在这方面确实做大大量工作,希望能将这方面的东西整理出一本书!!!

oldbeginner 发表于 2013-12-19 10:02:12

yayasoso 发表于 2013-12-19 09:12
楼主辛苦了,楼主在这方面确实做大大量工作,希望能将这方面的东西整理出一本书!!! ...

学习别人,才走了一步,就要出书,没这么夸张的。

minwang440 发表于 2014-9-21 17:52:29

讲解很细致,楼主可以出个教程,多谢

yx20016 发表于 2015-6-23 16:42:14

佩服楼主{:victory:}

limaotaizi 发表于 2016-2-28 23:48:26

厉害,有空慢慢看
页: [1]
查看完整版本: 开源PLC学习笔记20( 迷你PWM文件转C)——2013_12_18