单片机问题请教! 点击:566 | 回复:18



關羽

    
发表于:2012-01-01 13:20:54
楼主
求助帖30分-已结帖

如下三菱PLC梯形图如何正确转换成C语言?



楼主最近还看过



Piston

  • 精华:0帖
  • 求助:1帖
  • 帖子:35帖 | 13107回
  • 年度积分:0
  • 历史总积分:40073
  • 注册:2009年5月22日
发表于:2012-01-01 16:21:18
1楼
是要把PLC的梯形图转换成单片机的C语言控制吗?

zhxl198808

  • 精华:7帖
  • 求助:14帖
  • 帖子:79帖 | 3915回
  • 年度积分:0
  • 历史总积分:22219
  • 注册:2008年9月06日
发表于:2012-01-01 18:24:44
2楼
兄弟有邮箱吗,我发一点实例给你,你看了这个你就知道怎么转了

關羽

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:748帖 | 5676回
  • 年度积分:53
  • 历史总积分:88538
  • 注册:2004年5月28日
发表于:2012-01-01 22:31:13
3楼
引用 zhxl198808 的回复内容:兄弟有邮箱吗,我发一点实例给你,你看了这个你就知道怎么转了

我的邮箱 149034219@qq.com

水中鱼

  • 精华:43帖
  • 求助:4帖
  • 帖子:324帖 | 3802回
  • 年度积分:0
  • 历史总积分:15038
  • 注册:2011年11月10日
发表于:2012-01-01 23:37:50
4楼

我说一下自己的思路:

1.用单片机的某一个按键来控制X0,即对按键编程,可采用条件语句 if ()  {} else 实现;

2.使用单片机的定时器实现10秒钟的定时,也就是定时器中断

3.定时时间到,可以置某个LED灯点亮(相当于Y0=1)。

關羽

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:748帖 | 5676回
  • 年度积分:53
  • 历史总积分:88538
  • 注册:2004年5月28日
发表于:2012-01-02 09:48:13
5楼
引用 水中鱼 的回复内容:我说一下自己的思路:1.用单片机的某一个按键来控制X0,即对按键编程,可采用条件语句 if ()  {} else 实现;2.使用单片机的定时器实现10秒钟的定时,也就是定时器中断;3.定时时间到,可以置某个LED灯点亮(相当于Y0=1)。

关键 定时器中断有限,如果逻辑程序里有多个这样的程序 怎么办?

水中鱼

  • 精华:43帖
  • 求助:4帖
  • 帖子:324帖 | 3802回
  • 年度积分:0
  • 历史总积分:15038
  • 注册:2011年11月10日
发表于:2012-01-02 18:52:53
6楼
回复内容:
对:關羽关于引用 水中鱼 的回复内容:我说一下自己的思路:1.用单片机的某一个按键来控制X0,即对按键编程,可采用条件语句 if ()  {} else 实现;2.使用单片机的定时器实现10秒钟的定时,也就是定时器中断;3.定时时间到,可以置某个LED灯点亮(相当于Y0=1)。关键 定时器中断有限,如果逻辑程序里有多个这样的程序 怎么办?内容的回复:

如果逻辑程序里有多个这样的程序,设置个定时函数,那么可以多次调用。

關羽

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:748帖 | 5676回
  • 年度积分:53
  • 历史总积分:88538
  • 注册:2004年5月28日
发表于:2012-01-02 23:02:56
7楼
引用 水中鱼 的回复内容:回复内容:对:關羽关于引用 水中鱼 的回复内容:我说一下自己的思路:1.用单片机的某一个按键来控制X0,即对按键编程,可采用条件语句 if ()  {} else 实现;2.使用单片机的定时器实现10秒钟的定时,也就是定时器中断;3.定时时间到,可以置某个LED灯点亮(相当于Y0=1)。关键 定时器中断有限,如果逻辑程序里有多个这样的程序 怎么办?内容的回复:如果逻辑程序里有多个这样的程序,设置个定时函数,那么可以多次调用。

你没有深刻理解这个梯形图的含义:如果X1为1,定时器开始定时,但是一旦X1为0定时器就立刻复位了,这个不是在C语言里单纯调用一个定时函数就能解决的哦!

bhdxzgp

  • 精华:8帖
  • 求助:10帖
  • 帖子:197帖 | 5451回
  • 年度积分:0
  • 历史总积分:21613
  • 注册:2006年4月16日
发表于:2012-01-03 20:32:07
8楼

用单片机来做就太简单了啊,

会点C语言都会的啊!

重庆变频器

  • 精华:4帖
  • 求助:0帖
  • 帖子:19帖 | 72回
  • 年度积分:0
  • 历史总积分:1165
  • 注册:2004年2月24日
发表于:2012-01-04 04:46:49
9楼

很简单,下面的程序不一定正确,了解意思就行了,没有使用定时器中断,定时精度不是很高,仅用于楼主此例

其中delay01是一个0.1秒的循环定时程序

int    n;     //定义变量n,用于对定时器计数

WHILE(1)        //循环

{

    if(x000)        //如输入触点为高则执行下面括号中的程序

    {

        delay01;   //如果输入触点为高就调用0.1秒延时程序

        n++;      //变量加1,表示已延时了 n 个0.1秒

        if(n>100)Y000=1;  //n大于100表示已延时了100个0.1秒,执行输出触点置位

        if(n>100)n=100;    //使计数值一直保持在100

    }

    else    //如输入X000触点释放,则执行下面括号中程序

    {

        Y000=0;//释放输出触点

        n=0;     //清计数变量

    }

}

 

關羽

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:748帖 | 5676回
  • 年度积分:53
  • 历史总积分:88538
  • 注册:2004年5月28日
发表于:2012-01-04 13:41:48
10楼
引用 重庆变频器 的回复内容:很简单,下面的程序不一定正确,了解意思就行了,没有使用定时器中断,定时精度不是很高,仅用于楼主此例其中delay01是一个0.1秒的循环定时程序int    n;     //定义变量n,用于对定时器计数WHILE(1)        //循环{    if(x000)        //如输入触点为高则执行下面括号中的程序     {        delay01;   //如果输入触点为高就调用0.1秒延时程序        n++;      //变量加1,表示已延时了 n 个0.1秒        if(n>100)Y000=1;  //n大于100表示已延时了100个0.1秒,执行输出触点置位        if(n>100)n=100;    //使计数值一直保持在100    }    else    //如输入X000触点释放,则执行下面括号中程序    {        Y000=0;//释放输出触点        n=0;     //清计数变量    }} 

有那么点意思,但是还不是我想要的!要求精确!!

關羽

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:748帖 | 5676回
  • 年度积分:53
  • 历史总积分:88538
  • 注册:2004年5月28日
发表于:2012-01-05 10:08:43
11楼
还请高手回答!谢谢了!!!请赐教!

建议删除该帖

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 580回
  • 年度积分:0
  • 历史总积分:2884
  • 注册:2010年9月08日
发表于:2012-01-05 16:07:11
12楼

保守估计,这个程序绝对比那个MODBUS RTU协议简单上百倍

關羽

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:748帖 | 5676回
  • 年度积分:53
  • 历史总积分:88538
  • 注册:2004年5月28日
发表于:2012-01-06 12:56:08
13楼
引用 建议删除该帖 的回复内容:保守估计,这个程序绝对比那个MODBUS RTU协议简单上百倍

尺有所短,寸有所长!

建议删除该帖

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 580回
  • 年度积分:0
  • 历史总积分:2884
  • 注册:2010年9月08日
发表于:2012-01-06 13:24:07
14楼

我就觉得那个MODBUS RTU要难很多,当初我就抓耳挠腮的弄了好几天才通讯上,我想第一次做那协议的人都觉得不会很简单,半天应该没人能搞定吧,从这个论坛的另一个关于MODBUS RTU的帖子来看楼主显然在这方面很精通,楼主甚至在一个帖子里询问怎样检测一个输入信号的沿,我觉得楼主除了是逗大家玩再没其他目的

建议删除该帖

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 580回
  • 年度积分:0
  • 历史总积分:2884
  • 注册:2010年9月08日
发表于:2012-01-06 13:27:58
15楼

这样来回帖子好像不大好,不厚道哈。楼主还是去www.ourdev.cn,或者bbs.21ic.com吧,那里讨论单片机的人多

關羽

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:748帖 | 5676回
  • 年度积分:53
  • 历史总积分:88538
  • 注册:2004年5月28日
发表于:2012-01-07 20:28:54
16楼
引用 建议删除该帖 的回复内容:我就觉得那个MODBUS RTU要难很多,当初我就抓耳挠腮的弄了好几天才通讯上,我想第一次做那协议的人都觉得不会很简单,半天应该没人能搞定吧,从这个论坛的另一个关于MODBUS RTU的帖子来看楼主显然在这方面很精通,楼主甚至在一个帖子里询问怎样检测一个输入信号的沿,我觉得楼主除了是逗大家玩再没其他目的

唉!我真不懂这个啊!

關羽

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:748帖 | 5676回
  • 年度积分:53
  • 历史总积分:88538
  • 注册:2004年5月28日
发表于:2012-01-08 16:13:58
17楼
求高人解答!不胜感谢!望不吝赐教!

關羽

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:748帖 | 5676回
  • 年度积分:53
  • 历史总积分:88538
  • 注册:2004年5月28日
发表于:2012-01-11 11:45:03
18楼
祈请高人解答!不胜感谢!
SSI ļʱ