老师给我的毕业设计:题目《基于PLC的远程抄表系统软件设计》
目标和要求 : 设计基于 PLC 的远程自动抄表系统,从带有通信接口的仪表中读取参数。以通讯协议为基础,以网络为传输介质,以 PLC 为采集和控制模块,从而实现数据的采集和传输。
这是怎么个远程抄法?
我的想法是:利用PLC采集脉冲电表的脉冲,比如电表脉冲常数是1600imp/kwh,那我就用计数器计数,我设定计数器C计满16个脉冲就往寄存器D中加1,就这样计电表的度数,然后通过PLC的通讯模块把寄存器的数据传给上位机,这里我选用组态王软件做上位机接收软件。
现在关键是:
1. 我不明白怎么把寄存器的数据传给上位机,寄存器是2进制数,传给组态王后,组态王里接受到的是多少进制的?组态王又怎么显示这些表数?
2. 远程抄表,怎么个远程法?我们把PLC放到现场吗?PLC直接接电表?然后再通过以太网把PLC的数据远程传给上位机?
3. 控制电路我倒是明白,组态王里设个变量和PLC关联,这个变量一动作再根据PLC的程序就能驱动控制外部继电器线圈,从而实现控制用户通断电。。
4. 其实我不太懂脉冲电表原理,能给我解释下吗?
有了这些思路然后我就写了个PLC程序,结果发现就是2页写完了,那我们学校要求写50页啊,我怎么扩充啊?
下面是我写的程序。原先我写的是抄电表和水表的,x0是电表的脉冲输入,x1是水表脉冲输入,x2是组态控制输入,我写的就是就这么短,求师傅们给指点,这样写远远不够页数啊,我不想再睡不着觉了!!!
脉冲采集的我就不说了,给你说说走通信的吧,首先你要给你们老师说现在市面上的电表很多,所以就存在了电表有不同的协议,现在假设你使用的是MODBUS协议的,那么你就考虑你有几块表,多少块表连接一个PLC的通信端口。或是用串口服务器将串口转为以太网,再进PLC。然后你要自己开发串口通信程序来读取电表的数据,现在的电表当说电度就有有功,无功的区分,你要读取什么数据,其次电表读取的数据是直接接入式的还是互感器接入式的,如果是互感器接入式的需要乘以变比才是实际数据。实际数据可以存放在一个存储空间内,然后提供给上位机显示,上位机可以通过OPC或者专用驱动来读取数据。按照这个思路搞吧,搞完后你就可以步入社会了
1、如果上位机用组态王,那么下位机用哪家的PLC?组态王与PLC之间是有驱动的,驱动建立好了之后,就可以在驱动的基础上建立PLC设备,然后在组态王里建立相应的数据词典(数据库),至于你说的寄存器是2进制的,这个是可以进行转换成十进制、十六进制的。PLC中有专门的转换指令。
2、一般来说,远程抄表系统都是通过智能电表的通讯接口来进行数据传输。比如物理接口是RS485,协议为MODBUS RTU。那么只要定义好每一个电表的地址(1-n),定义好每个电表所要传输的数据长度及格式,然后PLC按轮询方式去挨个访问每个电表,将所要的数据取到PLC中特定的寄存器存储起来就可以了。你需要做的就是知道电表用的什么接口,什么协议,了解协议格式,了解PLC是否支持这种通讯格式。然后根据需要进行编程。
3、建议可以下载一个组态王的用户手册学习一下。