搜索
bottom↓
回复: 6

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

[复制链接]

出0入0汤圆

发表于 2013-12-18 22:09:24 | 显示全部楼层 |阅读模式
三菱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碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2013-12-18 23:22:37 | 显示全部楼层
呃,楼主可以出书了。看看会不会有主编联系你

出0入0汤圆

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

出0入0汤圆

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

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

出0入0汤圆

发表于 2014-9-21 17:52:29 | 显示全部楼层
讲解很细致,楼主可以出个教程,多谢

出0入0汤圆

发表于 2015-6-23 16:42:14 | 显示全部楼层
佩服楼主

出0入0汤圆

发表于 2016-2-28 23:48:26 | 显示全部楼层
厉害,有空慢慢看
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 00:10

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表