搜索
bottom↓
回复: 155

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

  [复制链接]

出0入0汤圆

发表于 2009-9-13 12:35:02 | 显示全部楼层 |阅读模式
首先,向大家道个歉,自从加入PLC DIY团队至今已经有近5个月的时间.其中前两个月恶补PLC相关知识和编写PLC下载通讯协议的前期准备,从一个什么是PLC都不是很清楚的局面,到现在对PLC有较为细致的了解;第三个月开始全面启动PLC下载通讯协议的软件编写.由于工作上的原因,进度缓慢,开发的陆陆续续,八月初被抽调到福建开发SQL Server软件平台.直至上周才返回.回来近10天,处理了一些工作事宜,利用这周的时间,结合个人开发手册,重新回顾PLC相关开发进度以及开始进一步的探索.终于周四修成正果.这两天完善了一些子程序,整理相关说明和使用文档.现正式发布.

整个开发期间,感谢版主的引导和鼎力支持,同时也感谢网友OSTE和其他一些网友的热心帮助.

接下来,详细说明FX1N PLC 下载通讯的流程
Baud Rate: 9600
StopBits: 1, Parity: Even, DataBits: 7
Baud Rate: 9600
StopBits: 1, Parity: Even, DataBits: 7
PC : 05                                         //        ENQ 请求
PLC: 06                                         //        PLC 接收正确响应
PC : 02 30 30 45 30 32 30 32 03 36 43                 //        查询PLC 类型:FX1N\FX1S
PLC: 02 36 32 36 36 03 44 37                         //        '6266'PLC型号 FX1N;'C256'PLC型号 FX1S.

PC : 05                                         //        ENQ 请求
PLC: 06                                         //        PLC 接收正确响应
PC : 02 45 30 30 30 31 43 30 30 31 03 44 44         //        查询PLC 当前状态:暂停\运行
PLC: 02 30 41 03 37 34                                 //        '0A'PLC 暂停;'09'PLC 运行

PC : 05                                         //        ENQ 请求
PLC: 06                                         //        PLC 接收正确响应
PC : 02 30 30 45 30 32 30 32 03 36 43                 //        查询PLC 类型:FX1N\FX1S
PLC: 02 36 32 36 36 03 44 37                          //        '6266'PLC型号 FX1N;'C256'PLC型号 FX1S.

PC : 05                                         //        ENQ 请求
PLC: 06                                         //        PLC 接收正确响应
PC : 02 45 30 31 38 30 30 30 32 45 03 45 38         //        查询PLC [存储容量]等信息
PLC: 02 30 32 30 30 44 45 43                         //        当前为[存储容量]为2K的FX1N PLC回复
PLC: 42 30 30 30 30 30 30 30
PLC: 30 32 30 32 30 32 30 32
PLC: 30 32 30 32 30 32 30 32
PLC: 30 32 30 32 30 32 30 32
PLC: 30 32 30 32 30 32 30 32
PLC: 30 32 30 32 30 32 30 32
PLC: 30 32 30 32 30 32 30 32
PLC: 30 32 30 32 30 32 30 32
PLC: 30 32 30 32 30 32 30 32
PLC: 30 32 30 32 30 32 30 32
PLC: 30 32 30 32 30 03 44 46
PC : 02 45 30 31 38 30 32 45 32 45 03 46 46         //        未知查询实为何意.暂且定位为固定通讯协议.
PLC: 02 32 30 32 30 46 34 30                         //        未知回复实为何意.暂且定位为固定通讯协议.
PLC: 39 46 46 30 42 46 34 30
PLC: 31 45 37 30 33 36 34 30
PLC: 45 43 37 30 45 44 43 30
PLC: 45 46 46 30 45 39 30 30
PLC: 31 46 45 30 33 30 30 30
PLC: 30 30 30 30 30 30 30 30
PLC: 30 30 30 30 30 30 30 30
PLC: 30 30 30 30 30 30 30 30
PLC: 30 30 30 30 30 30 30 30
PLC: 30 30 30 30 30 30 30 30
PLC: 30 30 30 30 30 03 45 35

PC : 05                                         //        ENQ 请求
PLC: 06                                         //        PLC 接收正确响应
PC : 02 45 30 30 30 45 30 36 30 32 03 45 35         //        未知查询实为何意.暂且定位为固定通讯协议.
PLC: 02 30 38 30 30 03 43 42                         //        未知回复实为何意.暂且定位为固定通讯协议.

PC : 05                                         //        ENQ 请求
PLC: 06                                         //        PLC 接收正确响应
PC : 02 45 30 31 38 30 35 43 34 30 03 45 44         //        查询0x805c 地址开始的数据
PLC: xx xx ...
PC : 02 45 30 31 38 30 39 43 33 43 03 30 33
PLC: xx xx ...

PC : 05                                         //        ENQ 请求
PLC: 06                                         //        PLC 接收正确响应
PC : 02 45 37 37 36 30 45 03 36 31
PLC: 06                                         //        PLC 接收正确响应

PC : 05                                         //        ENQ 请求
PLC: 06                                         //        PLC 接收正确响应
PC : 02 45 31 31 38 30 35 43 34 30 xx xx ... 03 xx xx        //        开始从0x805c 地址开始写数据
PLC: 06                                         //        PLC 接收正确响应
PC : 02 45 31 31 38 30 39 43 34 30 xx xx ... 03 xx xx        //        0x809c 依次写
PLC: 06                                         //        PLC 接收正确响应

PC : 05                                         //        ENQ 请求
PLC: 06                                         //        PLC 接收正确响应
PC : 02 45 38 37 36 30 45 03 36 32                 //        未知查询实为何意.暂且定位为固定通讯协议.
PLC: 06                                         //        PLC 接收正确响应

PC : 05                                         //        ENQ 请求
PLC: 06                                         //        PLC 接收正确响应
PC : 02 42 03 34 35                                 //        未知查询实为何意.暂且定位为固定通讯协议.
PLC: 06                                         //        PLC 接收正确响应

PC : 05                                         //        ENQ 请求
PLC: 06                                         //        PLC 接收正确响应
PC : 02 45 30 31 38 30 35 43 34 30 03 45 44         //        开始从0x805c 地址开始校验写的数据
PLC: xx xx ...
PC : 02 45 30 31 38 30 39 43 34 30 03 xx xx        //        0x809c 依次校验
PLC: xx xx ...                                        //        校验到最后 OVER 完成下载

这里面需要注意的有3:
1.PLC[存储容量],[存储容量]不同的PLC,在回复过程中,略有不同[程序中已总结].本PLC采用32K存储空间,可存储8000步的程序.
2.PLC中所谓的0x805c地址与实际MCU地址的对应关系.例如: PLC(0x805c地址)--相对(0x0000地址)--MCU[IAP地址](0x7c00)[程序中已明确说明]
3.[未知查询语句]的处理[将已发现的有实际意义的语句定义在IAP空间].

[仿三菱 FX1N PLC 下载通讯协议 C Code示范程序 V1.0.1版本]源码如下:
点击此处下载 ourdev_480484.rar(文件大小:74K) (原文件名:MPC82G516 FX1NPLCCom V1.0.1.rar)
简易型PLC PCBProj
点击此处下载 ourdev_480485.rar(文件大小:631K) (原文件名:简易型PLC PCBProj.rar)
8051_Writer_U1_v1.16
点击此处下载 ourdev_480486.rar(文件大小:1.50M) (原文件名:8051_Writer_U1_v1.16.rar)
8051_OCD_ICE_v2.10
点击此处下载 ourdev_480487.rar(文件大小:5.49M) (原文件名:8051_OCD_ICE_v2.10.rar)
8051_COM_port_ISP_v1.04
点击此处下载 ourdev_480488.rar(文件大小:1.89M) (原文件名:8051_COM_port_ISP_v1.04.rar)
FXGPWIN
点击此处下载 ourdev_480489.rar(文件大小:771K) (原文件名:FXGPWIN.rar)
实验用PLC FIREWORKS[截图中]
点击此处下载 ourdev_480490.rar(文件大小:893字节) (原文件名:PLCFIREWORKS.rar)


然后,图文说明使用及验证方法.
-1.KEIL编译通过:

(原文件名:-1.KEIL编译通过.jpg)
0.8051 Writer U1 下载HEX成功[此截图为中文版本的软件,如您使用的软件为英文版本请一一对应即可],此步骤可能在大家领取简易PLC套件的时候已经做了处理,主要目的有四,一是插入COMPortISP V1.04版本的ISP代码,二是设置ISP空间为1K.三是设置IAP空间为32K.四是如图设置熔丝位(FUSE)[可以选中LOCK.SB.]
如果您是新购买的MPC82G516A,那需要一台8051 Writer U1 如图下载HEX(要插入COMPortISP V1.04版本的ISP代码,今后就可以用串口下载程序了).否则无法使用.[即开发基于MPC82G516A的简易PLC第0步是必不可少的]

(原文件名:0.8051 Writer U1 下载HEX成功.jpg)
使用串口下载MPC82G516A请参见第1.2.3.4.步骤
1.1.COMPortISP MCU选型

(原文件名:1.COMPortISP MCU选型.jpg)
2.COMPortISP 加载HEX文件

(原文件名:2.COMPortISP 加载HEX文件.jpg)
3.COMPortISP 加载HEX后

(原文件名:3.COMPortISP 加载HEX后.jpg)
4.COMPortISP 下载HEX成功

(原文件名:4.COMPortISP 下载HEX成功.jpg)
使用FXGPWIN软件下载PLCFireworks-PMW梯形图文件至PLC.请参见第5步至最后
5.打开FXGPWIN软件

(原文件名:5.打开FXGPWIN软件.jpg)
6.用FXGPWIN软件打开PLCFireworks

(原文件名:6.用FXGPWIN软件打开PLCFireworks.jpg)
7.PLCFireworks类型为FX1N--确定

(原文件名:7.PLCFireworks类型为FX1N--确定.jpg)
8.PLCFireworks-PWM梯形图

(原文件名:8.PLCFireworks-PMW梯形图.jpg)
9.依次点击菜单栏PLC--传送--写出

(原文件名:9.依次点击菜单栏PLC--传送--写出.jpg)
10.如果是第一次使用[PLC存储容量--2K]请选择[所有范围]而后单击[确定]

(原文件名:10.如果是第一次使用[PLC存储容量--2K]请选择[所有范围]而后单击确定.jpg)
11.正在写入界面

(原文件名:11.正在写入界面.jpg)
12.正在校验界面

(原文件名:12.正在校验界面.jpg)
13.[范围设置]0~41这样下载速度飞快

(原文件名:13.[范围设置]0~41这样下载速度飞快.jpg)
请注意:
A.第8步的截图下方的PLC存储容量为2K.本次研制的PLC默认初始存储容量为8K.下面介绍正确下载当前梯形图的两种方式:
AA.采用第10步的方法,写出设置中,选择[所有范围]而后单击[确定],采用这种方法会改变PLC存储容量.由8K,变为2K.
AB.选项--参数设置--修改[PLC存储容量]默认为8K,改成8K.请参见以下两张截图.

(原文件名:14.选项--参数设置--修改[PLC存储容量]默认为8K.jpg)


(原文件名:15.设置为8K后梯形图界面.jpg)

B.若PLC存储容量为8K,要下载一个存储容量为2K,41步的PMW梯形图文件,只有在使用AA的方法之后,才可以使用第13步的截图[即范围设置为0~41].否则下载会出错.[实际的FX1N PLC亦是如此.]

最后,请各位针对当前版本下载通讯的程序,提出宝贵意见.不断升级、改进Our PLC的性能.升级版本将陆续在AVR单片机.STM32单片机上实现.详情敬请关注儍娃PLC.
另,再次感谢网友OSTE提供FX1N PLC一台,供实验,提取可靠的通信数据.
卢明君
2009.09.13


以下蓝色文字由版主:yy888 于:2009-09-26,08:07:29 加入。
更新后的 三菱 FX1N PLC 下载通讯协议 C Code示范程序 V1.0.4版本


以下内容为三菱 FX1N PLC 下载通讯协议 C Code示范程序 V1.0.4版本  
点击此处下载 ourdev_485313.rar(文件大小:85K) (原文件名:MPC82G516 FX1NPLCCom V1.0.4.rar)

编译后截图如下:

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

当前版本,改进内容如下:
(摘自【58楼】 yy888 许意义)
三菱PLC一些主要的功能如下:   
    1. 传送--->读入(写出) 已完成,传送--->核对 功能.(完整实现) ................ ok!  
    2. 是否可加入  参数设置--->文件寄存器  选项。   
       即需加入 寄存器数据--->读入(写出,核对) 功能.(请问.寄存器的数据量很大.大概32K.存哪?如何处理.下载协议已经在侦听后分析出来了.只要有地方存取.即可实现.) ................ 文件寄存器 实际上是将部分多余的程序寄存器划出,如程序寄存器空间设定4K, 划出2K文件寄存器,则程序寄存器空间只有2K了。  
    3. PLC存储器清除 功能..(仅能实现[清除PLC存储空间].[清除数据元件存储空间和[清除位元件存储空间]本来就没有.^_^]) ................ 只要求实现[清除PLC存储空间]。  
    4. 还有 遥控运行/停止 功能,开始监控 功能. (侦听了很多数据.尚需要理论支撑.希望能够提供一些相关资料)  ................ 可晚一步做。

以下蓝色文字由 yy888 于:2009-09-17,06:32:38 加入。
--------------------------------------------------------------------------------

关于 第2条,你可分下面几步走:  
1. 先在 参数设置--->文件寄存器  选项 中选择设置一小部分文件寄存器。
2. 调通 传送--->读入(写出,核对) 功能(和不划分文件寄存器时有点异同)。  
3. 调通 寄存器数据--->读入(写出,核对) 功能。
--------------------------------------------------------------------------------
修改后:
[文件寄存器(r)]和[注释区(m)]都已经做到PLC当中.
【注意】:仅支持文件寄存器,不支持数据寄存器。数据寄存器的相关内容第三点也有说到,有待于今后升级再考虑。

(摘自【64楼】 oldtom )
重构的几个建议:
0. void FX1NProcessing(void) 这个函数也太庞大了。通信的过程应该是解码,处理,编码的过程,建议还是分开处理可能会好点。
1.检验校验判断单独做一个函数! 检验应该不是CRC校验吧?是和校验吧?  
2. 像类似  else if((UartReceiveBuffer[1]==0x45)\
&(UartReceiveBuffer[2] ==0x31)\
&(UartReceiveBuffer[3] ==0x31))

  我猜测着可能是功能码吧?建议用宏来定义实现.
--------------------------------------------------------------------------------
修改后:
0.FX1NProcessing是否有必要做成几个分立函数,和如何去做,有待于论证.待功能稳定后的版本问世后会调整这个函数模块.
1.是"和校验"已经将CRC字样改为SUM字样.
2.目前这个功能码究竟是何含义尚不明朗.不是所有的功能码我都能说出其含义.所以有待于最后敲定.敲定后就会在头文件中申明.
3.已经添加了"您在例子中对函数前面加入的函数说明".
4.在[IAP.C]中的IAPFlashProgremMode函数中,加入了.在写字节之前先读取字节.将读取的字节与带写入的字节进行判断,判断不相等后,再写入,相等就不必写入重新写入了.
5.去掉了调试函数FX1NDebug.即下载期间不会再有指示灯指示.
6.RAM控制在(xdata)238+(data)17.0  如果需要今后升级可考虑再节约.
实现节约RAM办法:
在IAP的过程中,原来用256个字节的RAM.现在改为用3个字节的RAM.一个整型循环变量i,一个倒数用的临时变量tempdata,再加一页IAP缓存备份空间.用暂存在IAP内的方法使得RAM的占用量大大减小.

出0入0汤圆

发表于 2022-4-8 13:52:58 | 显示全部楼层
楼主有FX系列PLC扩展口扩展模块的协议吗?

出0入0汤圆

发表于 2021-8-16 16:23:51 | 显示全部楼层
学习。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

出0入0汤圆

发表于 2020-11-3 13:54:29 | 显示全部楼层
FX1N PLC 下载通讯协议 感谢分享

出0入0汤圆

发表于 2015-11-16 07:35:44 | 显示全部楼层
能共享一下fx2n源码吗?yzq707@sina.com

出0入0汤圆

发表于 2015-11-15 17:52:32 | 显示全部楼层
93434387@qq.com 发表于 2015-2-11 16:19
正好下载了一个fx2n的源码,和这个对应起来看一个会有很多收获的




fx2n的源码,能共享学习下吗?


出0入0汤圆

发表于 2015-2-11 16:19:24 | 显示全部楼层
正好下载了一个fx2n的源码,和这个对应起来看一个会有很多收获的

出0入0汤圆

发表于 2013-4-23 11:39:35 | 显示全部楼层
真心谢谢楼主的这个框架装修就靠自己了!谢谢

出0入0汤圆

发表于 2013-4-12 08:04:08 | 显示全部楼层
真心谢谢楼主的这个框架,虽然里面的错误不少,程序框架有了,装修就靠自己了!谢谢

出0入0汤圆

发表于 2012-11-12 11:22:12 | 显示全部楼层
学习ing。。。

出0入0汤圆

发表于 2012-11-7 15:53:14 | 显示全部楼层
本帖最后由 any_014 于 2012-11-7 17:31 编辑
xy369 发表于 2012-8-7 19:58
请问一下,在程序里面的这个函数:
void UartSendchar(unsigned char ucdata)
{


-------------------------
大致明白了。
串口缓冲区UartSendBuffer长度有限,当放入的数据太长超过了缓冲区的长度,指针就会有堆栈底部重新指向堆栈顶部,但是可能会覆盖尚未发送出去的数据。为了防止出现这种情况,设置放入指针和取出指针间有2个字节的距离。如果两个指针靠得太近,就暂停放入堆栈。

但是我还是有疑问,void UartSendchar(unsigned char ucdata)函数作用是放一个字节到缓冲区,该函数执行一次,将会放一个字节到缓冲区,并且当UartSendBufferHaveDataFlag=1时会将*outlast里的字节通过串口发送出去。但UartSendBufferHaveDataFlag我没看到别的地方用到啊。

-----------------
在串口中断里看到了UartSendBufferemptyFlag...
void UartSendchar(unsigned char ucdata)函数放一个字节到缓冲区,如果放字节到缓冲区的速度比串口发送字节的速度快的话,则只是第一次运行时从串口发送一个字节,利用串口中断自动发送其余的字节;相反,如果慢的话,则每执行一次该函数时在函数内执行一次串口发送字节。
但还是感觉UartSendBufferemptyFlag和UartSendBufferemptyFlag有点重复。

--------------------------------
FX1N.C中 函数void FX1NProcessing(void) 中的这句  sumdata=asctohex((unsigned char *)(UartReceiveBuffer+UartReceiveCounter-2)); 看不懂,求人指点。
UartReceiveBuffer是接受缓冲器,UartReceiveCounter是接受计数器,这两个相加是什么?

出0入0汤圆

发表于 2012-10-31 17:02:21 | 显示全部楼层
和146楼同问.

出0入0汤圆

发表于 2012-8-7 19:58:30 | 显示全部楼层
请问一下,在程序里面的这个函数:
void UartSendchar(unsigned char ucdata)
{
        ES=0;                                                             // 暂停串行中断,以免数据比较时出错
        while((((outlast-putlast)==2)&&(outlast > putlast ))||((outlast < putlast)&&(OutLEN-(putlast-outlast)==2)))
    {
                ES=1;
                ucdata++;
                ucdata--;
                ES=0;
    }
    *putlast=ucdata;                                                // 放字节进入缓冲区
    putlast++;                                                  // 发送缓冲区指针加1
    if (putlast==UartSendBuffer+OutLEN) putlast=UartSendBuffer;                // 指针到了顶部换到底部
    UartSendBufferHaveDataFlag=1;
    if (UartSendBufferemptyFlag)                         // 缓冲区无数据
    {
        UartSendBufferemptyFlag =0;
        SBUF=*outlast;                                            // 未发送完继续发送
        outlast++;                                                // 最后传出去的字节位置加1
        if (outlast==UartSendBuffer+OutLEN)outlast=UartSendBuffer;        // 地址到顶部回到底部
        if (putlast==outlast)UartSendBufferHaveDataFlag=0;                        // 数据发送完置发送缓冲区空标志
    }                                                                                // 缓冲区开始为空,置为有,启动发送
        ES=1;
}
中的那段        while((((outlast-putlast)==2)&&(outlast > putlast ))||((outlast < putlast)&&(OutLEN-(putlast-outlast)==2)))
    {
                ES=1;
                ucdata++;
                ucdata--;
                ES=0;
    }

好像没有什么作用,请问能解释它有什么用吗?

出0入0汤圆

发表于 2012-7-7 11:36:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-6-7 11:38:15 | 显示全部楼层
在“选项”->“串行口设置”里,“协议”选择“RS instruction”还是“Link”,这两个我都试了,但是,在下载PLC程序的时候,都没有数据发送到串口上。

出0入0汤圆

发表于 2012-6-7 11:29:45 | 显示全部楼层
你好,我从网上下了一个FXGP-WIN-C的V3.0版本,怎么点击“PLC”->“写入”的时候串口上没有任何数据流呢?

出0入0汤圆

发表于 2012-4-30 23:15:27 | 显示全部楼层
最近在了解PLC,标记

出0入0汤圆

发表于 2011-11-18 19:08:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-18 17:21:47 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-8-20 16:30:00 | 显示全部楼层
不错不错啊。。。学习到了

出0入0汤圆

发表于 2011-8-5 06:40:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-4 11:11:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-27 00:01:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-26 23:15:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-19 16:38:43 | 显示全部楼层
请问那个烧写的ISP引导是楼主另外写的还是说就是苼泉原来的啊
新手 请各位大侠指点 感激

出0入0汤圆

发表于 2011-5-17 10:47:59 | 显示全部楼层
牛人

出0入0汤圆

发表于 2011-5-10 14:22:05 | 显示全部楼层
还有没有更新啊?

出0入0汤圆

发表于 2011-4-30 10:11:58 | 显示全部楼层
支持

出0入0汤圆

发表于 2011-4-30 00:10:28 | 显示全部楼层
好东西

出0入0汤圆

发表于 2011-3-8 22:55:26 | 显示全部楼层
好东西  谢谢

出0入9汤圆

发表于 2011-3-6 06:52:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-6 03:05:15 | 显示全部楼层
为什么我的AT89S52无法连接啊!还请楼主指点!

出0入0汤圆

发表于 2011-3-6 03:04:01 | 显示全部楼层
请问AT89S52可以用吗?谢谢!

出0入0汤圆

发表于 2011-3-4 13:54:12 | 显示全部楼层
牛A与牛C之间的帖子,总是如此振奋人心!!

出0入0汤圆

发表于 2011-1-8 16:45:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-5 15:10:41 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-1-5 14:10:38 | 显示全部楼层
大家齐心协力把PLC开发进行到底~

出0入0汤圆

发表于 2010-4-24 12:49:58 | 显示全部楼层
协议整套在手上,值不值钱啊?

出0入0汤圆

发表于 2010-3-29 12:43:20 | 显示全部楼层
感谢分享~~~~

出0入0汤圆

发表于 2010-3-28 21:51:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-23 17:45:47 | 显示全部楼层
好贴!

出0入0汤圆

发表于 2010-3-7 20:24:43 | 显示全部楼层
精华

出0入0汤圆

发表于 2010-1-2 23:33:17 | 显示全部楼层
好东东!

出0入0汤圆

 楼主| 发表于 2009-11-21 21:13:18 | 显示全部楼层
【110楼】 biscuit2 叶工

当FX1N PLC的梯形图为8000步的格式,下载的时候不指定步数,就会出现上面的数据。
============================================================================
您好.如果我没有理解错的话,您说的[不指定步数],即在下载的是很选择[所有范围],对吗?

如果[是],那我手头的三菱 FX1N PLC 没有检测到.而且从未检测到过.
如果[否],那麻烦您在说的具体点.谢谢.

出0入0汤圆

发表于 2009-11-18 12:58:32 | 显示全部楼层
都是牛人啊,自愧不如阿

出0入0汤圆

发表于 2009-11-17 19:21:08 | 显示全部楼层
MPC82G516A的编程器那里有买?

出0入0汤圆

发表于 2009-11-17 17:55:04 | 显示全部楼层
当FX1N PLC的梯形图为8000步的格式,下载的时候不指定步数,就会出现上面的数据。

出0入0汤圆

 楼主| 发表于 2009-11-17 15:18:54 | 显示全部楼层
【108楼】 biscuit2 叶工
多谢您指出,软件不足之处.
只是
1.您补充的这两组通信协议.我在监听的过程中,的确没有遇到过.
2.您指出的【9楼】 cyxavr 又一天 网友的问题,已经在【28楼】 cyxavr 又一天 中得到解决.而我也并没有在程序中添加您所谓的那"两组协议".

不过还是多谢您对开源项目的关心和支持.再次表示感谢.

出0入0汤圆

发表于 2009-11-17 15:07:08 | 显示全部楼层
TO 【9楼】 cyxavr 又一天
积分:334
派别:
等级:------
来自:广东广州
【8楼】 wisebaby 明君
明君兄弟,我将FX1N的通讯HEX文件下载下去,再到与FXGP三菱PLC软件写入程时,提示通讯错误的?

原因是wisebaby 明君 提供的FX1N下载协议不够全面,没有指定步数默认下载的时候,需要补充如下两组协议
我用代码表示
//写8000步固定格式
//02 45 31 31 38 30 30 30 32 45 30 38 30 30 32 35 36 44
//30 30 30 30 30 30 30 30 32 30 32 30 32 30 32 30 32 30
//32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30
//32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30
//32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30 32 30
//32 30 32 30 32 30 32 30 32 30 32 30 03 39 45
if(v[1]==0X45)if(v[2]==0X31)if(v[3]==0X31)if(v[4]==0X38)
if(v[5]==0X30)if(v[6]==0X30)if(v[7]==0X30)if(v[8]==0X32)
if(v[9]==0X45)if(v[10]==0X30)if(v[11]==0X38)if(v[12]==0X30)
if(v[13]==0X30)//if(v[14]==0X32)if(v[15]==0X35)if(v[16]==0X36)
if(v[17]==0X44)if(v[18]==0X30)if(v[19]==0X30)if(v[20]==0X30)
{wait();UDR0=0X06;}
//写8000步固定格式
// 02 45 31 31 38
//    30 32 45 32
//    45 32 30 32
//    30 46 34 30
//    39 46 46 30
//    42 46 34 30
//    31 45 37 30
//    33 36 34 30
//    45 43 37 30
//    45 44 43 30
//    45 46 46 30
//    45 39 30 30
//    31 46 45 30 33
// 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
// 30 30 30 30 30 30 30 30 30 30 03 45 32
if(v[1]==0X45)if(v[2]==0X31)if(v[3]==0X31)if(v[4]==0X38)
if(v[5]==0X30)if(v[6]==0X32)if(v[7]==0X45)if(v[8]==0X32)
if(v[9]==0X45)if(v[10]==0X32)if(v[11]==0X30)if(v[12]==0X32)
if(v[13]==0X30)if(v[14]==0X46)if(v[15]==0X34)if(v[16]==0X30)
if(v[17]==0X39)if(v[18]==0X46)if(v[19]==0X46)if(v[20]==0X30)
{wait();UDR0=0X06;}

这样默认下载8000步就不会出错了。

出0入0汤圆

发表于 2009-11-17 14:31:04 | 显示全部楼层
学习呀。。。

出0入0汤圆

发表于 2009-11-17 13:56:41 | 显示全部楼层
厉害。我什么时候也可以参与学习一下!

出0入0汤圆

发表于 2009-11-16 23:15:50 | 显示全部楼层
ding

出0入0汤圆

 楼主| 发表于 2009-11-15 19:34:48 | 显示全部楼层
【103楼】 jiancongai


哈哈.
你好.我有几天没有过来了.公司的活太忙了.
您看,公司的活我都忙不过来,何况网站的开源项目也在等着我.排队也做不了您的这个活,不好意思,另请高明吧,如果有小问题,我能帮上忙的,很乐意帮助,本着助人为乐的精神,报酬免谈.

出0入0汤圆

发表于 2009-11-9 18:29:58 | 显示全部楼层

出0入0汤圆

发表于 2009-11-9 18:27:05 | 显示全部楼层

出0入0汤圆

发表于 2009-11-9 09:55:01 | 显示全部楼层
【97楼】 z7001
    谢谢大家对简易PLC的支持!但GT Designer2是三菱人机界面的编辑软件,DX Developer是三菱PLC的编辑软件。你说的应该是后者。
【98楼】 wisebaby 明君
    GT Designer2模拟的人机界面与PLC连接时会先读取PLC的类型信息(这个我监控过,不过没有弄懂里面的意思),然后再根据画面的需要读写数据(数据方式见下面)。其他品牌(西门子、威伦、松下)的人机界面没有读取PLC的类型信息,就开始读写数据了。


三菱Fx系列PLC编程口通讯协议
摘自:  http://blog.gongkong.com/blog_detail.asp?id=204111
一、三菱PLC编程口通讯协议
三菱PLC编程口的通讯协议比较简单,只有四个命令,即:
命令                        命令码                   目标设备
DEVICE READ CMD             "0"  30H                 X,Y,M,S,T,C,D
DEVICE WRITE CMD            "1"  31H                 X,Y,M,S,T,C,D
FORCE ON CMD                "7"  37H                 X,Y,M,S,T,C
FORCE OFF CMD               "8"  38H                 X,Y,M,S,T,C
五个标示:
ENQ                        05H             请求
ACK                        06H             PLC正确响应
NAK                        15H             PLC错误响应
STX                        02H             报文开始
ETX                        03H             报文结束
使用累加方式的和校验,帧格式如下:
STX CMD DATA ...... DATA ETX SUM(upper) SUM(lower)
和校验:
SUM= CMD+……+ETX。 如SUM=73H,SUM=“73”。

1、DEVICE READ(读出软设备状态值)
计算机向PLC发送:
始          命令              首地址                          位数             终                 和校验
STX       CMD             GROUP ADDRESS       BYTES         ETX              SUM
PLC 返回
STX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM
2、DEVICE WRITE(向PLC 软设备写入值)
计算机向PLC发送:
始          命令      首地址          位数             数据             终                  和校验
PLC 返回
ACK (06H) 接受正确
NAK (15H) 接受错误
3、位设备强制置位/复位
FORCE ON 置位
始                 命令              地址                     终                 和校验
STX              CMD             ADDRESS            ETX              SUM
02h               37h               address                 03h              sum
FORCE OFF 复位
始                 命令              地址                     终                 和校验
STX              CMD             ADDRESS            ETX              SUM
02h               38h               address                 03h               sum
PLC 返回
ACK(06H) 接受正确
NAK(15H) 接受错误

以上可以看出,协议非常简单,但是由于没有寄存器类型信息,所以地址的计算十分关键,如D100和M100分别对应哪个地址呢?下面就是三菱Fx系列PLC地址对应表:
Public Const PLC_D_Base_AddRess = 4096                                                1000H
Public Const PLC_D_Special_Base_AddRess = 3584                                        e00H
Public Const PLC_Y_Group_Base_AddRess = 160                                                a0H
Public Const PLC_PY_Group_Base_AddRess = 672                                                2a0H
Public Const PLC_T_Group_Base_AddRess = 192                                                c0H
Public Const PLC_OT_Group_Base_AddRess = 704                                                 2c0H
Public Const PLC_RT_Group_Base_AddRess = 1216                                                 4c0H
Public Const PLC_M_SINGLE_Base_AddRess = 2048(命令为7或8时)                                  800H
Public Const PLC_M_Group_Base_AddRess = 256                                                100H
Public Const PLC_PM_Group_Base_AddRess = 768                                                 300H
Public Const PLC_S_Group_Base_AddRess = 0                                                0H
Public Const PLC_X_Group_Base_AddRess = 128                                                80H
Public Const PLC_C_Group_Base_AddRess = 448                                                1c0H
Public Const PLC_OC_Group_Base_AddRess = 960                                                 3c0H
Public Const PLC_RC_Group_Base_AddRess = 1472                                                 5c0H
Public Const PLC_TV_Group_Base_AddRess = 2048                                                 800H
Public Const PLC_CV16_Group_Base_AddRess = 2560                                        a00H
Public Const PLC_CV32_Group_Base_AddRess = 3072                                        c00H
当我们用DEVICE READ命令时,D100地址=100*2+4096;M100地址=100+256;不同的是D类型寄存器存放的是字,M寄存器存放的是位,同样是读两个字节,D100返回的就是PLC中D100地址的值,M类型寄存器返回的是M100到M116的值。所以当我们用FORCE ON 命令时,M100寄存器地址=100+2048;

这也没有什么复杂的,不是吗?可是三菱公司好像不甘于如此,FORCE ON/Off命令中地址排列与DEVICE READ/WRITE不同,是低位在前高位在后。如Y20,地址是0510H,代码中4个字节地址表示为:1005。(注意:Y寄存器为八进制,如Y20地址=16+1280=0510H)

出0入0汤圆

 楼主| 发表于 2009-11-9 09:37:55 | 显示全部楼层
【97楼】 z7001

我已经与OSTE取得联系.
多谢各位支持.

如果有必要,我也会发帖求教的.在此先谢过几位.

出0入0汤圆

发表于 2009-11-9 05:33:52 | 显示全部楼层
GX Designer这个软件比较FXGPWIN 来说方便很多,协议上可能有少许区别。
还可以SIM,
  楼上可以把[GT Designer2]问题贴出来,我想有许多人会用这个软件的,。。。。。
本人用的不多,略知一二。看能帮得上不。。。。

出0入0汤圆

 楼主| 发表于 2009-11-9 01:42:55 | 显示全部楼层
【49楼】 oste
OSTE,您好.有段时间没有联系您了.
我在这个[GT Designer2]软件的使用方面有些疑问,并且在PLC的个别使用问题上想请教您一下.

您给我邮寄PLC时,盒子上您的电话看不清了.我需要与您取得沟通.请告之我您的电话.或直接致电于我.15010725918.

出0入0汤圆

发表于 2009-11-7 19:52:28 | 显示全部楼层
确实不错的总结

出0入0汤圆

发表于 2009-11-7 09:30:29 | 显示全部楼层
顶起来!

出0入0汤圆

发表于 2009-10-20 18:44:13 | 显示全部楼层
都是业余,时间长短快慢,大家应该都能理解和支持!

出0入0汤圆

 楼主| 发表于 2009-10-20 14:31:41 | 显示全部楼层
升级版本会陆续在【★ 简易PLC 梯型图 解释型监控 示范程序 测试版(51)----直接使用三菱FXGPWIN软件!】一帖中推出,链接地址如下:
http://www.ourdev.cn/bbs/bbs_content_all.jsp?bbs_sn=3608835

这两周赶一个项目,忙的早出晚归。

希望周末能有点时间,到时再继续升级之旅。期间给大家带来的不便,敬请谅解。

出0入0汤圆

发表于 2009-10-20 11:19:26 | 显示全部楼层
期待!

出0入0汤圆

 楼主| 发表于 2009-10-12 08:18:15 | 显示全部楼层
不好意思,最近实在比较忙.尚需几日.

但具体几天我说不好.

出0入0汤圆

发表于 2009-10-11 16:20:29 | 显示全部楼层
wisebaby 明君 你好:

通讯功能(用于连接人机界面)和监控功能(用于调试),什么时候能提供测试?

辛苦你了!谢谢!

出0入0汤圆

发表于 2009-10-9 12:11:14 | 显示全部楼层
好的...谢谢 wisebaby 明君

出0入0汤圆

发表于 2009-10-9 09:34:13 | 显示全部楼层
谢谢,【86楼】 wisebaby 明君.

我先按你说的改一下,因为硬件板子要过几天才做好,到时真正测试才能开始.

出0入0汤圆

 楼主| 发表于 2009-10-9 08:54:48 | 显示全部楼层
【85楼】 Ar135
请参照【84楼】所述尝试修改.

按照【84楼】的思路,今后我也会同大家一起,将这个简易PLC升级到其他STC系MCU上.

出0入0汤圆

发表于 2009-10-9 08:38:09 | 显示全部楼层
同问!
我手上有STC12C5A60S2 和 STC12C5A32S2的单片机,想用她试一下,但无从下手
谢谢!

出0入0汤圆

 楼主| 发表于 2009-10-9 08:33:49 | 显示全部楼层
【82楼】 yy888 许意义
好的.
------------------------------------------------------------------------
【83楼】 DUCH
由于版本升级,请修改如下部分.即可实现原有目的.
1.修改FX1N.H里面的以下三个值:(至于它的ISP code 大小是不是1K.我不清楚.你最好试一下)
#define MCUFLASHSIZE                64*1024                //        64K
#define MCUIAPFLASHSIZE                31*1024                //        31K
#define MCUISPFLASHSIZE                1*1024                //        1K
2.你需要将0x8000地址,即[PLC CODE存储的首地址]更改到[您所使用的单片机的IAP空间的首地址]上.举例说明:
例如,本次设计采用MPC82G516A单片机. 发货时已经初始化为 AP FLASH DATA 32K;IAP FLASH DATA 31K;ISP FLASH DATA 1K.故而PLC的0x8000地址,正好对应单片机的IAP空间的0x8000地址.所以我在程序中是直接使用的0x8000地址.即绝对地址,今后升级版本,会考虑改为相对地址.那样方便大家使用不同类型的MCU.
3.OrderSend3不要动.已经整理好了.

出0入0汤圆

发表于 2009-10-8 23:00:22 | 显示全部楼层
【82楼】 yy888 许工,你好:
【81楼】 wisebaby 明君,你好:

用STC12C5A32S2(28K)的单片机,可写FLASH容量只有28K, 要改那些内容?

修改一下FX1N.H里面的[MCUIAPFLASHSIZE][MCUISPFLASHSIZE]两个宏与FX1N.C里面的 OrderSend3[PLC默认初始存储容量大小],

OrderSend3改什么地方?

出0入0汤圆

 楼主| 发表于 2009-10-8 16:16:01 | 显示全部楼层
接下来,为了编写[监控功能]代码,先将【39楼】 oste 的要求慢慢实现.

5.通讯功能,用于连接人机界面等。
6.通讯OK了,监控功能就小儿科了,呵呵!
7.在线修改功能(我用FX2N时经常提示不能超过128步)

今晚试一试[GT Works 2]软件.

出0入0汤圆

 楼主| 发表于 2009-10-7 14:32:52 | 显示全部楼层
【79楼】 csc_tg
可以.

在FXGPWIN软件环境下,操作顺序如下:
PLC--PLC存储器清除--在弹出的对话框中,选中[PLC存储空间(P)],单击[(O)确定]即可.

出0入0汤圆

发表于 2009-9-29 19:12:26 | 显示全部楼层
非常感谢楼主的教导。在下有问题请教,还请不吝赐教,谢谢!问题如下:能否用单片机清除PLC的程序??

出0入0汤圆

 楼主| 发表于 2009-9-25 15:59:47 | 显示全部楼层
以下内容为三菱 FX1N PLC 下载通讯协议 C Code示范程序 V1.0.4版本  
点击此处下载 ourdev_485313.rar(文件大小:85K) (原文件名:MPC82G516 FX1NPLCCom V1.0.4.rar)

编译后截图如下:

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

当前版本,改进内容如下:
(摘自【58楼】 yy888 许意义)
三菱PLC一些主要的功能如下:   
    1. 传送--->读入(写出) 已完成,传送--->核对 功能.(完整实现) ................ ok!  
    2. 是否可加入  参数设置--->文件寄存器  选项。   
       即需加入 寄存器数据--->读入(写出,核对) 功能.(请问.寄存器的数据量很大.大概32K.存哪?如何处理.下载协议已经在侦听后分析出来了.只要有地方存取.即可实现.) ................ 文件寄存器 实际上是将部分多余的程序寄存器划出,如程序寄存器空间设定4K, 划出2K文件寄存器,则程序寄存器空间只有2K了。  
    3. PLC存储器清除 功能..(仅能实现[清除PLC存储空间].[清除数据元件存储空间和[清除位元件存储空间]本来就没有.^_^]) ................ 只要求实现[清除PLC存储空间]。  
    4. 还有 遥控运行/停止 功能,开始监控 功能. (侦听了很多数据.尚需要理论支撑.希望能够提供一些相关资料)  ................ 可晚一步做。

以下蓝色文字由 yy888 于:2009-09-17,06:32:38 加入。
--------------------------------------------------------------------------------

关于 第2条,你可分下面几步走:  
1. 先在 参数设置--->文件寄存器  选项 中选择设置一小部分文件寄存器。
2. 调通 传送--->读入(写出,核对) 功能(和不划分文件寄存器时有点异同)。  
3. 调通 寄存器数据--->读入(写出,核对) 功能。
--------------------------------------------------------------------------------
修改后:
[文件寄存器(r)]和[注释区(m)]都已经做到PLC当中.
【注意】:仅支持文件寄存器,不支持数据寄存器。数据寄存器的相关内容第三点也有说到,有待于今后升级再考虑。

(摘自【64楼】 oldtom )
重构的几个建议:
0. void FX1NProcessing(void) 这个函数也太庞大了。通信的过程应该是解码,处理,编码的过程,建议还是分开处理可能会好点。
1.检验校验判断单独做一个函数! 检验应该不是CRC校验吧?是和校验吧?  
2. 像类似  else if((UartReceiveBuffer[1]==0x45)\
&(UartReceiveBuffer[2] ==0x31)\
&(UartReceiveBuffer[3] ==0x31))

  我猜测着可能是功能码吧?建议用宏来定义实现.
--------------------------------------------------------------------------------
修改后:
0.FX1NProcessing是否有必要做成几个分立函数,和如何去做,有待于论证.待功能稳定后的版本问世后会调整这个函数模块.
1.是"和校验"已经将CRC字样改为SUM字样.
2.目前这个功能码究竟是何含义尚不明朗.不是所有的功能码我都能说出其含义.所以有待于最后敲定.敲定后就会在头文件中申明.
3.已经添加了"您在例子中对函数前面加入的函数说明".
4.在[IAP.C]中的IAPFlashProgremMode函数中,加入了.在写字节之前先读取字节.将读取的字节与带写入的字节进行判断,判断不相等后,再写入,相等就不必写入重新写入了.
5.去掉了调试函数FX1NDebug.即下载期间不会再有指示灯指示.
6.RAM控制在(xdata)238+(data)17.0  如果需要今后升级可考虑再节约.
实现节约RAM办法:
在IAP的过程中,原来用256个字节的RAM.现在改为用3个字节的RAM.一个整型循环变量i,一个倒数用的临时变量tempdata,再加一页IAP缓存备份空间.用暂存在IAP内的方法使得RAM的占用量大大减小.

=======================================================================================================================
明天去重庆,度假.这几天可给我累坏了.小病了2次.十一之后继续Our PLC 升级之旅.
期望手头有简易PLC的同志.利用十一期间多多练习.寻找问题,共同进步.
预祝大家十一过的愉快.出门见喜.

出0入0汤圆

发表于 2009-9-25 12:00:07 | 显示全部楼层
【73楼】 wisebaby 明君
谢谢,现在可以下载了。文档很规范,辛苦了。

出0入0汤圆

发表于 2009-9-24 23:35:56 | 显示全部楼层
mark! 厉害,学习了

出0入0汤圆

 楼主| 发表于 2009-9-24 14:02:58 | 显示全部楼层
【74楼】 jiancongai

您好,请进入"版主PLC"分论坛,在置顶的帖子当中有

■ 开个帖子,讨论《 DIY“傻娃”PLC 》硬件设计!

傻娃PLC及扩展电路的原理图在这里.

出0入0汤圆

 楼主| 发表于 2009-9-24 10:45:27 | 显示全部楼层
【72楼】 pengshipower
--------------------------
文件都没有坏,都可以下载,只不过都很慢,最近本站是这样的.下载其他资料也是如此.

可能在升级或者维护网站吧.如果是这样过段时间就会好.

出0入0汤圆

发表于 2009-9-24 10:08:00 | 显示全部楼层
lz,是否是文件已经坏了,下载不了。

出0入0汤圆

发表于 2009-9-23 19:02:59 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2009-9-20 16:22:50 | 显示全部楼层
【64楼】 oldtom
-----------------------
非常感谢您的提议.

接受意见.
=======================
另外这两天,爱人病了.陪护点滴了两天.升级程序需周一起(延期2日)编写.

出10入95汤圆

发表于 2009-9-20 11:58:43 | 显示全部楼层
高手还是很多呀!

出0入0汤圆

发表于 2009-9-19 00:29:50 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-9-18 23:21:19 | 显示全部楼层
如此好文,应该留个记号

出0入0汤圆

发表于 2009-9-18 23:17:22 | 显示全部楼层
Mark///////////////

出0入0汤圆

发表于 2009-9-18 22:50:36 | 显示全部楼层
这个要顶

出0入0汤圆

发表于 2009-9-18 22:46:34 | 显示全部楼层
重构的几个建议:
0. void FX1NProcessing(void) 这个函数也太庞大了。通信的过程应该是解码,处理,编码的过程,建议还是分开处理可能会好点。       
1.检验校验判断单独做一个函数! 检验应该不是CRC校验吧?是和校验吧?
2. 像类似         else if((UartReceiveBuffer[1]==0x45)\
                                &(UartReceiveBuffer[2] ==0x31)\
                                &(UartReceiveBuffer[3] ==0x31))

  我猜测着可能是功能码吧?建议用宏来定义实现.

本来想改一下,呵呵,实在是太多了,改了一点点,仅供参考.
                       


点击此处下载 ourdev_482415.rar(文件大小:5K) (原文件名:复件 FX1N.rar)

出0入0汤圆

 楼主| 发表于 2009-9-18 14:03:28 | 显示全部楼层
【61楼】 xiaotian
【62楼】 lenyufh

--------------------------
1.IAP空间(EEPROM)的大小.需要至少31K.要么就在[FX1N.C]和[IAP.C]内.修改存储代码和相应头文件,否则无法实现8000步的程序.
我下载了STC12C5410AD(2K)和STC12C5A32S2(28K)的DS看了一下.这个空间都不够大.如果一定要用.就用STC12C5A32S2(28K),再改一下[main.c]初始化代码.不过我手头没有芯片.
2.将头文件[REG_MPC82G516.H]修改成对应的STC头文件.注意同时修改部分寄存器的名称.

其他都不用动.
-------------------------
由于我手头没有芯片.无法编写DEMO程序.如二位想做.我可以协助二位.所有问题,请跟帖跟进,我会尽快回复.

出0入0汤圆

发表于 2009-9-18 13:15:41 | 显示全部楼层
和LS的同问

出0入0汤圆

发表于 2009-9-18 12:59:36 | 显示全部楼层
LZ,请问

用STC12C5410AD或STC12C5A32S2等STC系列时,程序需作哪部分修改?

只修改头文件可以吗?

还需要修改那些地方?
  
--------------请指教!--------------------------------

出0入0汤圆

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

---------------------
明白了.周末动手.

【59楼】 oldtom

----------------------
请问您指的哪个版本.

多谢您的建议.如果能给的更详细一些,那就更好了.

随着版本的升级,一定尽力改进.

出0入0汤圆

发表于 2009-9-16 22:26:38 | 显示全部楼层
中肯的建议:
代码组织的不是很好,尤其是在FX1N.C里面,建议不要在一个函数里面把所有事情干完,每个的功能由独立的函数去做,这样方便今后功能的扩展,另外,建议有些常量多用宏定义吧,方便阅读。

不太了解这个开源活动的软件设计思想,而且对3菱PLC不熟悉,加上对所选用的MCU也不熟悉,所以程序没有敢乱改,只是有些地方觉得再调整优化下可能会更好点儿。

出0入0汤圆

 楼主| 发表于 2009-9-16 16:54:45 | 显示全部楼层
【56楼】 yy888 许意义
许工您好,我【47楼】的发言,如下问题有待于解决.
-----------------------------------------------
三菱PLC一些主要的功能如下:  
    1. 传送--->读入(写出) 已完成,传送--->核对 功能.(完整实现)
    2. 是否可加入  参数设置--->文件寄存器  选项。  
       即需加入 寄存器数据--->读入(写出,核对) 功能.(请问.寄存器的数据量很大.大概32K.存哪?如何处理.下载协议已经在侦听后分析出来了.只要有地方存取.即可实现.)
    3. PLC存储器清除 功能..(仅能实现[清除PLC存储空间].[清除数据元件存储空间和[清除位元件存储空间]本来就没有.^_^])
    4. 还有 遥控运行/停止 功能,开始监控 功能. (侦听了很多数据.尚需要理论支撑.希望能够提供一些相关资料)
------------------------------------------------
如果您有时间,帮忙分析一下.我也会利用业余时间继续学习相关资料.为Our PLC 增光添彩.

出0入0汤圆

 楼主| 发表于 2009-9-16 09:16:59 | 显示全部楼层
【53楼】 kingtiger
STC的是否有必要改,请许工定夺.

出0入0汤圆

发表于 2009-9-15 17:25:03 | 显示全部楼层
顶一下,做个记号

出0入0汤圆

发表于 2009-9-15 14:42:12 | 显示全部楼层
狂顶啊狂顶
学习,希望能改个STC的出来

出0入0汤圆

发表于 2009-9-15 11:02:52 | 显示全部楼层

出0入0汤圆

发表于 2009-9-15 10:44:35 | 显示全部楼层
这个要顶!学习

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-10 11:17

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

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