You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
8.6 KiB
85 lines
8.6 KiB
20130510:
|
|
1、服务端的数据库连接统一初始化,在CommonClassLib.AppSettings.cs定义一次并且初始化一次;
|
|
线程WcfControlMonitorLib.CParsePLCData.cs和SocketsTCPIP.CClientTCPIP.cs查询还是使用类内部声明和初始化的数据库连接实例
|
|
2、使用OPC.UA代替OPC.DA,服务端的OPCClient替换为UA协议的项目即可;客户端的wcfControlMonitorClient项目,删除CCommonOPCClient.cs,引用UA协议OPCClient即可。
|
|
3、在没有客户端登陆到服务端的时候,有报警在服务端界面增加显示
|
|
4、t_base_PLCAsk表新增加字段:向管理IO_CONTROL_APPLY表插数据时:库房F_WareHouse对应WAREHOUSE_CODE,申请类型F_ManageAskkind对应CONTROL_APPLY_TYPE
|
|
20130620:修正CDisassembleTask.cs的多个出库任务获取服务端变慢的bug;
|
|
20130704:
|
|
1、多叉关联任务的逻辑预约锁的修正,在\WcfControlMonitorLib\CControl.cs的GetFirstDeviceIFLocked函数增加关联任务编号>0的判断;
|
|
2、取货空和送货重复的自动处理的多叉关联的修正在\WcfControlMonitorLib\CGetState.cs的ActionError函数增加关联任务编号>0的判断;
|
|
3、发送任务之前的多叉关联的配叉,取任务距离原点最小距离时,只考虑列值,不再考虑层坐标。在\Model\CGeneralFunction.cs的函数GetMinZeroDistanceTask(int[] mtasks , Model.MDevice devinfo, int devOrder,out int mintask ,out double minDist)
|
|
|
|
20130709:对条码扫描入库申请任务或者条码比对任务,增加在发送任务之前条码比对,不正确拒绝发送。获取任务时,不要清空t_base_PLCAsk表记录的条码;在发送提前检测时对条码申请站台增加条码比对,t_base_PLCAsk表站台所记录的条码与任务一直符合发送条件,否则执行检测未通过提示“条码不正确”
|
|
|
|
20130817:增加客户端显示每层楼PLC的连接状态;断网恢复的数据再订阅处理(在【PLC初始化】里实现)
|
|
20140109:堆垛机取货时检查此站台是否被此堆垛机任务预约;保留AGV、RGV、堆垛机接驳口的输送机的条码;关于条码申请的改进;
|
|
20140218:调整给管理系统上报条码时断网或者数据提交异常,只在黑匣子记录扫描条码,不在本地数据库存储,在异常恢复后点击【系统初始化】-【PLC初始化】重新申请;上报成功后在本地存储条码;并且在客户端界面上显示读到码和已经上报的条码;
|
|
20140309:修改堆垛机取货输送机判断管理任务号和预约任务号是否一致
|
|
20140423:CControl类的AheadDetectOK函数的【#region 双叉堆垛机的取货任务在此判断是否关联双叉、验证双叉任务是否为双叉极限货位】程序段两处ccf.ChangeEndCellCode倒叉更换货位以后需要增加return false;如果不返回false,还会使用原来的坐标继续发送
|
|
|
|
20140514:OPCClient\CCommonOPCClient.cs 的DisConnectOPCServer增加: _IfConnectOPCServer = false;张博在山东电力发现此问题张博在山东电力发现此问题
|
|
如果调度记录叠盘机已叠箱的条码,需要在叠箱机下面的辊道输送机完成时,判断条码至叠盘机的任务的先后顺序
|
|
20140810:张宇修正客户端的timerFlash_Tick事件的try之前增加this.SuspendLayout(); finally块中增加this.ResumeLayout(); 优化客户端每次更改都刷新,改为整体刷新一次
|
|
20140824:
|
|
1、修改客户端和服务端的心跳检测方式,修改客户端的配置文件app.config中的<netTcpBinding>项下的receiveTimeout="23:59:59",减少客户端和服务端的交互;
|
|
timer1 的interval改为3600000
|
|
2、客户端增加接收服务端广播的【获取任务和打开命令开关】的函数public void SendOrderMessage(Model.MonitorInfo mi);
|
|
public IAsyncResult BeginSendOrderMessage(Model.MonitorInfo mi, AsyncCallback callBack, object state);public void EndSendOrderMessage(IAsyncResult ar);
|
|
服务端的IControlMonitor.cs类的interface IClient增加契约的接口void SendOrderMessage( Model.MonitorInfo mi);
|
|
IAsyncResult BeginSendOrderMessage(Model.MonitorInfo mi, AsyncCallback callBack, object state); void EndSendOrderMessage(IAsyncResult ar);
|
|
服务端的FrmHost.cs类的timer1_Tick函数的Model.MonitorInfo mi;修改为FrmHost类级变量
|
|
SendMessageToClient函数修改如下:
|
|
if (strmessage == "巡检客户端")
|
|
{
|
|
cl.BeginSendOrderMessage(mi, new AsyncCallback(SendOrderMessageCallback), mi);
|
|
}
|
|
else
|
|
{
|
|
cl.BeginSendMessage(strmessage, new AsyncCallback(sendMessageCallback), strmessage);
|
|
|
|
}
|
|
3、XP操作系统和WIN7的NameSpaceIndex代码区别:OPCClient.CCommonOPCClient.cs的ConnectOPCServer和CreateSubscriptionGroup
|
|
20141110:
|
|
1、win7以后版本的64位操作系统与32位操作系统对datatype的要求,OPCClient.CCommonOPCClient.cs的SyncWriteAllItemValue向PLC写数据时必须指定具体数据类型,增加对写入后返回值数组的成功标记的判断
|
|
2、建立读PLC的订阅时MonitoringMode的改变,OPCClient.CCommonOPCClient.cs的不再使用Sampling:
|
|
修改为monitoredItem.MonitoringMode = MonitoringMode.Reporting;//richard.liu20141110
|
|
3、ClientAPI.cs的AddSubscription函数innerSubscription.MaxNotificationsPerPublish = 1000;//每次订阅返回,订阅组最大数的限制richard.liu20141110
|
|
|
|
20141118:
|
|
1、win7以后版本的64位操作系统与32位操作系统对datatype的要求,OPCClient.CCommonOPCClient.cs的SyncWriteAllItemValue向PLC写数据时必须指定具体数据类型,修正误把sValue当做item
|
|
20141201:
|
|
张磊在廊坊波森发现的问题:
|
|
1、Model\CGeneralFunction.cs的GetDoubleForkMonitorInfo函数的关于引用类型字符数组的修正;
|
|
2、WcfControlMonitorLib\CCommonFunction.cs的SendOrderSuccess函数 接货输送机设备被停用时,可能会被堆垛机放货完成把F_LockedState改为0,应该增加F_LockedState<>0的判断
|
|
3、WcfControlMonitorLib\CControl.cs的AheadDetectOK函数,设备空闲检查 ,应该增加设备是否被停用
|
|
4、WcfControlMonitorLib\SControlMonitor.cs的BuildHandTask函数,下达手工指令时,只验证了货位,没验证巷道
|
|
赵宇发现:在有970或者980报警时,删除任务最后一个设备指令索引无法给管理报告970或者980,误报为900
|
|
5、WcfControlMonitorLib\CGetState.cs类的ActionComplete函数的else if (ClearZero == Model.CGeneralFunction.TASKDELETE) 最好放在if条件的最下面
|
|
20150103:
|
|
张磊增加通过修改订阅的监控模式,进行断网恢复:
|
|
1、客户端程序:timerFlash_Tick函数,通过计数器timersum,1分钟刷新订阅一次;OPCClient.CCommonOPCClient.RefreshMonitoringMode();
|
|
2、服务端程序:WcfControlMonitorHost\FrmHost.cs类的timer1_Tick函数,通过计数器timerefesh,1分钟刷新订阅一次;CStaticClass.WcfControl.RefreshMonitoringMode();
|
|
WcfControlMonitorLib\IControlMonitor.cs接口增加操作契约[OperationContract] bool RefreshMonitoringMode()
|
|
WcfControlMonitorLib\SControlMonitor.cs类增加契约实现函数public bool RefreshMonitoringMode()
|
|
|
|
3、OPCClient项目:
|
|
OPCClient\ClientSubscription.cs类增加全局变量List<MonitoredItem> itemsrefresh记录每个监控项;
|
|
OPCClient\ClientSubscription.cs类的AddDataMonitoredItem函数添加itemsrefresh的记录;
|
|
OPCClient\ClientSubscription.cs类增加函数public void RemoveAllMonitoredItems(),删除itemsrefresh内的所有监控项
|
|
OPCClient\ClientSubscription.cs类增加函数public bool RefreshMonitoringMode(),通过设置订阅的监控模式,刷新订阅
|
|
OPCClient\CCommonOPCClient.cs类增加函数public static bool RefreshMonitoringMode()通过设置订阅的监控模式,刷新订阅
|
|
4、WcfControlMonitorLib\SControlMonitor.cs的函数DealWithDeviceState里的 普通扫描单箱的条码申请\机器人码垛的托盘条码时的PLC扫到残码变量incompleteBarcode的初始化
|
|
5、WcfControlMonitorLib\SControlMonitor.cs的函数CCommon_UpdateDB增加PLCCommonUpdateDB != null的判断
|
|
20150204:
|
|
增加发送和响应事件订阅时,只要通讯故障3次就不在发送任务,并且提示:影响OPCClient\CCommonOPCClient.cs类的函数SyncWriteAllItemValue,OnDataChange,SyncReadAllItemValue
|
|
20151120:
|
|
1、取消客户端和服务端的断网恢复功能:注释掉客户端程序:timerFlash_Tick函数,OPCClient.CCommonOPCClient.RefreshMonitoringMode();
|
|
注释掉服务端程序:WcfControlMonitorHost\FrmHost.cs类的timer1_Tick函数,CStaticClass.WcfControl.RefreshMonitoringMode();
|
|
2、按照张磊的做法增加SocketTCPIP通讯的硬件故障(拔掉AGV控制台网线)导致通讯中断,但是调度系统不知道的问题。设置缩短周期性检测的时间。在SocketsTCPIP\CClientTCPIP.cs的InitClientTCPIP函数增加clientSocket.IOControl(IOControlCode.KeepAliveValues, GetSocketIOControl(), null);
|
|
3、自动读取32位和64位系统的"S7:"命名空间的索引和ConnectOPCServer时ProgID改为包含检测,不再是相等检测:影响 OPCClient\CCommonOPCClient.cs的ConnectOPCServer函数、CreateSubscriptionGroup函数、SyncReadAllItemValue函数、SyncWriteAllItemValue函数
|
|
4、按照张博的做法调度系统支持oracle数据库特殊语法的修改:影响 WcfControlMonitorLib\CCommonFunction.cs的GetOldDevcieFromStackCorr函数;WcfControlMonitorLib\CControl.cs的StartOrder函数、IFExitTopPriDeviceIdxTaskWait函数、GetAGVFromConveyorDoubleForkGetGoodManageTask函数、InsertStackMutexOrder函数;WcfControlMonitorLib\CDisassembleTask.cs的GetOutDoubleForkTask函数、WcfControlMonitorLib\CObtainTask.cs的GetManagerTask函数;WcfControlMonitorLib\CStaticClass.cs增加调度系统数据库工厂的初始化设置 CStaticClass.DBFactory;WcfControlMonitorLib\SControlMonitor.cs的BarcodeComplete和DealWithDeviceState函数
|
|
5、在辽宁电力增加按照出库流量控制表T_Base_TaskCount的记录获取出库任务,移库和入库类型全部获取,影响WcfControlMonitorLib\CObtainTask.cs的GetManagerTask函数
|
|
6、服务端只处理有任务交互的设备对应的设备状态DB2数据区(有DB1的设备、条码扫描器、十字路口输送机、堆垛机放货站台、码垛或叠箱完成信号、托盘垛申请出库信号等)。在表T_Base_Device新增加字段f_controldevice='1'代表在服务器端处理;f_controldevice='0'仅在客户端显示状态。影响:WcfControlMonitorLib\SControlMonitor.cs的DealWithDeviceState函数
|
|
|
|
|