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

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

  [复制链接]

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入9汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出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-10-31 17:02:21 | 显示全部楼层
和146楼同问.

出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-11-12 11:22:12 | 显示全部楼层
学习ing。。。

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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




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


出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出50入135汤圆

发表于 2024-7-6 18:10:00 | 显示全部楼层
我在使用GX-work2测试时,查询版本后GX-work2发了一条数据为:02 30 30 45 43 41 30 32 03 38 45,有哪位大佬知道应该回复什么不?

出50入135汤圆

发表于 2024-7-6 18:13:10 | 显示全部楼层
通信过程的数据流为以下数据,不知道怎么回复02 30 30 45 43 41 30 32 03 38 45.论坛里面找了好久都没找这个的应答数据.
PC:05
MCU:06
PC:02 30 30 45 30 32 30 32 03 36 43
MCU:02 36 32 36 36 03 44 37
PC:05
MCU:06
PC:02 30 30 45 43 41 30 32 03 38 45
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-11 01:05

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

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