搜索
bottom↓
12
返回列表 发新帖
楼主: wisebaby

■ 仿三菱 FX1N PLC 下载通讯协议 C Code示范程序 V1.0.1版本 正式发布

  [复制链接]

出0入0汤圆

发表于 2009-9-15 10:06:27 | 显示全部楼层
打开GT Simulator2仿真器,启动

(原文件名:GT1.JPG)
主界面

(原文件名:GT2.JPG)
打开 仿真——选项 ,当前是与GX Developer的仿真连接的,可以跟模拟的CPU连接,没硬件的可以这样学触摸屏和PLC。

(原文件名:GT3.JPG)
选为跟PLC连接

(原文件名:GT4.JPG)
选择要模拟的触摸屏型号,这是例子对应的型号

(原文件名:GT5.JPG)
选好后,打开工程,yes

(原文件名:GT6.JPG)
ok

(原文件名:GT7.JPG)
读取

(原文件名:GT8.JPG)
成功连接

(原文件名:GT9.JPG)

出0入0汤圆

发表于 2009-9-15 09:53:50 | 显示全部楼层
【47楼】 wisebaby 明君
需要用下面的软件在PC上仿真一个三菱的触摸屏,然后监控其数据就行了。
GT Designer2 进行工程和画面创建、图形绘制、对象配置和设置、公共设置以及数据传输等的软件。
GT Simulator2 在PC机上模拟GOT运行的仿真软件
下载地址:
http://www.mitsubishielectric-automation.cn/download/dwn_idx_softwareDetail.asp?sid=8#

安装序列号:570-986818410

已编好的简单例子
点击此处下载 ourdev_481072.zip(文件大小:7K) (原文件名:未命名1.zip)

出0入0汤圆

 楼主| 发表于 2009-9-15 09:26:53 | 显示全部楼层
【42楼】 zxt_tnt 晓晓
不知道这个DEMO版本能不能支持GX Developer编程软件?
=========================================
调试的过程中我没有用过那个软件.抽时间我调试一下.


【44楼】 lenyufh
谢谢.
我抽时间尝试一下.

【46楼】 oste
要是能有您写的说明作为指导.那就事半功倍了.
============================================================================================================
以下内容为三菱 FX1N PLC 下载通讯协议 C Code示范程序 V1.0.3版本
点击此处下载 ourdev_481087.rar(文件大小:80K) (原文件名:MPC82G516 FX1NPLCCom V1.0.3.rar)

编译后截图如下:

(原文件名:-1.KEIL编译通过.jpg)

当前版本,改进内容如下:
1. 在原程序设置 8K容量下载时,如收到的程序大于 7K或(7.5K)后的程序请不要存储,作丢弃处理。在检验时,将大于 7K或(7.5K)后的程序以空操作指令(0xffff)发送。  
2. 再将程序作进一步修改,将收到的ASCII码格式转换成标准HEX格式存储,并且不用一整页存储,每次只存储半页,IAP浪费掉半页,这样RAM 页写缓冲区只需要 256字节了。
(第1.2条摘自【31楼】 yy888 许意义)修改后,RAM控制在500个字节以内.修改后,RAM控制在500个字节以内.
3.将功能扩展至 (摘自【37楼】 yy888 许意义)
三菱PLC一些主要的功能如下:
    1. 传送--->读入(写出) 已完成,传送--->核对 功能.(完整实现)
    2. 是否可加入  参数设置--->文件寄存器  选项。
       即需加入 寄存器数据--->读入(写出,核对) 功能.(请问.寄存器的数据量很大.大概32K.存哪?如何处理.下载协议已经在侦听后分析出来了.只要有地方存取.即可实现.)
    3. PLC存储器清除 功能..(仅能实现[清除PLC存储空间].[清除数据元件存储空间和[清除位元件存储空间]本来就没有.^_^])
    4. 还有 遥控运行/停止 功能,开始监控 功能. (侦听了很多数据.尚需要理论支撑.希望能够提供一些相关资料)

今后将陆续针对如下内容,推出升级版本.
    5.通讯功能,用于连接人机界面等。
    6.通讯OK了,监控功能就小儿科了,呵呵!
    7.在线修改功能(我用FX2N时经常提示不能超过128步)
    8.是否有必要支持GX Developer编程软件,如果有,也会加入.
(第5.6.7条摘自【39楼】 oste)

出0入0汤圆

发表于 2009-9-15 08:27:49 | 显示全部楼层
【40楼】 wisebaby 明君
软件下载中,稍后上传详细说明。

出0入4汤圆

发表于 2009-9-15 08:25:45 | 显示全部楼层

出0入0汤圆

发表于 2009-9-15 08:06:48 | 显示全部楼层
【40楼】 wisebaby 明君
用这个软件可以模拟人机和plc通讯
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3418132&bbs_page_no=2&bbs_id=3041
我可以提供测试好的pc端界面你要有三菱FX1N的PLC和下载线就可以了

出0入0汤圆

发表于 2009-9-14 22:19:49 | 显示全部楼层
不知道这个DEMO版本能不能支持GX Developer编程软件?

出0入0汤圆

 楼主| 发表于 2009-9-14 21:15:39 | 显示全部楼层
【31楼】 yy888 许意义

1. 在原程序设置 8K容量下载时,如收到的程序大于 7K或(7.5K)后的程序请不要存储,作丢弃处理。在检验时,将大于 7K或(7.5K)后的程序以空操作指令(0xffff)发送。

2. 再将程序作进一步修改,将收到的ASCII码格式转换成标准HEX格式存储,并且不用一整页存储,每次只存储半页,IAP浪费掉半页,这样RAM 页写缓冲区只需要 256字节了。

================================================
这两个要求已经满足搞定.RAM控制在500个字节以内.已经把涉及到RAM的部分由水灵灵的葡萄挤成了葡萄干.再挤.再挤也能挤,不过就成葡萄饼了.^_^

接下来【37楼】和【39楼】 需要侦听数据流.分析协议.我得一个一个慢慢来.明天上午上传一个DEMO版本.

出0入0汤圆

 楼主| 发表于 2009-9-14 21:04:28 | 显示全部楼层
【39楼】 oste
5.通讯功能,用于连接人机界面等。
=====================
这个我应该怎么调试?请指点一二,谢谢哈.

出0入0汤圆

发表于 2009-9-14 20:06:08 | 显示全部楼层
【36楼】 wisebaby 明君
行家不敢当,不过我和你一样今晚都在加班,不同的是我在写FX2N,你在写内核,呵呵!
明早测试DEMO版,辛苦了。
5.通讯功能,用于连接人机界面等。
6.通讯OK了,监控功能就小儿科了,呵呵!
7.在线修改功能(我用FX2N时经常提示不能超过128步)

出0入0汤圆

 楼主| 发表于 2009-9-14 18:05:34 | 显示全部楼层
【37楼】 yy888 许意义

OK.通宵测试.

明天上传DEMO版本.

出0入0汤圆

 楼主| 发表于 2009-9-14 16:55:46 | 显示全部楼层
【35楼】 oste  
是的,核对尚未加入.今后逐个加入.

那今后不如现在,今晚就开工.烦请OSTE帮忙看看都需要加入什么功能.列个清单.我今晚就开始调试.

又麻烦您了.^_^.您是行家,帮忙列一个清单即可.

出0入0汤圆

发表于 2009-9-14 16:18:40 | 显示全部楼层
【23楼】 wisebaby 明君
写出和读入都正常,核对不行。GX Developer 也不行,应该是还没有做这些功能吧?

出0入0汤圆

 楼主| 发表于 2009-9-14 16:06:02 | 显示全部楼层
【31楼】 yy888 许意义

程序改动时请分二步走。

1. 在原程序设置 8K容量下载时,如收到的程序大于 7K或(7.5K)后的程序请不要存储,作丢弃处理。在检验时,将大于 7K或(7.5K)后的程序以空操作指令(0xffff)发送。

2. 再将程序作进一步修改,将收到的ASCII码格式转换成标准HEX格式存储,并且不用一整页存储,每次只存储半页,IAP浪费掉半页,这样RAM 页写缓冲区只需要 256字节了。
===================================
您好.第一步,已经在【23楼】的V1.0.2版本已经实现.
第二步.为节省RAM,丢弃一半的IAP空间.即IAP每页512字节,实际只存256字节.剩余256字节丢弃.稍后上程序.

出0入0汤圆

发表于 2009-9-14 15:43:38 | 显示全部楼层
STC12C5410AD或STC12C5A32S2系列可以用吗?

出0入0汤圆

 楼主| 发表于 2009-9-14 14:45:22 | 显示全部楼层
【29楼】 yy888 许意义

请尽量将  串口收发缓冲区  压缩或和  MPC82G516A的IAP空间的页写缓冲区512字节  重迭使用。
===============================================================
可以适当将发送缓冲区的大小调小.

将下载的程序(ASCII码)每二字节转换成一字节HEX码存储在IAP空间中
==============================================================
好的.这样做既可以节约一半的IAP空间.又大大提高PLC程序运行效率.

出0入0汤圆

发表于 2009-9-14 14:04:19 | 显示全部楼层
已试过,可以用FX1N软件通讯。支持。

出0入0汤圆

发表于 2009-9-14 13:09:54 | 显示全部楼层
支持

出0入0汤圆

 楼主| 发表于 2009-9-14 13:06:34 | 显示全部楼层
欢迎大家拿出你们手头的简易型PLC,继续测试,提出宝贵意见。

我先去吃个早饭.^_^

出0入0汤圆

发表于 2009-9-14 13:03:28 | 显示全部楼层
支持

出0入0汤圆

发表于 2009-9-14 13:03:02 | 显示全部楼层
支持

出0入0汤圆

 楼主| 发表于 2009-9-14 13:01:05 | 显示全部楼层
【21楼】 yy888 许意义
1K RAM占用的太多了,请将下载的程序(ASCII码)每二字节转换成一字节HEX码存储在RAM中,则RAM占用量可减半。
===================================================================
在程序中占用RAM的只有2处,缺一不可.
1.串口收发缓冲区.详见UART.H文件.
#define OutLEN                        256                        //        FIFO 发送缓冲区长度
#define InLEN                        142                        //        超时收 接收缓冲区长度
2.在写MPC82G516A的IAP空间时需要512字节的页写缓冲区.详见IAP.C文件
void IAPFlashProgremMode(unsigned int codeaddr,unsigned char ucdata)        // 编程模式
{
        unsigned char checkdata=0;
        unsigned char retry=0;
        unsigned int  i=0;
        unsigned int  tempaddr=0;
        unsigned char pbuf[512];

这两个缓冲区占用RAM的源头.而【1K RAM占用的太多了,请将下载的程序(ASCII码)每二字节转换成一字节HEX码存储在RAM中,则RAM占用量可减半。】这个,可以说是【将下载的程序(ASCII码)每二字节转换成一字节HEX码存储在IAP空间中】,但是这样又需要一些代码和RAM空间作为支撑。如果需要做,也可以,下班之后处理。不过在写入程序的过程和读取程序的过程,都需要一个ASCII与HEX互相转化的过程,不过,从占用时间的角度、占用代码空间、占用RAM的角度都是一个浪费。是否需要加入,请审核后,给予明确答复。

【22楼】 lenyufh

嗯,这只是一个下载通讯协议部分.

============================================================================================================
以下内容为三菱 FX1N PLC 下载通讯协议 C Code示范程序 V1.0.2版本
点击此处下载 ourdev_480823.rar(文件大小:75K) (原文件名:MPC82G516 FX1NPLCCom V1.0.2.rar)
当前版本,对[存储容量]为2K.4K.8K.完全支持。经过几次验证,都可以正确下载。

由于简易PLC发货时 MPC82G516A 的IAP 容量 我不是很清楚,给大家的前期测试带来不便,对此,深表歉意。

//        默认当前MPC82G516A的设置为
//        1K  ISP Code
//        31K IAP Code
//        32K Flash Code

如图所示:

IAP实际空间为31K,而非楼主位的32K。 (原文件名:0.8051 Writer U1 下载HEX成功.jpg)

欢迎大家继续测试,提出宝贵意见。

出0入0汤圆

发表于 2009-9-14 11:45:51 | 显示全部楼层
目前好像还不能监控plc的状态,是不是没有把这个考虑进去?程序上传下载都正常,但运行不了程序

明白了,这个只是下载通讯协议部分,

呵呵,加油.

出0入0汤圆

 楼主| 发表于 2009-9-14 10:16:39 | 显示全部楼层
【17楼】 yy888 许意义

许工,您好.可否将您的电话告诉我.方便我们的及时沟通.

出0入0汤圆

发表于 2009-9-14 09:50:27 | 显示全部楼层
cool~记号~

出0入0汤圆

发表于 2009-9-13 18:01:17 | 显示全部楼层
静候佳音!
同时我自己也试找找问题.
       
unsigned int i;
        unsigned char PLCType=0x01;
        unsigned char keyval = 0;
        unsigned char PLCTypeArray[PLCTypeArrayLen]="FX1N PLC";        //        PLC类型标识;最长20个字节
        unsigned char code ArrFirstused[]="First used!\0";
        unsigned char code ArrPass[]="PASS!\0";
        PORTInit();
        Timer0Init();
        UartInit();
        InterrutptInit();

        PLCType=IAPFlashReadMode(PLCTypeAddr);                //        上电,核实 PLC 硬件版本号



                            自己加的,   发现灯一直亮,也就是说  PLCType也一直为0  
                   PLCType=IAPFlashReadMode(PLCTypeAddr);       
//////////////////////////////////////////////////////////////////////////////////////
         if(PLCType==0)  LED = 1 ;//P0.0口 的一个LED灯
         else               LED = 0 ;

//////////////////////////////////////////////////////////////////////////////////////



if(PLCType!=0)//        第一次使用. IAP -- "FX1NPLC\r\n".
        {

出0入0汤圆

 楼主| 发表于 2009-9-13 17:57:00 | 显示全部楼层
那就是我【10楼】的分析结果了.

你的程序死在了初始化上.待许工上线后,询问一下IAP及ISP空间大小后,统一调整,这个很容易,只需要修改一下FX1N.H里面的[MCUIAPFLASHSIZE][MCUISPFLASHSIZE]两个宏与FX1N.C里面的OrderSend3[PLC默认初始存储容量大小]即可.

出0入0汤圆

发表于 2009-9-13 17:52:15 | 显示全部楼层
我用的是简易型PLC.

下载的过程中P2.0上的那个指示灯都没有闪烁.

出0入0汤圆

 楼主| 发表于 2009-9-13 17:49:09 | 显示全部楼层
【11楼】 cyxavr 又一天

在那里可以看到IAP代码空间呢?

一开始写入就提示"通讯错误"的

自己从 从版主那拿到手,只是通过串口下载过程序下去.其他的没有动过.

====================================================================
IAP代码空间大小需要用8051 Writer U1经行查看.

我相信您在下载的过程中P2.0上的那个指示灯都没有闪烁吧?

初始化没有成功.这个问题等许工上线.问一下发货时IAP空间大小预设的是多少.这个我可以在软件上修改.

出0入0汤圆

发表于 2009-9-13 17:41:14 | 显示全部楼层
在那里可以看到IAP代码空间呢?

一开始写入就提示"通讯错误"的

自己从 从版主那拿到手,只是通过串口下载过程序下去.其他的没有动过.

你说的显示板,是那个变频器面板吗?

出0入0汤圆

 楼主| 发表于 2009-9-13 17:35:23 | 显示全部楼层
【9楼】 cyxavr 又一天

1.请问您知道您的MPC82G516A的IAP空间的大小吗?
本通讯协议要求:(请参见楼主位第0步的截图==0.8051 Writer U1 下载HEX成功==)
A.1K ISP代码空间
B.32K IAP代码空间
2.请问是写入初期就出错了对吗?
如果是,那说明前期的固定通讯协议就没有通过.这个现象,最有可能的就是您的IAP空间大小不对.导致程序初始化过程无法进行.

请参阅 main.c 中以下代码:
        PLCType=IAPFlashReadMode(PLCTypeAddr);                //        上电,核实 PLC 硬件版本号
        if(PLCType!=0)                                                                //        第一次使用. IAP -- "FX1N PLC\r\n".
        {
                for(i=0;i<MCUIAPFLASHSIZE*1024;i+=512)        //        全部擦除
                {
                        IAPFlashErasureMode(PLCIAPCODEAddr+i);
                }
                for(i=0;i<8000*4;i++)
                {
                        IAPFlashProgremMode(PLCIAPCODEAddr+i,0x46);
                }
                IAPFlashProgremMode(PLCTypeAddr,0);
                WriteFlash(PLCIAPCODEAddr,(unsigned char *)(OrderSend4+1),92);
                WriteFlash(PLCTypeAddr+1,(unsigned char *)PLCTypeArray,PLCTypeArrayLen);
                WriteFlash(PLCIAPCODEAddr+32200,(unsigned char *)(OrderSend3+1),92);
                WriteFlash(PLCIAPCODEAddr+32300,(unsigned char *)(OrderSend4+1),92);
                UartSendString(ArrFirstused);
        }
        else UartSendString(ArrPass);

如果IAP空间不对的话,整个初始化会受影响.不会通过的.会死在IAP.C中,具体参阅以下代码:
void IAPFlashProgremMode(unsigned int codeaddr,unsigned char ucdata)        // 编程模式
{
        unsigned char checkdata=0;
        unsigned char retry=0;
        unsigned int  i=0;
        unsigned int  tempaddr=0;
        unsigned char pbuf[512];
        do
        {
                IAPFlashProgrem(codeaddr,ucdata);
                if(++retry>2)                                                                        //        2次尝试机会
                {
                        tempaddr=codeaddr-codeaddr%512;                                //        计算当前页首地址
                        for(i=0;i<512;i++)
                        {
                                pbuf=IAPFlashReadMode(tempaddr+i);        //        读出当前页所有数据,备份
                        }
                        IAPFlashErasureMode(tempaddr);                                //        擦除当前页
                        for(i=0;i<512;i++)                                                        //        将备份写回
                        {
                                if(i==(codeaddr%512))IAPFlashProgrem(codeaddr,ucdata);
                                else IAPFlashProgrem(tempaddr+i,pbuf);
                        }
                }
                checkdata=IAPFlashReadMode(codeaddr);
                if(retry==5)====================================****这里****====================================
                {
                        while(1)        //        出错了,不写了,显示写错误的地址,请核对是否超出IAP空间大小
                        {
                                Value=codeaddr;
                                Out_EY_BIT();
                        }
                }
        }while(checkdata!=ucdata);
}

在if(retry==5)的时候,出错了,不写了,显示写错误的地址,请核对是否超出IAP空间大小.如果您用的是简易型PLC,请连接上显示板,看看地址是在什么位置.如果现实的是0x7C00地址.那么表明ISP与IAP空间标定大小不正确.需用8051 Writer U1经行调整.

出0入0汤圆

发表于 2009-9-13 17:27:29 | 显示全部楼层
【8楼】 wisebaby 明君
明君兄弟,我将FX1N的通讯HEX文件下载下去,再到与FXGP三菱PLC软件写入程时,提示通讯错误的?

图:
(原文件名:未命名.jpg)

出0入0汤圆

 楼主| 发表于 2009-9-13 16:59:20 | 显示全部楼层
【7楼】 zxt_tnt 晓晓

傻娃PLC的开发,自当竭尽全力.

届时会适应具体型号来编写.

出0入0汤圆

发表于 2009-9-13 16:35:57 | 显示全部楼层
辛苦了啊,对傻娃PLC来说这是关键性的一步啊!

出0入0汤圆

 楼主| 发表于 2009-9-13 16:26:58 | 显示全部楼层
【3楼】 oste

其实这些东西,完全可以在出差前,再给我一些时间就可以搞定.可惜当时实在是太紧了.

总之,耽搁的时间太久了.理应尽快完成.

出0入0汤圆

发表于 2009-9-13 15:01:22 | 显示全部楼层
辛苦了!猛料.
谢谢。

出0入0汤圆

发表于 2009-9-13 15:01:22 | 显示全部楼层
辛苦了!猛料.
谢谢。

出0入0汤圆

发表于 2009-9-13 14:15:08 | 显示全部楼层
【2楼】 wisebaby 明君
辛苦了,一来就猛料啊!

情大家快来测试一下啊!

出0入0汤圆

 楼主| 发表于 2009-9-13 12:48:23 | 显示全部楼层
【1楼】 rainbow 老陈
谢谢.

------------------------------------------------------
请各位针对当前版本下载通讯的程序,进行验证,提出宝贵意见.

出10入210汤圆

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

本版积分规则

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

GMT+8, 2024-5-20 20:52

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

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