登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:求助一个S7-300的小程序,哪位大师愿意分享一下

点击:437 回复:26

求助一个S7-300的小程序,想法是计数后,计数得到一个结果后要跟一个数成整数的倍数时输出一个Q点,不是整数倍数不输出
23-12-21 20:46
思路:将计数结果存到S,MOD(求余)某个整数A,得到的结果存到B,判断B=0是否成立,若成立,则输出Q点
23-12-21 21:05
//定义变量:INT 类型,ii_c,ii_temp,vi_i
//2位数的处理
IF ii_c >0 and ii_c<=99 then
vi_i:=10;
end_if;
CASE vi_i OF
10:
ii_temp:=(ii_c-(ii_c/10)*10);
END_CASE
if ii_temp=0 then
ob_q:=1;
ELSE
ob_q:=0;
END_IF
逻辑很简单。就是取余数,余数是不是0,我这个是汇川的EASY,方便模拟,遗憾没玩过300
23-12-21 22:32
如果没有取余指令
可以这样玩
vi_temp:=ii_c-(ii_c/10)*10
ii_c 如果是87
带入公式 vi_temp:=87-(87/10)*10
87-80:=7
位数更多的自己折腾吧。
23-12-21 22:35
是那个思路但像不准,现场编程软件版本V5.5 的只有双整数 MOD DI的这个指令。取余数比较0 是取双整数比较还是单整数
23-12-22 06:35
感谢回复,初学者,这个公式看不懂,
23-12-22 06:37
小学数学学过吧
你要求87的余数怎么求?
余数目测是7
但是要有公式把;
反推
1,87-80=7
2,80=(87/10)*10
以上
最后修改:2023/12/22 8:00:42
23-12-22 08:00

引用 雷志明 在 2023/12/22 6:35:59 发言【内容省略】

你的计数能到多大? 太大你就双整了.
如果你没有取余指令,还有一个办法就是, 用一个辅助的数, 开始跟着计数同步,当到需要比较的数时, 输出q, 然后它清零, 继续这样. 这个肯定是计数速度不高能反应过来的. 否则你可能取不到正好.
大概代码, 假设计数是累加, 放在MD100, 辅助数MD104, 整比较的在MD200. 输出Q10.0.
初始化--MD100=0, MD104=0, MD200=6, Q10.0=0. MOVE
MD100=MD100+1, ADD
MD104=MD104+1
|---[双整比较= MD104,MD200]-------(Q10.0)-
|                                |
|                                 ------[MD104=0]
23-12-22 09:47
程序里面别人做了计数存储在MW10 里面,计数数值过万了,我当时的思路用别人的MW10 除法取余数的方式,数据不知道怎么回事除法只能MD 余数也是MD 比较我就用了双整数比较,不准。我只是在里面添加一段小程序出来,给外面一个脉冲信号,
23-12-22 11:59
计数值等于设定的整数时、输出Q,将计数复位,重新计数,如此循环!搞那么复杂干什么!
23-12-22 12:19

上一页下一页

工控新闻

更多新闻资讯