公告
动态
分类: 自控电子预览模式: 普通 | 列表

Modbus遐(瞎)想续篇——通用Modbus方案

Modbus遐(瞎)想中,构想了一个通用方案,但一直没有动力实现。最近有个项目只能用通讯做,我很讨厌每做一个项目都要从头来,所以尽量考虑比较通用的方法,福至心灵,在RTU主站库2.1基础上稍加点代码,很简单的实现了一个方案。
 
本方案可以:
1、对不同的工程不需要特别编写通讯代码
2、从站设置好通讯参数后,其它参数可以自动设置(特别是对支持广播、写多字功能码16的从站,参数设置非常方便)
3、不需要修改程序,可临时读到从站任意参数

查看更多...

Tags: S7200 Modbus 通用

分类:自控电子 | 固定链接 | 评论: 2 | 引用: 0 | 查看次数: 1272

S7-200 Modbus RTU 主站库 V2.1

相对上一版的更新:
1、初始化时可选择通讯口,更换端口不必先删除POU再添加新库子程序
2、每端口支持两种通讯控制方式,可以简化调试过程
3、字符间超时时间由固定值改为初始化化时参数给定
4、数据处理与收发完全分离,对于小项目可以不必调用MBUS_MSG
5、支持外部帧(见改善Modbus通讯效率),外部帧与参数调用方式无缝整合
6、外部帧额外支持功能码 22/23(位屏蔽/同时读写多寄存器) 
另外为 ASCII 传输模式准备了 3 个子程序,用于 LRC 计算、ASCII 和 RTU 帧格式互转。

查看更多...

Tags: S7-200 Modbus 485 自由口 通讯

分类:自控电子 | 固定链接 | 评论: 1 | 引用: 0 | 查看次数: 3703

停止对“S7-200仿真软件”有关问题的解答

S7-200第三方仿真软件发展较慢,无法跟上200PLC的功能进展,能仿真的指令比较少,仿真软件可用性不强了,另因时间关系,不再对关于仿真软件问题的邮件作回复了。其实大多问题都可以 常见问题 问题中找到答案,请不要再发关于此软件的邮件了。
问得最多的一个问题是登录密码,6596 在界面上已经写得很清楚了,每月还是会收到十几封询问密码的邮件,实在是难以想象。既然有用此软件的需求,起码也是个准开发者了,总该自己用点脑筋吧?
 

Tags: S7-200 仿真

分类:自控电子 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2344

平均值滤波之鬼斧神工算法(附代码)

十种经典软件滤波算法中,可以看到很多算法都是平均值滤波算法变种,事实上最常用的也还是平均值滤波算法。但传统的平均值滤波算法很占内存,每次运算都要求累加和,再求平均值,导致运算效率不高。
今天介绍一种超简洁超高效的平均滤波算法,此算法是以前搞单片机时一老师所创(单片机上的内存简直是寸土寸金),仅仅用三个变量,就完成了平均值滤波的计算。刚开始看到这个算法是只觉得很佩服,后来用了各种各样的算法后,才感到此算法简直到了鬼斧神工的地步(别以为看完后觉得太简单没啥大不了的,正是因为太简单才突出了它的了不起,最开始能想到将一个复杂的算法简化到无法再简的地步非一般功力所能做到的)。 
在该基础上,我们再演变出一种带死区和限幅控制的队列平均值实用算法。

查看更多...

Tags: 滤波 平滑 防抖

分类:自控电子 | 固定链接 | 评论: 1 | 引用: 0 | 查看次数: 7392

十种经典的软件滤波方法[转]

搞控制的都会用到的常用滤波算法基础,敬请期待本站即将发布的超级简洁高效的鬼斧神工算法。 
 
1、限幅滤波法(又称程序判断滤波法)
   A、方法:
    根据经验判断,确定两次采样允许的最大偏差值(设为A)
    每次检测到新值时判断:
    如果本次值与上次值之差<=A,则本次值有效
    如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值
  B、优点:
    能有效克服因偶然因素引起的脉冲干扰
  C、缺点
    无法抑制周期性的干扰
    平滑度差

查看更多...

Tags: 滤波 平滑 防抖

分类:自控电子 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2045

简单可靠的电压-电流变换电路

本分类名曰自控电子,但自工作从单片机转PLC后,实际很上很少涉及电子方面的东西了,有点对不起这个栏目。
 
客户设备上的一台电空变换器退役,客户自购的型号错误,将电压型的买成了电流型的,该器件采购周期较长,客户单位生产时间较紧,所以想到了这个电路,将电压控制信号转换为电流信号。此电路是以前一搞硬件特牛的师兄设计的,曾在多个项目中使用,稳定可靠。书生曾用 Saber 对此电路进行动态仿真,转换曲线十分平滑,线性度非常好。电路元件少,易采购,线路简洁,具有较高的使用价值。

查看更多...

Tags: 变换 电路 Saber 仿真

分类:自控电子 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3698

Modbus遐(瞎)想——被自己吓了一跳

如何让不会写通讯程序的人也能用 ModBus 通讯?
脑子里不知怎么突然冒出这个想法,将自己都吓了一跳。随即又激动起来,虽然有点大胆,但不是说思想有多远就能走多远么,考虑了一下,还是有很大的可行性的。
 
一、按 改善Modbus通讯效率 中的说明编写一个数据无关的通讯库
二、设置一段缓存,用于存储自定义报文
三、建一个表管理每个报文的首地址(缓存第一字节指明报文的长度)
四、用一个子程来处理表中的每一段报文,将这个子程序也放到库中
五、建一个表+缓存来管理通讯发送与接收的数据
六、在人机界面上设计编辑器,用来填写报文、报文管理表
七、用户程序中只需要一条命令 Call 程序,通讯部分完成
八、将要发送的数据MOV到缓存,从缓存MOV返回数据完成数据交换
 
做这个库工作量不小,但却是一劳永逸的事情。使用者不需要懂得编写通讯程序,只要了解Modbus协议,在人机界面上填下数据,程序中调用一条子程序即可。
 

Tags: Modbus 通讯

分类:自控电子 | 固定链接 | 评论: 3 | 引用: 0 | 查看次数: 1225

别陷入思维定式(S7-200另类定时)

S7-200 自带的系统定时器多达 256 个,在解决一些普通的定时需求时确实很方便,但它不是万能的。特别是在这个问题中,定时的任务数是可变的,不确定的,且随机发生,用系统定时器就会很烦琐。因系统定时器不支持间接寻址,每启动一个新的定时器,就必须有一条显式的定时器语句调用,在我们不知道确切的定时任务时,只能启用最大可能的定时数,这样会产生很多仅定时器号不同的“相同”代码。而且,当定时任务数超出系统定时器的个数时,系统定时器无法满足需求。
 
其实这个问题本身很简单,用系统定时器也可以达到目的。关键是采用什么样的算法和结构,以使代码量尽可能的少。
自控的要义在于“偷懒”,能够满足精度要求时,用尽可能简洁的代码达到相同目的,且尽可能保持良好的可扩展性。

查看更多...

Tags: S7-200 定时

分类:自控电子 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1252

改善 Modbus 通讯效率

本文阅读基础:熟知 Modbus 协议(知识一知识二),熟知一种通讯平台的通讯原理与编程方式
 
为了达到应用上直观方便,大多数 Modbus 库都会对协议进行一定程度的包装,将库应用者从底层的数据组织,缓冲区准备中解脱出来。
但使用上的方便并不代表效率上的最佳,包装是便于在做不同的项目时简化开发过程,但对于任一个项目,通讯读写任务数一旦确定,库程序中的协议包装部分就始终在重复同样的工作。熟练的开发用户可以手工组织数据,提高通讯库的效率。

查看更多...

Tags: Modbus 通讯 485

分类:自控电子 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4171

基于原始协议的 Modbus RTU 主站库

本文阅读基础:了解 Modbus 协议(知识一知识二),了解 S7-200 自由口通讯编程。
 
S7-200 可以通过自由口通讯方式支持 Modbus 协议,在 Micro 'n Power 中也提供了一个适用于 S7-200 的免费库。但库太过于 S7-200 化了,为了简化在 S7-200 上的应用,该库对 Modbus 协议进行了过多的包装。比如人为对地址进行分类,通过地址前缀将功能码和寄存器地址合二为一,对于熟知 S7-200 且多用于 S7-200 之间通讯的开发者来说,使用是很方便的,但对于那些对 Modbus 一知半解的人来说,就容易产生迷惑性。

查看更多...

Tags: Modbus S7-200 自建库

分类:自控电子 | 固定链接 | 评论: 1 | 引用: 0 | 查看次数: 5307
搜索本站 搜索网络